1
1
subroutine grow
2
-
2
+
3
3
!! ~ ~ ~ PURPOSE ~ ~ ~
4
4
!! this subroutine adjusts plant biomass, leaf area index, and canopy height
5
5
!! taking into account the effect of water, temperature and nutrient stresses
@@ -67,7 +67,7 @@ subroutine grow
67
67
!! phuacc(:) |none |fraction of plant heat units accumulated
68
68
!! plt_et(:) |mm H2O |actual ET simulated during life of plant
69
69
!! plt_pet(:) |mm H2O |potential ET simulated during life of plant
70
- !! strsn(:) |none |fraction of potential plant growth achieved
70
+ !! strsn(:) |none |fraction of potential plant growth achieved
71
71
!! |on the day where the reduction is caused by
72
72
!! |nitrogen stress
73
73
!! strsp(:) |none |fraction of potential plant growth achieved
@@ -80,7 +80,7 @@ subroutine grow
80
80
!! |on the day where the reduction is caused by
81
81
!! |water stress
82
82
!! t_base(:) |deg C |minimum temperature for plant growth
83
- !! tmpav(:) |deg C |average air temperature on current day in
83
+ !! tmpav(:) |deg C |average air temperature on current day in
84
84
!! |HRU
85
85
!! vpd |kPa |vapor pressure deficit
86
86
!! wac21(:) |none |1st shape parameter for radiation use
@@ -173,27 +173,27 @@ subroutine grow
173
173
delg = (tmpav(j) - t_base(idp)) / phu_plt(j)
174
174
end if
175
175
if (delg < 0.) delg = 0.
176
- phuacc(j) = phuacc(j) + delg
176
+ phuacc(j) = phuacc(j) + delg
177
177
178
178
179
179
!! if plant hasn' t reached maturity
180
180
if (phuacc(j) <= 1 .) then
181
181
182
- !! compute temperature stress - strstmp(j)
182
+ !! compute temperature stress - strstmp(j)
183
183
call tstr
184
184
185
185
!! calculate optimal biomass
186
186
187
187
!! calculate photosynthetically active radiation
188
188
par = 0 .
189
- par = .5 * hru_ra(j) * (1 . - Exp (- ext_coef(idp) *
189
+ par = .5 * hru_ra(j) * (1 . - Exp (- ext_coef(idp) *
190
190
& (laiday(j) + .05 )))
191
191
192
192
!! adjust radiation- use efficiency for CO2
193
193
beadj = 0 .
194
194
if (co2(hru_sub(j)) > 330 .) then
195
- beadj = 100 . * co2(hru_sub(j)) / (co2(hru_sub(j)) +
196
- & Exp (wac21(idp) - co2(hru_sub(j)) * wac22(idp)))
195
+ beadj = 100 . * co2(hru_sub(j)) / (co2(hru_sub(j)) +
196
+ & Exp (wac21(idp) - co2(hru_sub(j)) * wac22(idp)))
197
197
else
198
198
beadj = bio_e(idp)
199
199
end if
@@ -207,8 +207,6 @@ subroutine grow
207
207
beadj = Max (beadj, 0.27 * bio_e(idp))
208
208
end if
209
209
210
- beadj = bio_e(idp)
211
-
212
210
bioday = beadj * par
213
211
if (bioday < 0 .) bioday = 0 .
214
212
@@ -239,11 +237,11 @@ subroutine grow
239
237
if (reg > 1 .) reg = 1 .
240
238
241
239
if (bio_targ(j) > 1.e-2 ) then
242
- bioday = bioday * (bio_targ(j) - bio_ms(j)) /
240
+ bioday = bioday * (bio_targ(j) - bio_ms(j)) /
243
241
& bio_targ(j)
244
242
reg = 1 .
245
243
end if
246
-
244
+
247
245
bio_ms(j) = bio_ms(j) + bioday * reg
248
246
if (idc(idp) == 7 .and. igrotree(j) == 0 ) then
249
247
if (mat_yrs(idp) > 0 ) then
@@ -263,14 +261,14 @@ subroutine grow
263
261
NPPC_d(j) = NPPC_d(j) + bioday * reg* 0.42
264
262
end if
265
263
!!add by zhang
266
- !!============
267
-
264
+ !!============
265
+
268
266
!! calculate fraction of total biomass that is in the roots
269
267
rwt(j) = rsr1(idp) - (rsr1(idp) - rsr2(idp)) * phuacc(j)
270
268
271
269
f = 0 .
272
270
ff = 0 .
273
- f = phuacc(j) / (phuacc(j) + Exp (leaf1(idp)
271
+ f = phuacc(j) / (phuacc(j) + Exp (leaf1(idp)
274
272
& - leaf2(idp) * phuacc(j)))
275
273
ff = f - laimxfr(j)
276
274
laimxfr(j) = f
@@ -293,35 +291,35 @@ subroutine grow
293
291
end if
294
292
295
293
if (laiday(j) > laimax) laiday(j) = laimax
296
- deltalai = ff * laimax * (1.0 - Exp (5.0 * (laiday(j) -
294
+ deltalai = ff * laimax * (1.0 - Exp (5.0 * (laiday(j) -
297
295
& laimax))) * Sqrt (reg)
298
296
laiday(j) = laiday(j) + deltalai
299
297
if (laiday(j) > laimax) laiday(j) = laimax
300
298
olai(j) = laiday(j)
301
299
if (laiday(j) > lai_yrmx(j)) lai_yrmx(j) = laiday(j)
302
300
else
303
- laiday(j) = olai(j) * (1 . - phuacc(j)) /
301
+ laiday(j) = olai(j) * (1 . - phuacc(j)) /
304
302
& (1 . - dlai(idp))
305
303
end if
306
304
if (laiday(j) < alai_min(idplt(j))) then !Sue White dormancy
307
305
laiday(j) = alai_min(idplt(j))
308
306
end if
309
-
307
+
310
308
!! calculate plant ET values
311
309
if (phuacc(j) > 0.5 .and. phuacc(j) < dlai(idp)) then
312
310
plt_et(j) = plt_et(j) + ep_day + es_day
313
311
plt_pet(j) = plt_pet(j) + pet_day
314
312
end if
315
313
316
- hvstiadj(j) = hvsti(idp) * 100 . * phuacc(j)
314
+ hvstiadj(j) = hvsti(idp) * 100 . * phuacc(j)
317
315
& / (100 . * phuacc(j) + Exp (11.1 - 10 . * phuacc(j)))
318
316
319
317
!! added per JGA for Srini by gsm 9 / 8 / 2011
320
318
strsw_sum(j) = strsw_sum(j) + (1 . - strsw(j))
321
319
strstmp_sum(j) = strstmp_sum(j) + (1 . - strstmp(j))
322
320
strsn_sum(j) = strsn_sum(j) + (1 . - strsn(j))
323
- strsp_sum(j) = strsp_sum(j) + (1 . - strsp(j))
324
- strsa_sum(j) = strsa_sum(j) + (1 . - strsa(j))
321
+ strsp_sum(j) = strsp_sum(j) + (1 . - strsp(j))
322
+ strsa_sum(j) = strsa_sum(j) + (1 . - strsa(j))
325
323
326
324
!! summary calculations
327
325
if (curyr > nyskip) then
@@ -334,12 +332,12 @@ subroutine grow
334
332
else !! Modified by Cibin to include DLAI>1
335
333
if (dlai(idp) > 1 .) then
336
334
if (phuacc(j) > dlai(idp)) then
337
- laiday(j) = olai(j) * (1 . - (phuacc(j) - dlai(idp)) / & !! Modified by Cibin to include DLAI>1
335
+ laiday(j) = olai(j) * (1 . - (phuacc(j) - dlai(idp)) / !! Modified by Cibin to include DLAI>1
338
336
& (1.2 - dlai(idp))) !! Modified by Cibin to include DLAI>1
339
337
endif
340
338
endif
341
339
if (laiday(j) < 0 .) laiday(j) = 0 . !! Modified by Cibin to include DLAI>1
342
340
endif
343
341
344
342
return
345
- end
343
+ end
0 commit comments