@@ -319,7 +319,9 @@ subroutine Update_Photosynthesis_Capacity(bounds, fn, filterp, &
319
319
vcmx25_z = > photosyns_inst% vcmx25_z_patch , & ! Output: [real(r8) (:,:) ] patch leaf Vc,max25 (umol/m2 leaf/s) for canopy layer
320
320
jmx25_z = > photosyns_inst% jmx25_z_patch , & ! Output: [real(r8) (:,:) ] patch leaf Jmax25 (umol electron/m**2/s) for canopy layer
321
321
pnlc_z = > photosyns_inst% pnlc_z_patch , & ! Output: [real(r8) (:,:) ] patch proportion of leaf nitrogen allocated for light capture for canopy layer
322
- enzs_z = > photosyns_inst% enzs_z_patch & ! Output: [real(r8) (:,:) ] enzyme decay status 1.0-fully active; 0-all decayed during stress
322
+ enzs_z = > photosyns_inst% enzs_z_patch , & ! Output: [real(r8) (:,:) ] enzyme decay status 1.0-fully active; 0-all decayed during stress
323
+ vcmx_prevyr = > photosyns_inst% vcmx_prevyr , & ! Output: [real(r8) (:,:) ] patch leaf Vc,max25 from previous year avg
324
+ jmx_prevyr = > photosyns_inst% jmx_prevyr & ! Output: [real(r8) (:,:) ] patch leaf Jmax25 from previous year avg
323
325
)
324
326
!- ---------------------------------------------------------------------------------------------------------------------------------------------------------
325
327
! set timestep
@@ -345,7 +347,7 @@ subroutine Update_Photosynthesis_Capacity(bounds, fn, filterp, &
345
347
hourpd = dayl(g) / 3600._r8
346
348
tleafd10 = t_veg10_day(p) - tfrz
347
349
tleafn10 = t_veg10_night(p) - tfrz
348
- tleaf10 = (dayl(g)* tleafd10 + (86400._r8 - dayl(g)) * tleafd10 )/ 86400._r8
350
+ tleaf10 = (dayl(g)* tleafd10 + (86400._r8 - dayl(g)) * tleafn10 )/ 86400._r8
349
351
tair10 = t10(p)- tfrz
350
352
relh10 = min (1.0_r8 , rh10_p(p))
351
353
rb10v = rb10_p(p)
@@ -415,18 +417,20 @@ subroutine Update_Photosynthesis_Capacity(bounds, fn, filterp, &
415
417
PNcbold = 0.0_r8
416
418
call NitrogenAllocation(FNCa,forc_pbot10(p), relh10, CO2a10, O2a10, PARi10, PARimx10, rb10v, hourpd, &
417
419
tair10, tleafd10, tleafn10, &
418
- Jmaxb1, PNlcold, PNetold, PNrespold, &
419
- PNcbold, PNstoreopt, PNlcopt, PNetopt, PNrespopt, PNcbopt)
420
+ Jmaxb1, PNlcold, PNetold, PNrespold, PNcbold, dayl_factor(p), &
421
+ PNstoreopt, PNlcopt, PNetopt, PNrespopt, PNcbopt)
420
422
vcmx25_opt= PNcbopt * FNCa * Fc25
421
423
jmx25_opt= PNetopt * FNCa * Fj25
422
424
423
425
chg = vcmx25_opt- vcmx25_z(p, z)
424
426
chg_constrn = min (abs (chg),vcmx25_z(p, z)* max_daily_pchg)
425
427
vcmx25_z(p, z) = vcmx25_z(p, z)+ sign (1.0_r8 ,chg)* chg_constrn
428
+ vcmx_prevyr(p,z) = vcmx25_z(p,z)
426
429
427
430
chg = jmx25_opt- jmx25_z(p, z)
428
431
chg_constrn = min (abs (chg),jmx25_z(p, z)* max_daily_pchg)
429
432
jmx25_z(p, z) = jmx25_z(p, z)+ sign (1.0_r8 ,chg)* chg_constrn
433
+ jmx_prevyr(p,z) = jmx25_z(p,z)
430
434
431
435
PNlc_z(p, z)= PNlcopt
432
436
@@ -485,8 +489,8 @@ subroutine Update_Photosynthesis_Capacity(bounds, fn, filterp, &
485
489
endif ! if not C3 plants
486
490
else
487
491
do z = 1 , nrad(p)
488
- jmx25_z(p, z) = 85._r8
489
- vcmx25_z(p, z) = 50._r8
492
+ jmx25_z(p, z) = jmx_prevyr(p,z)
493
+ vcmx25_z(p, z) = vcmx_prevyr(p,z)
490
494
end do
491
495
endif ! checking for LAI and LNC
492
496
endif ! the first daycheck
@@ -803,7 +807,7 @@ end subroutine Clear24_Climate_LUNA
803
807
! ************************************************************************************************************************************************
804
808
! Use the LUNA model to calculate the Nitrogen partioning
805
809
subroutine NitrogenAllocation (FNCa ,forc_pbot10 , relh10 , CO2a10 ,O2a10 , PARi10 ,PARimx10 ,rb10 , hourpd , tair10 , tleafd10 , tleafn10 , &
806
- Jmaxb1 , PNlcold , PNetold , PNrespold , PNcbold , &
810
+ Jmaxb1 , PNlcold , PNetold , PNrespold , PNcbold , dayl_factor , &
807
811
PNstoreopt , PNlcopt , PNetopt , PNrespopt , PNcbopt )
808
812
implicit none
809
813
real (r8 ), intent (in ) :: FNCa ! Area based functional nitrogen content (g N/m2 leaf)
@@ -823,6 +827,7 @@ subroutine NitrogenAllocation(FNCa,forc_pbot10, relh10, CO2a10,O2a10, PARi10,PAR
823
827
real (r8 ), intent (in ) :: PNetold ! old value of the proportion of nitrogen allocated to electron transport (unitless)
824
828
real (r8 ), intent (in ) :: PNrespold ! old value of the proportion of nitrogen allocated to respiration (unitless)
825
829
real (r8 ), intent (in ) :: PNcbold ! old value of the proportion of nitrogen allocated to carboxylation (unitless)
830
+ real (r8 ), intent (in ) :: dayl_factor ! daylight scale factor
826
831
real (r8 ), intent (out ):: PNstoreopt ! optimal proportion of nitrogen for storage
827
832
real (r8 ), intent (out ):: PNlcopt ! optimal proportion of nitrogen for light capture
828
833
real (r8 ), intent (out ):: PNetopt ! optimal proportion of nitrogen for electron transport
@@ -904,7 +909,7 @@ subroutine NitrogenAllocation(FNCa,forc_pbot10, relh10, CO2a10,O2a10, PARi10,PAR
904
909
tleafd10c = min (max (tleafd10, Trange1), Trange2) ! constrain the physiological range
905
910
tleafn10c = min (max (tleafn10, Trange1), Trange2) ! constrain the physiological range
906
911
ci = 0.7_r8 * CO2a10
907
- JmaxCoef = Jmaxb1 * ((hourpd / 12.0_r8 ) ** 2.0_r8 ) * (1.0_r8 - exp (- params_inst% relhExp * max (relh10 - &
912
+ JmaxCoef = Jmaxb1 * dayl_factor * (1.0_r8 - exp (- params_inst% relhExp * max (relh10 - &
908
913
params_inst% minrelh, 0.0_r8 ) / (1.0_r8 - params_inst% minrelh)))
909
914
do while (PNlcoldi .NE. PNlc .and. jj < 100 )
910
915
Fc = VcmxTKattge(tair10, tleafd10c) * Fc25
0 commit comments