34 alpha_bioCO2, alpha_enh_bioCO2, avkdn, beta_bioCO2, beta_enh_bioCO2, BSoilSurf, & ! input:
35 ConifSurf, DecidSurf, dectime, EmissionsMethod, gfunc, gfunc2, GrassSurf, gsmodel, &
36 id, it, ivConif, ivDecid, ivGrass, LAI_id, LAIMin, LAIMax, min_res_bioCO2, nsurf, &
37 NVegSurf, resp_a, resp_b, sfr_surf, SnowFrac, t2, Temp_C, theta_bioCO2, &
38 Fc_biogen, Fc_photo, Fc_respi)
42 INTEGER,
INTENT(in) :: &
43 EmissionsMethod, id, it, ivConif, ivDecid, ivGrass, ConifSurf, DecidSurf, GrassSurf, BSoilSurf, &
44 nsurf, nvegSurf, gsmodel
46 REAL(KIND(1D0)),
INTENT(in) :: &
54 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(in) :: &
58 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(in) :: &
70 REAL(KIND(1D0)),
INTENT(out) :: &
80 Bellucco2017_Res_surf, &
83 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: &
87 Bellucco2017_Pho_surf, &
92 REAL(KIND(1D0)),
PARAMETER :: &
98 par_umolm2s1 = jtoumolpar*kdntopar*avkdn
99 vegfracsum = sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf)
105 DO iv = ivconif, ivgrass
107 active_veg_fr(iv) = (sfr_surf(iv + 2)*(1 - snowfrac(iv + 2)))*(lai_id(iv)/laimax(iv))
108 active_veg_fr0(iv) = (sfr_surf(iv + 2)*(1 - snowfrac(iv + 2)))*lai_id(iv)
112 IF (emissionsmethod >= 11 .AND. emissionsmethod <= 16)
THEN
115 DO iv = ivconif, ivgrass
116 fc_photo_surf(iv) = -beta_bioco2(iv)*alpha_bioco2(iv)*par_umolm2s1/(alpha_bioco2(iv)*par_umolm2s1 + beta_bioco2(iv))
118 fc_photo = fc_photo + fc_photo_surf(iv)*active_veg_fr(iv)
121 ELSEIF (emissionsmethod >= 21 .AND. emissionsmethod <= 26)
THEN
124 DO iv = ivconif, ivgrass
125 bellucco2017_pho_surf(iv) = -(1/(2*theta_bioco2(iv)) &
126 *(alpha_bioco2(iv)*par_umolm2s1 + beta_bioco2(iv) &
127 - sqrt((alpha_bioco2(iv)*par_umolm2s1 + beta_bioco2(iv))**2 &
128 - 4*alpha_bioco2(iv)*beta_bioco2(iv)*theta_bioco2(iv)*par_umolm2s1)))
131 bellucco2017_pho = bellucco2017_pho + bellucco2017_pho_surf(iv)*active_veg_fr(iv)
133 fc_photo = bellucco2017_pho
135 ELSEIF (emissionsmethod >= 31 .AND. emissionsmethod <= 36)
THEN
140 IF (alpha_bioco2(ivconif) == alpha_bioco2(ivdecid) .AND. alpha_bioco2(ivconif) == alpha_bioco2(ivgrass) .AND. &
141 beta_bioco2(ivconif) == beta_bioco2(ivdecid) .AND. beta_bioco2(ivconif) == beta_bioco2(ivgrass) .AND. &
142 theta_bioco2(ivconif) == theta_bioco2(ivdecid) .AND. theta_bioco2(ivconif) == theta_bioco2(ivgrass))
THEN
145 alpha_bioco2_v2(ivconif) = alpha_bioco2(ivconif) + alpha_enh_bioco2(ivconif)* &
146 (sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf) + sfr_surf(bsoilsurf))
147 beta_bioco2_v2(ivconif) = -beta_bioco2(ivconif) + beta_enh_bioco2(ivconif)* &
148 (sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf) + sfr_surf(bsoilsurf))
151 bellucco2017_pho = -(1/(2*theta_bioco2(ivconif)) &
152 *(alpha_bioco2_v2(ivconif)*par_umolm2s1 &
153 + beta_bioco2_v2(ivconif) &
154 - sqrt((alpha_bioco2_v2(ivconif)*par_umolm2s1 + beta_bioco2_v2(ivconif))**2 - 4* &
155 alpha_bioco2_v2(ivconif)*beta_bioco2_v2(ivconif)*theta_bioco2(ivconif)*par_umolm2s1)))
161 alpha_bioco2_v2(ivconif) = (alpha_bioco2(ivconif)*sfr_surf(conifsurf)/vegfracsum + &
162 alpha_bioco2(ivdecid)*sfr_surf(decidsurf)/vegfracsum &
163 + alpha_bioco2(ivgrass)*sfr_surf(grasssurf)/vegfracsum) &
164 /(alpha_bioco2(ivconif) + alpha_bioco2(ivdecid) + alpha_bioco2(ivgrass))
165 beta_bioco2_v2(ivconif) = (beta_bioco2(ivconif)*sfr_surf(conifsurf)/vegfracsum + &
166 beta_bioco2(ivdecid)*sfr_surf(decidsurf)/vegfracsum &
167 + beta_bioco2(ivgrass)*sfr_surf(grasssurf)/vegfracsum) &
168 /(beta_bioco2(ivconif) + beta_bioco2(ivdecid) + beta_bioco2(ivgrass))
169 theta_bioco2_v2(ivconif) = (theta_bioco2(ivconif)*sfr_surf(conifsurf)/vegfracsum + &
170 theta_bioco2(ivdecid)*sfr_surf(decidsurf)/vegfracsum &
171 + theta_bioco2(ivgrass)*sfr_surf(grasssurf)/vegfracsum) &
172 /(theta_bioco2(ivconif) + theta_bioco2(ivdecid) + theta_bioco2(ivgrass))
175 alpha_bioco2_v2(ivconif) = alpha_bioco2_v2(ivconif) + alpha_enh_bioco2(ivconif)* &
176 (sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf) + sfr_surf(bsoilsurf))
177 beta_bioco2_v2(ivconif) = -beta_bioco2_v2(ivconif) + beta_enh_bioco2(ivconif)* &
178 (sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf) + sfr_surf(bsoilsurf))
181 bellucco2017_pho = -(1/(2*theta_bioco2_v2(ivconif))*( &
182 alpha_bioco2_v2(ivconif)*par_umolm2s1 + beta_bioco2_v2(ivconif) &
183 - sqrt((alpha_bioco2_v2(ivconif)*par_umolm2s1 + beta_bioco2_v2(ivconif))**2 &
184 - 4*alpha_bioco2_v2(ivconif)*beta_bioco2_v2(ivconif)*theta_bioco2_v2(ivconif) &
189 fc_photo = bellucco2017_pho*active_veg_fr(conifsurf - 2) + &
190 bellucco2017_pho*active_veg_fr(decidsurf - 2) + &
191 bellucco2017_pho*active_veg_fr(grasssurf - 2)
193 ELSEIF (emissionsmethod >= 41 .AND. emissionsmethod <= 46)
THEN
196 DO iv = ivconif, ivgrass
197 fc_photo = fc_photo + active_veg_fr0(iv)*beta_bioco2(iv)
200 IF (gsmodel == 1 .OR. gsmodel == 2)
THEN
201 fc_photo = -fc_photo*gfunc
202 ELSEIF (gsmodel == 3 .OR. gsmodel == 4)
THEN
203 fc_photo = -fc_photo*gfunc2
209 bellucco2017_res = 0.0
210 bellucco2017_res_surf = 0.0
211 IF (vegfracsum > 0.01)
THEN
212 DO iv = ivconif, ivgrass
213 IF (sfr_surf(2 + iv) > 0.005)
THEN
214 IF (gsmodel == 1 .OR. gsmodel == 2)
THEN
215 bellucco2017_res_surf = max(min_res_bioco2(iv), resp_a(iv)*exp(resp_b(iv)*temp_c))
216 ELSEIF (gsmodel == 3 .OR. gsmodel == 4)
THEN
217 bellucco2017_res_surf = max(min_res_bioco2(iv), resp_a(iv)*exp(resp_b(iv)*t2))
220 bellucco2017_res = bellucco2017_res + bellucco2017_res_surf*sfr_surf(2 + iv)/vegfracsum
224 fc_respi = bellucco2017_res*(sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf) + sfr_surf(bsoilsurf))
226 fc_biogen = fc_photo + fc_respi
subroutine co2_biogen(alpha_bioco2, alpha_enh_bioco2, avkdn, beta_bioco2, beta_enh_bioco2, bsoilsurf, conifsurf, decidsurf, dectime, emissionsmethod, gfunc, gfunc2, grasssurf, gsmodel, id, it, ivconif, ivdecid, ivgrass, lai_id, laimin, laimax, min_res_bioco2, nsurf, nvegsurf, resp_a, resp_b, sfr_surf, snowfrac, t2, temp_c, theta_bioco2, fc_biogen, fc_photo, fc_respi)