- Timestamp:
- 2011-06-17T14:02:17+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ORCHIDEE_EXT/ORCHIDEE/src_stomate/stomate_season.f90
r135 r257 174 174 ! residence time of green tissue (years) 175 175 REAL(r_std), DIMENSION(npts,nvm) :: green_age 176 177 ! ds 04/03 Old formulation for herbivores178 !!$ ! weights179 !!$ REAL(r_std), DIMENSION(npts) :: weighttot180 !!$ ! natural long-term leaf NPP ( gC/m**2/year)181 !!$ REAL(r_std), DIMENSION(npts) :: nlflong_nat182 !!$ ! residence time of green tissue (years)183 !!$ REAL(r_std), DIMENSION(npts) :: green_age184 185 176 ! herbivore consumption (gC/m**2/day) 186 177 REAL(r_std), DIMENSION(npts) :: consumption 178 ! fraction of each gridcell occupied by natural vegetation 179 REAL(r_std), DIMENSION(npts) :: fracnat 187 180 188 181 ! ========================================================================= … … 225 218 226 219 ! 1.2.1.1 "monthly" 227 !MM PAS PARALLELISE!!220 !MM PAS PARALLELISE!! 228 221 IF ( ABS( SUM( moiavail_month(:,2:nvm) ) ) .LT. min_stomate ) THEN 229 222 … … 277 270 278 271 ! 1.2.3 "monthly" soil temperatures 279 !MM PAS PARALLELISE!!272 !MM PAS PARALLELISE!! 280 273 IF ( ABS( SUM( tsoil_month(:,:) ) ) .LT. min_stomate ) THEN 281 274 … … 464 457 ! detect a beginning of the growing season by declaring it dormant 465 458 ! 466 !NVMODIF459 !NVMODIF 467 460 DO j = 2,nvm 468 461 WHERE ( ( gpp_week(:,j) .LT. min_gpp_allowed ) .OR. & … … 470 463 ( ( when_growthinit(:,j) .GT. 2.*one_year ) .AND. & 471 464 ( biomass(:,j,icarbres) .GT. biomass(:,j,ileaf)*4. ) ) ) 472 ! WHERE ( ( gpp_week(:,j) .EQ. zero ) .OR. &473 ! ( gpp_week(:,j) .LT. gppfrac_dormance * maxgppweek_lastyear(:,j) ) .OR. &474 ! ( ( when_growthinit(:,j) .GT. 2.*one_year ) .AND. &475 ! ( biomass(:,j,icarbres) .GT. biomass(:,j,ileaf)*4. ) ) )476 465 ! WHERE ( ( gpp_week(:,j) .EQ. zero ) .OR. & 466 ! ( gpp_week(:,j) .LT. gppfrac_dormance * maxgppweek_lastyear(:,j) ) .OR. & 467 ! ( ( when_growthinit(:,j) .GT. 2.*one_year ) .AND. & 468 ! ( biomass(:,j,icarbres) .GT. biomass(:,j,ileaf)*4. ) ) ) 469 477 470 time_lowgpp(:,j) = time_lowgpp(:,j) + dt 478 471 … … 816 809 ! 817 810 811 IF(control%ok_dgvm ) THEN 812 813 fracnat(:) = un 814 DO j = 2,nvm 815 IF ( .NOT. natural(j) ) THEN 816 fracnat(:) = fracnat(:) - veget_max(:,j) 817 ENDIF 818 ENDDO 819 820 ENDIF 821 818 822 IF ( control%ok_stomate ) THEN 819 820 DO j = 2,nvm 821 WHERE ( biomass(:,j,ileaf) .GT. lm_thisyearmax(:,j) ) 822 lm_thisyearmax(:,j) = biomass(:,j,ileaf) 823 ENDWHERE 824 ENDDO 825 823 IF(control%ok_dgvm ) THEN 824 DO j=2,nvm 825 826 IF ( natural(j) .AND. control%ok_dgvm ) THEN 827 828 WHERE ( fracnat(:) .GT. min_stomate .AND. biomass(:,j,ileaf).GT. lm_lastyearmax(:,j)*0.75 ) 829 maxfpc_lastyear(:,j) = ( maxfpc_lastyear(:,j) * ( one_year/leaflife_tab(j)- dt ) + & 830 veget(:,j) / fracnat(:) * dt ) / (one_year/leaflife_tab(j)) 831 ENDWHERE 832 maxfpc_thisyear(:,j) = maxfpc_lastyear(:,j) ! just to initialise value 833 834 ENDIF 835 836 !NV : correct initialization 837 !!$ WHERE(biomass(:,j,ileaf).GT. lm_lastyearmax(:,j)*0.75) 838 !!$ lm_lastyearmax(:,j) = ( lm_lastyearmax(:,j) * ( one_year/leaflife_tab(j)- dt ) + & 839 !!$ biomass(:,j,ileaf) * dt ) / (one_year/leaflife_tab(j)) 840 !!$ ENDWHERE 841 !!$ lm_thisyearmax(:,j)=lm_lastyearmax(:,j) ! just to initialise value 842 WHERE (lm_thisyearmax(:,j) .GT. min_stomate) 843 WHERE(biomass(:,j,ileaf).GT. lm_thisyearmax(:,j)*0.75) 844 lm_thisyearmax(:,j) = ( lm_thisyearmax(:,j) * ( one_year/leaflife_tab(j)- dt ) + & 845 biomass(:,j,ileaf) * dt ) / (one_year/leaflife_tab(j)) 846 ENDWHERE 847 ELSEWHERE 848 lm_thisyearmax(:,j) =biomass(:,j,ileaf) 849 ENDWHERE 850 851 ENDDO 852 853 ELSE 854 855 DO j = 2,nvm 856 WHERE ( biomass(:,j,ileaf) .GT. lm_thisyearmax(:,j) ) 857 lm_thisyearmax(:,j) = biomass(:,j,ileaf) 858 ENDWHERE 859 ENDDO 860 861 ENDIF 826 862 ELSE 827 863 … … 851 887 ! 21.1 replace old values 852 888 ! 853 !NVMODIF854 maxmoiavail_lastyear(:,:) = (maxmoiavail_lastyear(:,:)*(tau_climatology-1)+ maxmoiavail_thisyear(:,:))/tau_climatology855 minmoiavail_lastyear(:,:) = (minmoiavail_lastyear(:,:)*(tau_climatology-1)+ minmoiavail_thisyear(:,:))/tau_climatology856 maxgppweek_lastyear(:,:) =( maxgppweek_lastyear(:,:)*(tau_climatology-1)+ maxgppweek_thisyear(:,:))/tau_climatology857 ! maxmoiavail_lastyear(:,:) = maxmoiavail_thisyear(:,:)858 ! minmoiavail_lastyear(:,:) = minmoiavail_thisyear(:,:)859 ! maxgppweek_lastyear(:,:) = maxgppweek_thisyear(:,:)860 889 !NVMODIF 890 maxmoiavail_lastyear(:,:) = (maxmoiavail_lastyear(:,:)*(tau_climatology-1)+ maxmoiavail_thisyear(:,:))/tau_climatology 891 minmoiavail_lastyear(:,:) = (minmoiavail_lastyear(:,:)*(tau_climatology-1)+ minmoiavail_thisyear(:,:))/tau_climatology 892 maxgppweek_lastyear(:,:) =( maxgppweek_lastyear(:,:)*(tau_climatology-1)+ maxgppweek_thisyear(:,:))/tau_climatology 893 ! maxmoiavail_lastyear(:,:) = maxmoiavail_thisyear(:,:) 894 ! minmoiavail_lastyear(:,:) = minmoiavail_thisyear(:,:) 895 ! maxgppweek_lastyear(:,:) = maxgppweek_thisyear(:,:) 896 861 897 gdd0_lastyear(:) = gdd0_thisyear(:) 862 898 … … 909 945 ! fpc_crit. 910 946 911 ! calculate the sum of maxfpc_lastyear912 sumfpc_nat(:) = zero913 DO j = 2,nvm914 sumfpc_nat(:) = sumfpc_nat(:) + maxfpc_lastyear(:,j)915 ENDDO916 917 ! scale so that the new sum is fpc_crit918 DO j = 2,nvm919 WHERE ( sumfpc_nat(:) .GT. fpc_crit )920 maxfpc_lastyear(:,j) = maxfpc_lastyear(:,j) * (fpc_crit/sumfpc_nat(:))921 ENDWHERE922 ENDDO947 !!$ ! calculate the sum of maxfpc_lastyear 948 !!$ sumfpc_nat(:) = zero 949 !!$ DO j = 2,nvm 950 !!$ sumfpc_nat(:) = sumfpc_nat(:) + maxfpc_lastyear(:,j) 951 !!$ ENDDO 952 !!$ 953 !!$ ! scale so that the new sum is fpc_crit 954 !!$ DO j = 2,nvm 955 !!$ WHERE ( sumfpc_nat(:) .GT. fpc_crit ) 956 !!$ maxfpc_lastyear(:,j) = maxfpc_lastyear(:,j) * (fpc_crit/sumfpc_nat(:)) 957 !!$ ENDWHERE 958 !!$ ENDDO 923 959 924 960 ENDIF ! EndOfYear … … 941 977 !!$ nlflong_nat, green_age are pft-dependants 942 978 943 !!$ nlflong_nat(:) = zero944 !!$ weighttot(:) = zero945 !!$ green_age(:) = zero946 !!$ !947 !!$ DO j = 2,nvm948 !!$ !949 !!$ IF ( natural(j) ) THEN950 !!$ !951 !!$ weighttot(:) = weighttot(:) + lm_lastyearmax(:,j)952 !!$ nlflong_nat(:) = nlflong_nat(:) + npp_longterm(:,j) * leaf_frac_hvc953 !!$ !954 !!$ IF ( pheno_model(j) .EQ. 'none' ) THEN955 !!$ green_age(:) = green_age(:) + green_age_ever * lm_lastyearmax(:,j)956 !!$ ELSE957 !!$ green_age(:) = green_age(:) + green_age_dec * lm_lastyearmax(:,j)958 !!$ ENDIF959 !!$ !960 !!$ ENDIF961 !!$ !962 !!$ ENDDO963 !!$ !964 !!$ WHERE ( weighttot(:) .GT. zero )965 !!$ green_age(:) = green_age(:) / weighttot(:)966 !!$ ELSEWHERE967 !!$ green_age(:) = 1.968 !!$ ENDWHERE969 !!$970 !!$ !971 !!$ ! 22.2 McNaughton et al. give herbivore consumption as a function of annual leaf NPP.972 !!$ ! The annual leaf NPP can give us an idea about the edible biomass:973 !!$ !974 !!$975 !!$ DO j = 2,nvm976 !!$ !977 !!$ IF ( natural(j) ) THEN978 !!$ !979 !!$ WHERE ( nlflong_nat(:) .GT. zero )980 !!$ consumption(:) = hvc1 * nlflong_nat(:) ** hvc2981 !!$ herbivores(:,j) = one_year * green_age(:) * nlflong_nat(:) / consumption(:)982 !!$ ELSEWHERE983 !!$ herbivores(:,j) = 100000.984 !!$ ENDWHERE985 !!$ !986 !!$ ELSE987 !!$ !988 !!$ herbivores(:,j) = 100000.989 !!$ !990 !!$ ENDIF991 !!$ !992 !!$ ENDDO993 !!$ herbivores(:,ibare_sechiba) = zero994 995 979 nlflong_nat(:,:) = zero 996 980 weighttot(:,:) = zero
Note: See TracChangeset
for help on using the changeset viewer.