6 SUBROUTINE carbon_litter (PTSTEP, PTURNOVER, PLITTER, PLIGNIN_STRUC, &
7 pcontrol_temp, pcontrol_moist, &
8 presp_hetero_litter, psoilcarbon_input)
51 USE modd_co2v_par, ONLY : xlc, xtau_litter, xfrac_litter, xfrac_soilcarb
54 USE yomhook
,ONLY : lhook, dr_hook
55 USE parkind1
,ONLY : jprb
62 REAL,
INTENT(IN) :: ptstep
65 REAL,
DIMENSION(:,:),
INTENT(IN) :: pturnover
67 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcontrol_temp
69 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcontrol_moist
74 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: plitter
76 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: plignin_struc
81 REAL,
DIMENSION(:),
INTENT(OUT) :: presp_hetero_litter
84 REAL,
DIMENSION(:,:),
INTENT(OUT) :: psoilcarbon_input
95 REAL,
DIMENSION(SIZE(PLITTER,1),SIZE(PLITTER,3)) :: zold_struc
97 REAL,
DIMENSION(SIZE(PLITTER,1),SIZE(PLITTER,2),SIZE(PLITTER,3)) :: zlitter_inc
99 REAL,
DIMENSION(SIZE(PLITTER,1),SIZE(PLITTER,3)) :: zlignin_struc_inc
101 INTEGER :: inlitter,inlittlevs
105 REAL(KIND=JPRB) :: zhook_handle
131 IF (lhook) CALL dr_hook(
'CARBON_LITTER',0,zhook_handle)
133 ini =
SIZE(plitter,1)
134 inlitter =
SIZE(plitter,2)
135 inlittlevs =
SIZE(plitter,3)
139 presp_hetero_litter(:) = 0.0
140 psoilcarbon_input(:,:) = 0.0
149 zold_struc(:,:) = plitter(:,2,:)
153 zlitter_inc(:,:,:) = 0.0
154 zlignin_struc_inc(:,:) = 0.0
159 zlitter_inc(:,1,1) = ( xfrac_litter(1,1) * pturnover(:,1) + &
160 xfrac_litter(2,1) * pturnover(:,2) + &
161 xfrac_litter(3,1) * pturnover(:,3) + &
162 xfrac_litter(5,1) * pturnover(:,5) ) * ptstep
164 zlitter_inc(:,1,2) = ( xfrac_litter(4,1) * pturnover(:,4) + &
165 xfrac_litter(6,1) * pturnover(:,6) ) * ptstep
167 zlitter_inc(:,2,1) = ( xfrac_litter(1,2) * pturnover(:,1) + &
168 xfrac_litter(2,2) * pturnover(:,2) + &
169 xfrac_litter(3,2) * pturnover(:,3) + &
170 xfrac_litter(5,2) * pturnover(:,5) ) * ptstep
172 zlitter_inc(:,2,2) = ( xfrac_litter(4,2) * pturnover(:,4) + &
173 xfrac_litter(6,2) * pturnover(:,6) ) * ptstep
177 zlignin_struc_inc(:,1) = zlignin_struc_inc(:,1) + ( xlc(1)*pturnover(:,1) + xlc(2)*pturnover(:,2) + &
178 xlc(3)*pturnover(:,3) + xlc(5)*pturnover(:,5) ) * ptstep
179 zlignin_struc_inc(:,2) = zlignin_struc_inc(:,2) + ( xlc(4)*pturnover(:,4) + xlc(6)*pturnover(:,6) ) * ptstep
183 plitter(:,:,:) = plitter(:,:,:) + zlitter_inc(:,:,:)
188 zlignin_struc_inc(:,:) = min( zlignin_struc_inc(:,:), zlitter_inc(:,2,:) )
193 WHERE(plitter(:,2,:)>0.0)
194 plignin_struc(:,:) = (plignin_struc(:,:)*zold_struc(:,:)+zlignin_struc_inc(:,:))/plitter(:,2,:)
206 zfd=ptstep/xtau_litter(2)*pcontrol_temp(ji,jl)*pcontrol_moist(ji,jl)*exp(-3.0*plignin_struc(ji,jl))
208 zqd=plitter(ji,2,jl)*zfd
210 plitter(ji,2,jl)=plitter(ji,2,jl)-zqd
214 psoilcarbon_input(ji,1)=psoilcarbon_input(ji,1)+xfrac_soilcarb(2,1,jl)*zqd*(1.0-plignin_struc(ji,jl))/zdt
216 presp_hetero_litter(ji)=presp_hetero_litter(ji)+(1.0-xfrac_soilcarb(2,1,jl))*zqd*(1.0-plignin_struc(ji,jl))/zdt
220 psoilcarbon_input(ji,2)=psoilcarbon_input(ji,2)+xfrac_soilcarb(2,2,jl)*zqd*plignin_struc(ji,jl)/zdt
222 presp_hetero_litter(ji)=presp_hetero_litter(ji)+(1.0-xfrac_soilcarb(2,2,jl))*zqd*plignin_struc(ji,jl)/zdt
228 zfd = ptstep/xtau_litter(1)*pcontrol_temp(ji,jl)*pcontrol_moist(ji,jl)
230 zqd = plitter(ji,1,jl)*zfd
232 plitter(ji,1,jl)=plitter(ji,1,jl)-zqd
236 psoilcarbon_input(ji,1)=psoilcarbon_input(ji,1)+xfrac_soilcarb(1,1,jl)*zqd/zdt
238 presp_hetero_litter(ji) = presp_hetero_litter(ji)+(1.0-xfrac_soilcarb(1,1,jl))*zqd/zdt
243 IF (lhook) CALL dr_hook(
'CARBON_LITTER',1,zhook_handle)
subroutine carbon_litter(PTSTEP, PTURNOVER, PLITTER, PLIGNIN_STRUC, PCONTROL_TEMP, PCONTROL_MOIST, PRESP_HETERO_LITTER, PSOILCARBON_INPUT)