6 SUBROUTINE carbon_evol(IO, KK, PK, PEK, DEK, PTSTEP, PRHOA, PRESP_BIOMASS_INST )
56 USE modd_co2v_par
, ONLY : xmc, xmco2, xpcco2
60 USE modi_control_moist_func
61 USE modi_control_temp_func
62 USE modi_carbon_litter
80 REAL,
INTENT(IN) :: PTSTEP
81 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
82 REAL,
DIMENSION(:,:),
INTENT(IN) :: PRESP_BIOMASS_INST
86 REAL,
PARAMETER :: ZCOEF1 = 4.4e-8
87 REAL,
PARAMETER :: ZCOEF2 = 13.5
88 REAL,
PARAMETER :: ZCOEF3 = 5.4
89 REAL,
PARAMETER :: ZCOEF4 = 0.1
90 REAL,
PARAMETER :: ZCOEF5 = 25.0
92 REAL,
PARAMETER :: ZDTOP = 0.1
93 REAL,
PARAMETER :: ZDSUB = 1.0
95 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZRESP_SOIL_TOT
96 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZRESP_AUTO_ABOVE
97 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZRESP_HETERO
100 REAL,
DIMENSION(SIZE(PEK%XSOILCARB,1),SIZE(PEK%XSOILCARB,2)) :: ZSOILCARBON_INPUT
104 REAL,
DIMENSION(SIZE(PEK%XSOILCARB,1)) :: ZRESP_HETERO_DAY_LITTER
106 REAL,
DIMENSION(SIZE(PEK%XSOILCARB,1)) :: ZRESP_HETERO_DAY_SOIL
109 REAL,
DIMENSION(SIZE(PEK%XLIGNIN_STRUC,1),SIZE(PEK%XLIGNIN_STRUC,2)) :: ZCONTROL_MOIST, &
114 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZTG_TOP
115 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZTG_SUB
116 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZSAND_SUB
118 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZMOIST_TOP
119 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZMOIST_SUB
120 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZSAT_TOP
121 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZSAT_SUB
123 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZDG_TOP
124 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZDG_SUB
126 REAL,
DIMENSION(SIZE(PEK%XTG,1),SIZE(PEK%XTG,2)) :: ZWGHT_TOP
127 REAL,
DIMENSION(SIZE(PEK%XTG,1),SIZE(PEK%XTG,2)) :: ZWGHT_SUB
129 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZWORK
131 REAL :: ZMOISTL, ZSATL, ZLOG2
136 INTEGER :: INI, INL, JI, JL, IDEKTH, INBIOMASS
138 REAL(KIND=JPRB) :: ZHOOK_HANDLE
152 inbiomass=
SIZE(presp_biomass_inst,2)
154 zresp_soil_tot(:) =
xundef 155 zresp_auto_above(:) =
xundef 157 zsoilcarbon_input(:,:) =
xundef 158 zresp_hetero_day_litter(:) =
xundef 159 zresp_hetero_day_soil(:) =
xundef 160 zcontrol_moist(:,:) =
xundef 161 zcontrol_temp(:,:) =
xundef 172 IF(io%CISBA/=
'DIF')
THEN 173 ztg_top(:) = pek%XTG(:,1)-
xtt 174 ztg_sub(:) = pek%XTG(:,2)-
xtt 177 idekth=pk%NWG_LAYER(ji)
178 zdg_top(ji)=min(zdtop,pk%XDG(ji,idekth))
179 zdg_sub(ji)=min(zdsub,pk%XDG(ji,idekth))
183 zwght_top(ji,jl)=min(pk%XDZG(ji,jl),max(0.0,zdg_top(ji)-pk%XDG(ji,jl)+pk%XDZG(ji,jl)))
184 zwght_sub(ji,jl)=min(pk%XDZG(ji,jl),max(0.0,zdg_sub(ji)-pk%XDG(ji,jl)+pk%XDZG(ji,jl)))
185 ztg_top(ji)=ztg_top(ji)+(pek%XTG(ji,jl)-
xtt)*zwght_top(ji,jl)/zdg_top(ji)
186 ztg_sub(ji)=ztg_sub(ji)+(pek%XTG(ji,jl)-
xtt)*zwght_sub(ji,jl)/zdg_sub(ji)
195 zresp_auto_above(:)=0.
197 IF (io%CPHOTO==
'NIT')
THEN 200 zresp_auto_above(:) = zresp_auto_above(:) + presp_biomass_inst(:,jnbiomass)
203 ELSE IF (io%CPHOTO==
'NCB')
THEN 206 zresp_auto_above(:) = zresp_auto_above(:) + presp_biomass_inst(:,jnbiomass)
209 ELSE IF (io%CPHOTO==
'AST')
THEN 211 zresp_auto_above(:) = presp_biomass_inst(:,1)
215 DO jnbiomass=1,inbiomass
216 dek%XRESP_AUTO(:) = dek%XRESP_AUTO (:) + presp_biomass_inst(:,jnbiomass)
223 IF (io%CRESPSL ==
'DEF')
THEN 227 IF(io%CISBA/=
'DIF')
THEN 228 zwork(:) = pek%XWG(:,1)
232 zwork(ji)=zwork(ji)+pek%XWG(ji,jl)*zwght_top(ji,jl)/zdg_top(ji)
239 WHERE (pek%XLAI(:) ==
xundef)
240 zresp_soil_tot(:) = 0.0
243 zresp_soil_tot(:) = (zcoef1/prhoa)*(zcoef2+zcoef3*pek%XLAI(:)) * &
244 zwork(:)*exp(zlog2*(zcoef4*(ztg_sub(:)-zcoef5)))
249 dek%XRESP_ECO(:) = zresp_soil_tot(:) + zresp_auto_above(:)
251 ELSE IF (io%CRESPSL ==
'PRM')
THEN 255 IF(io%CISBA/=
'DIF')
THEN 256 zwork(:) = pek%XWG(:,1)
260 zwork(ji)=zwork(ji)+min(1.0,pek%XWG(ji,jl)/kk%XWFC(ji,jl))*zwght_top(ji,jl)/zdg_top(ji)
271 dek%XRESP_ECO(:) = pk%XRE25(:)/prhoa(:) * zwork(:)*exp(zlog2*(zcoef4*(ztg_sub(:)-zcoef5)))
273 ELSE IF (io%CRESPSL ==
'CNT')
THEN 283 IF(io%CISBA/=
'DIF')
THEN 285 zmoist_top(:) = min(1.0,max(0.0,(pek%XWG(:,1)-kk%XWWILT(:,1))/(kk%XWFC (:,1)-kk%XWWILT(:,1))))
286 zsat_top(:) = min(1.0,max(0.0,(pek%XWG(:,1)-kk%XWFC (:,1))/(kk%XWSAT(:,1)-kk%XWFC (:,1))))
287 zmoist_sub(:) = min(1.0,max(0.0,(pek%XWG(:,2)-kk%XWWILT(:,2))/(kk%XWFC (:,2)-kk%XWWILT(:,2))))
288 zsat_sub(:) = min(1.0,max(0.0,(pek%XWG(:,2)-kk%XWFC (:,2))/(kk%XWSAT(:,2)-kk%XWFC (:,2))))
290 zsand_sub(:) = kk%XSAND (:,2)
297 zmoistl=min(1.0,max(0.0,(pek%XWG(ji,jl)-kk%XWWILT(ji,jl))/(kk%XWFC (ji,jl)-kk%XWWILT(ji,jl))))
298 zsatl =min(1.0,max(0.0,(pek%XWG(ji,jl)-kk%XWFC (ji,jl))/(kk%XWSAT(ji,jl)-kk%XWFC (ji,jl))))
300 zmoist_top(ji)=zmoist_top(ji)+zmoistl*zwght_top(ji,jl)/zdg_top(ji)
301 zsat_top(ji)=zsat_top(ji)+zsatl *zwght_top(ji,jl)/zdg_top(ji)
302 zmoist_sub(ji)=zmoist_sub(ji)+zmoistl*zwght_sub(ji,jl)/zdg_sub(ji)
303 zsat_sub(ji)=zsat_sub(ji)+zsatl *zwght_sub(ji,jl)/zdg_sub(ji)
305 zsand_sub(ji)=zsand_sub(ji)+kk%XSAND(ji,jl)*zwght_sub(ji,jl)/zdg_sub(ji)
317 CALL carbon_litter (ptstep, pk%XTURNOVER, pek%XLITTER, pek%XLIGNIN_STRUC, &
318 zcontrol_temp, zcontrol_moist, zresp_hetero_day_litter,zsoilcarbon_input)
320 DO itcspin = 1,io%NSPINS
321 CALL carbon_soil (ptstep, zsand_sub, zsoilcarbon_input, zcontrol_temp,&
322 zcontrol_moist, pek%XSOILCARB, zresp_hetero_day_soil )
327 zresp_hetero(:) = (zresp_hetero_day_litter(:) + zresp_hetero_day_soil(:)) &
328 * (xmco2/xmc) / (1000. * prhoa(:)*
xday)
332 dek%XRESP_ECO(:) = zresp_hetero(:) + dek%XRESP_AUTO(:)
real function, dimension(size(ptemp_in)) control_temp_func(PTEMP_IN)
subroutine carbon_litter(PTSTEP, PTURNOVER, PLITTER, PLIGNIN_STRUC, PCONTROL_TEMP, PCONTROL_MOIST, PRESP_HETERO_LITTER, PSOILCARBON_INPUT)
subroutine carbon_soil(PTSTEP, PSAND, PSOILCARBON_INPUT, PCONTROL_TEMP, PCONTROL_MOIST, PSOILCARB, PRESP_HETERO_SOIL)
subroutine carbon_evol(IO, KK, PK, PEK, DEK, PTSTEP, PRHOA, PRESP_BIOMASS_INST)
real function, dimension(size(pmoist)) control_moist_func(PMOIST, PSAT)