@@ -386,7 +386,7 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
386386 use elm_varctl , only : carbonphosphorus_only!
387387 use pftvarcon , only: npcropmin, declfact, bfact, aleaff, arootf, astemf, noveg
388388 use pftvarcon , only: arooti, fleafi, allconsl, allconss, grperc, grpnow, nsoybean
389- use pftvarcon , only: iscft, percrop
389+ use pftvarcon , only: iscft, percrop, nwcereal, nwcerealirrig
390390 use elm_varpar , only: nlevdecomp
391391 use elm_varcon , only: nitrif_n2o_loss_frac, secspday
392392 !
@@ -423,6 +423,8 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
423423 ! ! Local P variables
424424 real (r8 ):: cpl,cpfr,cplw,cpdw,cpg ! C:N ratios for leaf, fine root, and wood
425425 real (r8 ):: puptake_prof(bounds% begc:bounds% endc, 1 :nlevdecomp)
426+ integer , parameter :: cphase_gf = 3 ! Crop phenology phase grain fill
427+ integer , parameter :: max_lai = 1 ! Maximum allowed lai
426428
427429
428430 !- ----------------------------------------------------------------------
@@ -456,6 +458,8 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
456458
457459 hui = > crop_vars% gddplant_patch , & ! Input: [real(r8) (:) ] =gdd since planting (gddplant)
458460 leafout = > crop_vars% gddtsoi_patch , & ! Input: [real(r8) (:) ] =gdd from top soil layer temperature
461+ vf = > crop_vars% vf_patch , & ! Output: [real(r8) (:) ] vernalization factor
462+ cphase = > crop_vars% cphase_patch , & ! Output: [real(r8) (:) ] phenology phase
459463
460464 xsmrpool = > veg_cs% xsmrpool , & ! Input: [real(r8) (:) ] (gC/m2) temporary photosynthate C pool
461465 leafc = > veg_cs% leafc , & ! Input: [real(r8) (:) ]
@@ -689,7 +693,7 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
689693 ! allocation rules for crops based on maturity and linear decrease
690694 ! of amount allocated to roots over course of the growing season
691695
692- if (peaklai(p) == 1 ) then ! lai at maximum allowed
696+ if (peaklai(p) == max_lai ) then ! lai at maximum allowed
693697 arepr(p) = 0._r8
694698 aleaf(p) = 1.e-5_r8
695699 aroot(p) = max (0._r8 , min (1._r8 , arooti(ivt(p)) - &
@@ -717,6 +721,13 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
717721 aleafi(p) = aleaf(p) ! to reproductive phenology stage begins
718722 grain_flag(p) = 0._r8 ! setting to 0 while in phase 2
719723
724+ ! Added based on Yaqiong Lu et al., 2017 in Geosci. Model Dev.
725+ ! when peaklai==1, astem=0 and then astemi=0, so the astem in phase 3 will
726+ ! equal to 0 and therefore resulted a very large arepr and grainc
727+ if (peaklai(p)==max_lai .and. (ivt(p) == nwcereal .or. ivt(p) == nwcerealirrig)) then
728+ astemi(p)= 0.8_r8
729+ end if
730+
720731 ! Phase 2 completed:
721732 ! ==================
722733 ! shift allocation either when enough gdd are accumulated or maximum number
@@ -757,7 +768,7 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
757768 ! would be bypassed altogether, not the intended outcome. I checked several of my output files and
758769 ! they all seemed to be going through the retranslocation loop for soybean - good news.
759770
760- if (ivt(p) /= nsoybean .or. astem(p) == astemf(ivt(p)) .or. peaklai(p) == 1._r8 ) then
771+ if (ivt(p) /= nsoybean .or. astem(p) == astemf(ivt(p)) .or. peaklai(p) == max_lai ) then
761772 if (grain_flag(p) == 0._r8 ) then
762773 t1 = 1 / dt
763774 leafn_to_retransn(p) = t1 * ((leafc(p) / leafcn(ivt(p))) - (leafc(p) / &
@@ -775,6 +786,12 @@ subroutine Allocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soilp
775786
776787 arepr(p) = 1._r8 - aroot(p) - astem(p) - aleaf(p)
777788
789+ ! Added based on Yaqiong Lu et al., 2017 in Geosci. Model Dev.
790+ if (cphase(p) == cphase_gf .and. (ivt(p) == nwcereal .or. ivt(p) == nwcerealirrig)) then
791+ arepr(p) = arepr(p) * vf(p)
792+ aroot(p) = 1._r8 - aleaf(p) - astem(p) - arepr(p)
793+ end if
794+
778795 else ! pre emergence
779796 aleaf(p) = 1.e-5_r8 ! allocation coefficients should be irrelevant
780797 astem(p) = 0._r8 ! because crops have no live carbon pools;
0 commit comments