39
40 IMPLICIT NONE
41
42 INTEGER, INTENT(in) :: &
43 emissionsmethod, id, it, ivconif, ivdecid, ivgrass, conifsurf, decidsurf
44 nsurf, nvegsurf, gsmodel
45
46 REAL(KIND(1D0)), INTENT(in) :: &
47 avkdn, &
48 dectime, &
49 gfunc, &
50 gfunc2, &
51 temp_c, &
52 t2
53
54 REAL(KIND(1D0)), DIMENSION(nsurf), INTENT(in) :: &
55 sfr_surf, &
56 snowfrac
57
58 REAL(KIND(1D0)), DIMENSION(nvegsurf), INTENT(in) :: &
59 laimin, laimax, &
60 alpha_bioco2, &
61 beta_bioco2, &
62 theta_bioco2, &
63 alpha_enh_bioco2, &
64 beta_enh_bioco2, &
65 resp_a, &
66 resp_b, &
67 min_res_bioco2, &
68 lai_id
69
70 REAL(KIND(1D0)), INTENT(out) :: &
71 fc_biogen, &
72 fc_respi, fc_photo
73
74 INTEGER :: iv
75
76 REAL(KIND(1D0)) :: &
77 par_umolm2s1, &
78 bellucco2017_pho, &
79 bellucco2017_res, &
80 bellucco2017_res_surf, &
81 vegfracsum
82
83 REAL(KIND(1D0)), DIMENSION(nvegsurf) :: &
84 active_veg_fr, &
85 active_veg_fr0, &
86 fc_photo_surf, &
87 bellucco2017_pho_surf, &
88 alpha_bioco2_v2, &
89 beta_bioco2_v2, &
90 theta_bioco2_v2
91
92 REAL(KIND(1D0)), PARAMETER :: &
93 jtoumolpar = 4.6, &
94 kdntopar = 0.46
95
96
97
98 par_umolm2s1 = jtoumolpar*kdntopar*avkdn
99 vegfracsum = sfr_surf(conifsurf) + sfr_surf(decidsurf) + sfr_surf(grasssurf
100
101
102
103
104
105 DO iv = ivconif, ivgrass
106
107 active_veg_fr(iv) = (sfr_surf(iv + 2)*(1 - snowfrac(iv + 2)))*(lai_id
108 active_veg_fr0(iv) = (sfr_surf(iv + 2)*(1 - snowfrac(iv + 2)))*lai_id
109
110 END DO
111
112 IF (emissionsmethod >= 11 .AND. emissionsmethod <= 16) THEN
113
114 fc_photo = 0
115 DO iv = ivconif, ivgrass
116 fc_photo_surf(iv) = -beta_bioco2(iv)*alpha_bioco2(iv)*par_umolm2s1
117
118 fc_photo = fc_photo + fc_photo_surf(iv)*active_veg_fr(iv)
119 END DO
120
121 ELSEIF (emissionsmethod >= 21 .AND. emissionsmethod <= 26) THEN
122
123 bellucco2017_pho = 0
124 DO iv = ivconif, ivgrass
125 bellucco2017_pho_surf(iv) = -(1/(2*theta_bioco2(iv)) &
126 *(alpha_bioco2(iv)*par_umolm2s1
127 - sqrt((alpha_bioco2(iv)*par_umolm2s1
128 - 4*alpha_bioco2(iv)*beta_bioco2
129
130
131 bellucco2017_pho = bellucco2017_pho + bellucco2017_pho_surf(iv
132 END DO
133 fc_photo = bellucco2017_pho
134
135 ELSEIF (emissionsmethod >= 31 .AND. emissionsmethod <= 36) THEN
136
137
138
139
140 IF (alpha_bioco2(ivconif) == alpha_bioco2(ivdecid) .AND. alpha_bioco2
141 beta_bioco2(ivconif) == beta_bioco2(ivdecid) .AND. beta_bioco2
142 theta_bioco2(ivconif) == theta_bioco2(ivdecid) .AND. theta_bioco2THEN
143
144
145 alpha_bioco2_v2(ivconif) = alpha_bioco2(ivconif) + alpha_enh_bioco2
146 (sfr_surf(conifsurf) + sfr_surf(decidsurf
147 beta_bioco2_v2(ivconif) = -beta_bioco2(ivconif) + beta_enh_bioco2
148 (sfr_surf(conifsurf) + sfr_surf(decidsurf
149
150
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
155 alpha_bioco2_v2(ivconif)*beta_bioco2_v2
156
157 ELSE
158
159
160
161 alpha_bioco2_v2(ivconif) = (alpha_bioco2(ivconif)*sfr_surf(conifsurf
162 alpha_bioco2(ivdecid)*sfr_surf(decidsurf
163 + alpha_bioco2(ivgrass)*sfr_surf
164 /(alpha_bioco2(ivconif) + alpha_bioco2
165 beta_bioco2_v2(ivconif) = (beta_bioco2(ivconif)*sfr_surf(conifsurf
166 beta_bioco2(ivdecid)*sfr_surf(decidsurf
167 + beta_bioco2(ivgrass)*sfr_surf(grasssurf
168 /(beta_bioco2(ivconif) + beta_bioco2
169 theta_bioco2_v2(ivconif) = (theta_bioco2(ivconif)*sfr_surf(conifsurf
170 theta_bioco2(ivdecid)*sfr_surf(decidsurf
171 + theta_bioco2(ivgrass)*sfr_surf
172 /(theta_bioco2(ivconif) + theta_bioco2
173
174
175 alpha_bioco2_v2(ivconif) = alpha_bioco2_v2(ivconif) + alpha_enh_bioco2
176 (sfr_surf(conifsurf) + sfr_surf(decidsurf
177 beta_bioco2_v2(ivconif) = -beta_bioco2_v2(ivconif) + beta_enh_bioco2
178 (sfr_surf(conifsurf) + sfr_surf(decidsurf
179
180
181 bellucco2017_pho = -(1/(2*theta_bioco2_v2(ivconif))*( &
182 alpha_bioco2_v2(ivconif)*par_umolm2s1 +
183 - sqrt((alpha_bioco2_v2(ivconif)*par_umolm2s1
184 - 4*alpha_bioco2_v2(ivconif)*beta_bioco2_v2
185 *par_umolm2s1)))
186
187 END IF
188
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)
192
193 ELSEIF (emissionsmethod >= 41 .AND. emissionsmethod <= 46) THEN
194
195 fc_photo = 0
196 DO iv = ivconif, ivgrass
197 fc_photo = fc_photo + active_veg_fr0(iv)*beta_bioco2(iv)
198 END DO
199
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
204 END IF
205
206 END IF
207
208
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
216 ELSEIF (gsmodel == 3 .OR. gsmodel == 4) THEN
217 bellucco2017_res_surf = max(min_res_bioco2(iv), resp_a
218 END IF
219
220 bellucco2017_res = bellucco2017_res + bellucco2017_res_surf
221 END IF
222 END DO
223 END IF
224 fc_respi = bellucco2017_res*(sfr_surf(conifsurf) + sfr_surf(decidsurf
225
226 fc_biogen = fc_photo + fc_respi
227
228 RETURN
229