7 psoilcarbon_input, pcontrol_temp, pcontrol_moist, &
8 psoilcarb, presp_hetero_soil)
55 USE yomhook
,ONLY : lhook, dr_hook
56 USE parkind1
,ONLY : jprb
64 REAL,
INTENT(IN) :: ptstep
66 REAL,
DIMENSION(:),
INTENT(IN) :: psand
69 REAL,
DIMENSION(:,:),
INTENT(IN) :: psoilcarbon_input
71 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcontrol_temp
73 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcontrol_moist
78 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: psoilcarb
83 REAL,
DIMENSION(:),
INTENT(OUT) :: presp_hetero_soil
90 REAL,
DIMENSION(SIZE(PSOILCARB,1),SIZE(PSOILCARB,2),SIZE(PSOILCARB,2)) :: zfrac_carb
92 REAL,
DIMENSION(SIZE(PSOILCARB,1),SIZE(PSOILCARB,2)) :: zfrac_resp
94 REAL,
DIMENSION(SIZE(PSOILCARB,1),SIZE(PSOILCARB,2)) :: zfluxtot
96 REAL,
DIMENSION(SIZE(PSOILCARB,1),SIZE(PSOILCARB,2),SIZE(PSOILCARB,2)) :: zflux
98 REAL,
DIMENSION(SIZE(PSOILCARB,1)) :: zwork
101 INTEGER :: ini, insoilcarb
104 REAL(KIND=JPRB) :: zhook_handle
121 IF (lhook) CALL dr_hook(
'CARBON_SOIL',0,zhook_handle)
123 ini =
SIZE(psoilcarb,1)
124 insoilcarb =
SIZE(psoilcarb,2)
132 zfrac_carb(:,1,1) = 0.0
133 zfrac_carb(:,1,3) = 0.004
134 zfrac_carb(:,1,2) = 1. - ( .85 - .68 * (1.-psand(:)) ) - zfrac_carb(:,1,3)
138 zfrac_carb(:,2,2) = .0
139 zfrac_carb(:,2,1) = .42
140 zfrac_carb(:,2,3) = .03
144 zfrac_carb(:,3,3) = .0
145 zfrac_carb(:,3,1) = .45
146 zfrac_carb(:,3,2) = .0
150 presp_hetero_soil(:) = 0.0
157 psoilcarb(:,:) = psoilcarb(:,:) + psoilcarbon_input(:,:) * zdt
165 zfrac_resp(:,:) = 1. - zfrac_carb(:,:,1) - zfrac_carb(:,:,2) - zfrac_carb(:,:,3)
172 zwork(:)=0.25+0.75*psand(:)
175 zfluxtot(:,1) = ptstep/xtau_soilcarb(1)*psoilcarb(:,1)*pcontrol_moist(:,2)*pcontrol_temp(:,2)*zwork(:)
176 zfluxtot(:,2) = ptstep/xtau_soilcarb(2)*psoilcarb(:,2)*pcontrol_moist(:,2)*pcontrol_temp(:,2)
177 zfluxtot(:,3) = ptstep/xtau_soilcarb(3)*psoilcarb(:,3)*pcontrol_moist(:,2)*pcontrol_temp(:,2)
180 psoilcarb(:,:) = psoilcarb(:,:) - zfluxtot(:,:)
185 zflux(ji,1,jl) = zfrac_carb(ji,1,jl) * zfluxtot(ji,1)
186 zflux(ji,2,jl) = zfrac_carb(ji,2,jl) * zfluxtot(ji,2)
187 zflux(ji,3,jl) = zfrac_carb(ji,3,jl) * zfluxtot(ji,3)
193 presp_hetero_soil(:) = ( zfrac_resp(:,1) * zfluxtot(:,1) + &
194 zfrac_resp(:,2) * zfluxtot(:,2) + &
195 zfrac_resp(:,3) * zfluxtot(:,3) ) / zdt
199 psoilcarb(:,1) = psoilcarb(:,1) + zflux(:,1,1) + zflux(:,2,1) + zflux(:,3,1)
200 psoilcarb(:,2) = psoilcarb(:,2) + zflux(:,1,2) + zflux(:,2,2) + zflux(:,3,2)
201 psoilcarb(:,3) = psoilcarb(:,3) + zflux(:,1,3) + zflux(:,2,3) + zflux(:,3,3)
203 IF (lhook) CALL dr_hook(
'CARBON_SOIL',1,zhook_handle)
subroutine carbon_soil(PTSTEP, PSAND, PSOILCARBON_INPUT, PCONTROL_TEMP, PCONTROL_MOIST, PSOILCARB, PRESP_HETERO_SOIL)