diff --git a/cime/scripts-acme/update_acme_tests.py b/cime/scripts-acme/update_acme_tests.py
index be22d3f3e0f1..547640cddb05 100755
--- a/cime/scripts-acme/update_acme_tests.py
+++ b/cime/scripts-acme/update_acme_tests.py
@@ -40,6 +40,7 @@
"acme_land_developer" : ("acme_runoff_developer",
("SMS.f19_f19.I1850CLM45CN",
+ ("SMS_Ly3.1x1_smallvilleIA.ICLM45BGCCROP", "force_netcdf_pio"),
"SMS.f09_g16.I1850CLM45CN",
"SMS.hcru_hcru.I1850CRUCLM45CN")
),
diff --git a/components/clm/bld/namelist_files/namelist_defaults_clm4_5.xml b/components/clm/bld/namelist_files/namelist_defaults_clm4_5.xml
index 8903ebb16aee..d52fb9eaea1b 100644
--- a/components/clm/bld/namelist_files/namelist_defaults_clm4_5.xml
+++ b/components/clm/bld/namelist_files/namelist_defaults_clm4_5.xml
@@ -79,7 +79,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/paramdata/clm_params.c160128.nc
lnd/clm2/paramdata/clm_params.ED.c140115.nc
-lnd/clm2/paramdata/clm_params.c151111.nc
+lnd/clm2/paramdata/clm_params_c160303.nc
lnd/clm2/paramdata/CNP_parameters_c131108.nc
diff --git a/components/clm/src/biogeochem/CNAllocationMod.F90 b/components/clm/src/biogeochem/CNAllocationMod.F90
old mode 100644
new mode 100755
index 6375c17a28f1..1377bde8ce25
--- a/components/clm/src/biogeochem/CNAllocationMod.F90
+++ b/components/clm/src/biogeochem/CNAllocationMod.F90
@@ -856,8 +856,10 @@ subroutine CNAllocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soi
if (peaklai(p) == 1) then ! lai at maximum allowed
arepr(p) = 0._r8
aleaf(p) = 1.e-5_r8
- astem(p) = 0._r8
- aroot(p) = 1._r8 - arepr(p) - aleaf(p) - astem(p)
+ aroot(p) = max(0._r8, min(1._r8, arooti(ivt(p)) - &
+ (arooti(ivt(p)) - arootf(ivt(p))) * &
+ min(1._r8, hui(p)/gddmaturity(p))))
+ astem(p) = 1._r8 - arepr(p) - aleaf(p) - aroot(p)
else
arepr(p) = 0._r8
aroot(p) = max(0._r8, min(1._r8, arooti(ivt(p)) - &
@@ -919,7 +921,7 @@ subroutine CNAllocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soi
!would be bypassed altogether, not the intended outcome. I checked several of my output files and
!they all seemed to be going through the retranslocation loop for soybean - good news.
- if (ivt(p) /= nsoybean .or. astem(p) == astemf(ivt(p))) then
+ if (ivt(p) /= nsoybean .or. astem(p) == astemf(ivt(p)) .or. peaklai(p) == 1._r8) then
if (grain_flag(p) == 0._r8) then
t1 = 1 / dt
leafn_to_retransn(p) = t1 * ((leafc(p) / leafcn(ivt(p))) - (leafc(p) / &
@@ -970,10 +972,11 @@ subroutine CNAllocation1_PlantNPDemand (bounds, num_soilc, filter_soilc, num_soi
else if (ivt(p) >= npcropmin) then ! skip generic crops
cng = graincn(ivt(p))
+ cpg = graincp(ivt(p))
c_allometry(p) = (1._r8+g1)*(1._r8+f1+f5+f3*(1._r8+f2))
n_allometry(p) = 1._r8/cnl + f1/cnfr + f5/cng + (f3*f4*(1._r8+f2))/cnlw + &
(f3*(1._r8-f4)*(1._r8+f2))/cndw
- p_allometry(p) = 1._r8/cpl + f1/cpfr + (f3*f4*(1._r8+f2))/cplw + &
+ p_allometry(p) = 1._r8/cpl + f1/cpfr + f5/cpg + (f3*f4*(1._r8+f2))/cplw + &
(f3*(1._r8-f4)*(1._r8+f2))/cpdw
else
@@ -3299,10 +3302,11 @@ subroutine CNAllocation3_PlantCNPAlloc (bounds , &
else if (ivt(p) >= npcropmin) then ! skip generic crops
cng = graincn(ivt(p))
+ cpg = graincp(ivt(p))
c_allometry(p) = (1._r8+g1)*(1._r8+f1+f5+f3*(1._r8+f2))
n_allometry(p) = 1._r8/cnl + f1/cnfr + f5/cng + (f3*f4*(1._r8+f2))/cnlw + &
(f3*(1._r8-f4)*(1._r8+f2))/cndw
- p_allometry(p) = 1._r8/cpl + f1/cpfr + (f3*f4*(1._r8+f2))/cplw + &
+ p_allometry(p) = 1._r8/cpl + f1/cpfr + f5/cpg + (f3*f4*(1._r8+f2))/cplw + &
(f3*(1._r8-f4)*(1._r8+f2))/cpdw
else
diff --git a/components/clm/src/biogeochem/CNCropHarvestPoolsMod.F90 b/components/clm/src/biogeochem/CNCropHarvestPoolsMod.F90
old mode 100644
new mode 100755
index e48bc832c107..22f841f293b8
--- a/components/clm/src/biogeochem/CNCropHarvestPoolsMod.F90
+++ b/components/clm/src/biogeochem/CNCropHarvestPoolsMod.F90
@@ -14,6 +14,8 @@ module CNCropHarvestPoolsMod
use CNCarbonFluxType , only : carbonflux_type
use CNNitrogenStateType , only : nitrogenstate_type
use CNNitrogenFluxType , only : nitrogenflux_type
+ use PhosphorusStateType , only : phosphorusstate_type
+ use PhosphorusFluxType , only : phosphorusflux_type
!
implicit none
save
@@ -27,8 +29,8 @@ module CNCropHarvestPoolsMod
!-----------------------------------------------------------------------
subroutine CNCropHarvestPools(num_soilc, filter_soilc, &
- carbonstate_vars, c13_carbonstate_vars, c14_carbonstate_vars, nitrogenstate_vars, &
- carbonflux_vars, c13_carbonflux_vars, c14_carbonflux_vars, nitrogenflux_vars)
+ carbonstate_vars, c13_carbonstate_vars, c14_carbonstate_vars, nitrogenstate_vars, phosphorusstate_vars,&
+ carbonflux_vars, c13_carbonflux_vars, c14_carbonflux_vars, nitrogenflux_vars, phosphorusflux_vars)
!
! !DESCRIPTION:
! Update all loss fluxes from crop harvest pools, and update harvest pool state variables
@@ -42,10 +44,12 @@ subroutine CNCropHarvestPools(num_soilc, filter_soilc, &
type(carbonstate_type) , intent(in) :: c13_carbonstate_vars
type(carbonstate_type) , intent(in) :: c14_carbonstate_vars
type(nitrogenstate_type) , intent(in) :: nitrogenstate_vars
+ type(phosphorusstate_type), intent(in) :: phosphorusstate_vars
type(carbonflux_type) , intent(inout) :: carbonflux_vars
type(carbonflux_type) , intent(inout) :: c13_carbonflux_vars
type(carbonflux_type) , intent(inout) :: c14_carbonflux_vars
type(nitrogenflux_type) , intent(inout) :: nitrogenflux_vars
+ type(phosphorusflux_type), intent(inout) :: phosphorusflux_vars
!
! !LOCAL VARIABLES:
integer :: fc ! lake filter indices
@@ -75,6 +79,7 @@ subroutine CNCropHarvestPools(num_soilc, filter_soilc, &
endif
nitrogenflux_vars%prod1n_loss_col(c) = nitrogenstate_vars%prod1n_col(c) * kprod1
+ phosphorusflux_vars%prod1p_loss_col(c) = phosphorusstate_vars%prod1p_col(c) * kprod1
end do
! set time steps
@@ -100,6 +105,8 @@ subroutine CNCropHarvestPools(num_soilc, filter_soilc, &
nitrogenstate_vars%prod1n_col(c) = nitrogenstate_vars%prod1n_col(c) + &
nitrogenflux_vars%hrv_cropn_to_prod1n_col(c)*dt
+ phosphorusstate_vars%prod1p_col(c) = phosphorusstate_vars%prod1p_col(c) + &
+ phosphorusflux_vars%hrv_cropp_to_prod1p_col(c)*dt
! fluxes out of wood product pools, from decomposition
carbonstate_vars%prod1c_col(c) = carbonstate_vars%prod1c_col(c) - &
@@ -117,6 +124,8 @@ subroutine CNCropHarvestPools(num_soilc, filter_soilc, &
nitrogenstate_vars%prod1n_col(c) = nitrogenstate_vars%prod1n_col(c) - &
nitrogenflux_vars%prod1n_loss_col(c)*dt
+ phosphorusstate_vars%prod1p_col(c) = phosphorusstate_vars%prod1p_col(c) - &
+ phosphorusflux_vars%prod1p_loss_col(c)*dt
end do ! end of column loop
diff --git a/components/clm/src/biogeochem/CNEcosystemDynMod.F90 b/components/clm/src/biogeochem/CNEcosystemDynMod.F90
old mode 100644
new mode 100755
index 1f28f3ae3138..ab142622d8e7
--- a/components/clm/src/biogeochem/CNEcosystemDynMod.F90
+++ b/components/clm/src/biogeochem/CNEcosystemDynMod.F90
@@ -808,7 +808,8 @@ subroutine CNEcosystemDynNoLeaching2(bounds, &
call CNCropHarvestPools(num_soilc, filter_soilc, &
carbonstate_vars, c13_carbonstate_vars, c14_carbonstate_vars, nitrogenstate_vars, &
- carbonflux_vars, c13_carbonflux_vars, c14_carbonflux_vars, nitrogenflux_vars)
+ phosphorusstate_vars, carbonflux_vars, c13_carbonflux_vars, c14_carbonflux_vars, &
+ nitrogenflux_vars, phosphorusflux_vars)
call CNFireArea(bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, &
atm2lnd_vars, temperature_vars, energyflux_vars, soilhydrology_vars, waterstate_vars, &
diff --git a/components/clm/src/biogeochem/CNPhenologyMod.F90 b/components/clm/src/biogeochem/CNPhenologyMod.F90
old mode 100644
new mode 100755
index 6defd564156e..0679cc0a964d
--- a/components/clm/src/biogeochem/CNPhenologyMod.F90
+++ b/components/clm/src/biogeochem/CNPhenologyMod.F90
@@ -248,7 +248,8 @@ subroutine CNPhenology (num_soilc, filter_soilc, num_soilp, filter_soilp, &
if (num_pcropp > 0 ) then
call CNCropHarvest(num_pcropp, filter_pcropp, &
num_soilc, filter_soilc, crop_vars, &
- cnstate_vars, carbonstate_vars, carbonflux_vars, nitrogenstate_vars, nitrogenflux_vars)
+ cnstate_vars, carbonstate_vars, carbonflux_vars, nitrogenstate_vars, &
+ nitrogenflux_vars, phosphorusstate_vars, phosphorusflux_vars)
end if
call CNOffsetLitterfall(num_soilp, filter_soilp, &
@@ -1527,7 +1528,7 @@ subroutine CropPhenology(num_pcropp, filter_pcropp , &
dwt_seedn_to_leaf(c) = dwt_seedn_to_leaf(c) + leafn_xfer(p)/dt
leafp_xfer(p) = leafc_xfer(p) / leafcp(ivt(p)) ! with onset
- dwt_seedp_to_leaf(c) = dwt_seedp_to_leaf(c) + leafn_xfer(p)/dt
+ dwt_seedp_to_leaf(c) = dwt_seedp_to_leaf(c) + leafp_xfer(p)/dt
! latest possible date to plant winter cereal and after all other
! crops were harvested for that year
@@ -1755,6 +1756,7 @@ subroutine CropPhenology(num_pcropp, filter_pcropp , &
else ! plant never emerged from the ground
dwt_seedc_to_leaf(c) = dwt_seedc_to_leaf(c) - leafc_xfer(p)/dt
dwt_seedn_to_leaf(c) = dwt_seedn_to_leaf(c) - leafn_xfer(p)/dt
+ dwt_seedp_to_leaf(c) = dwt_seedp_to_leaf(c) - leafp_xfer(p)/dt
leafc_xfer(p) = 0._r8 ! revert planting transfers
leafn_xfer(p) = leafc_xfer(p) / leafcn(ivt(p))
leafp_xfer(p) = leafc_xfer(p) / leafcp(ivt(p))
@@ -2161,7 +2163,8 @@ end subroutine CNOnsetGrowth
!----------------------------------------------------------------------
subroutine CNCropHarvest (num_pcropp, filter_pcropp, num_soilc, filter_soilc, crop_vars, &
- cnstate_vars, carbonstate_vars, carbonflux_vars, nitrogenstate_vars, nitrogenflux_vars)
+ cnstate_vars, carbonstate_vars, carbonflux_vars, nitrogenstate_vars, nitrogenflux_vars, &
+ phosphorusstate_vars, phosphorusflux_vars)
!
! !DESCRIPTION:
! This routine handles harvest for agriculture vegetation types, such as
@@ -2181,6 +2184,8 @@ subroutine CNCropHarvest (num_pcropp, filter_pcropp, num_soilc, filter_soilc, cr
type(carbonflux_type) , intent(inout) :: carbonflux_vars
type(nitrogenstate_type), intent(in) :: nitrogenstate_vars
type(nitrogenflux_type) , intent(inout) :: nitrogenflux_vars
+ type(phosphorusstate_type),intent(inout):: phosphorusstate_vars
+ type(phosphorusflux_type), intent(inout):: phosphorusflux_vars
!
! !LOCAL VARIABLES:
! local pointers to implicit in scalars
@@ -2204,19 +2209,27 @@ subroutine CNCropHarvest (num_pcropp, filter_pcropp, num_soilc, filter_soilc, cr
leafn => nitrogenstate_vars%leafn_patch , & ! Input: [real(r8) (:) ] (gN/m2) leaf N
grainn => nitrogenstate_vars%grainn_patch , & ! Input: [real(r8) (:) ] (gN/m2) grain N
livestemn => nitrogenstate_vars%livestemn_patch , & ! Input: [real(r8) (:) ] (gN/m2) livestem N
-
+ leafp => phosphorusstate_vars%leafp_patch , & ! Input: [real(r8) (:) ] (gP/m2) leaf P
+ grainp => phosphorusstate_vars%grainp_patch , & ! Input: [real(r8) (:) ] (gP/m2) grain P
+ livestemp => phosphorusstate_vars%livestemp_patch , & ! Input: [real(r8) (:) ] (gP/m2) livestem P
cpool_to_grainc => carbonflux_vars%cpool_to_grainc_patch , & ! Input: [real(r8) (:) ] allocation to grain C (gC/m2/s)
cpool_to_livestemc => carbonflux_vars%cpool_to_livestemc_patch , & ! Input: [real(r8) (:) ] allocation to live stem C (gC/m2/s)
cpool_to_leafc => carbonflux_vars%cpool_to_leafc_patch , & ! Input: [real(r8) (:) ] allocation to leaf C (gC/m2/s)
- npool_to_leafn => nitrogenflux_vars%npool_to_leafn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gC/m2/s)
- npool_to_livestemn => nitrogenflux_vars%npool_to_livestemn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gC/m2/s)
- npool_to_grainn => nitrogenflux_vars%npool_to_grainn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gC/m2/s)
+ npool_to_leafn => nitrogenflux_vars%npool_to_leafn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gN/m2/s)
+ npool_to_livestemn => nitrogenflux_vars%npool_to_livestemn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gN/m2/s)
+ npool_to_grainn => nitrogenflux_vars%npool_to_grainn_patch , & ! Input: [real(r8) (:)] allocation to grain N (gN/m2/s)
+ ppool_to_leafp => phosphorusflux_vars%ppool_to_leafp_patch , & ! Input: [real(r8) (:)] allocation to grain P (gP/m2/s)
+ ppool_to_livestemp => phosphorusflux_vars%ppool_to_livestemp_patch, & ! Input: [real(r8) (:)] allocation to grain P (gP/m2/s)
+ ppool_to_grainp => phosphorusflux_vars%ppool_to_grainp_patch , & ! Input: [real(r8) (:)] allocation to grain P (gP/m2/s)
hrv_leafc_to_prod1c => carbonflux_vars%hrv_leafc_to_prod1c_patch , & ! Input: [real(r8) (:)] crop leafc harvested
hrv_livestemc_to_prod1c => carbonflux_vars%hrv_livestemc_to_prod1c_patch, & ! Input: [real(r8) (:)] crop stemc harvested
hrv_grainc_to_prod1c => carbonflux_vars%hrv_grainc_to_prod1c_patch , & ! Input: [real(r8) (:)] crop grainc harvested
hrv_leafn_to_prod1n => nitrogenflux_vars%hrv_leafn_to_prod1n_patch , & ! Input: [real(r8) (:)] crop leafn harvested
hrv_livestemn_to_prod1n => nitrogenflux_vars%hrv_livestemn_to_prod1n_patch, & ! Input: [real(r8) (:)] crop stemn harvested
hrv_grainn_to_prod1n => nitrogenflux_vars%hrv_grainn_to_prod1n_patch, & ! Input: [real(r8) (:)] crop grainn harvested
+ hrv_leafp_to_prod1p => phosphorusflux_vars%hrv_leafp_to_prod1p_patch , & ! Input: [real(r8) (:)] crop leafp harvested
+ hrv_livestemp_to_prod1p => phosphorusflux_vars%hrv_livestemp_to_prod1p_patch, & ! Input: [real(r8) (:)] crop stemp harvested
+ hrv_grainp_to_prod1p => phosphorusflux_vars%hrv_grainp_to_prod1p_patch, & ! Input: [real(r8) (:)] crop grainp harvested
crpyld => crop_vars%crpyld_patch , & ! InOut: [real(r8) ):)] harvested crop (bu/acre)
dmyield => crop_vars%dmyield_patch & ! InOut: [real(r8) ):)] dry matter harvested crop (t/ha)
)
@@ -2241,10 +2254,14 @@ subroutine CNCropHarvest (num_pcropp, filter_pcropp, num_soilc, filter_soilc, cr
hrv_grainc_to_prod1c(p) = t1 * grainc(p) + cpool_to_grainc(p)
! Do the same for Nitrogen
- hrv_leafn_to_prod1n(p) = t1 * presharv(ivt(p)) * leafn(p) + npool_to_leafn(p)
- hrv_livestemn_to_prod1n(p) = t1 * presharv(ivt(p)) * livestemn(p) + npool_to_livestemn(p)
+ hrv_leafn_to_prod1n(p) = presharv(ivt(p)) * ((t1 * leafn(p)) + npool_to_leafn(p))
+ hrv_livestemn_to_prod1n(p) = presharv(ivt(p)) * ((t1 * livestemn(p)) + npool_to_livestemn(p))
hrv_grainn_to_prod1n(p) = t1 * grainn(p) + npool_to_grainn(p)
+ ! Do the same for Phosphorus
+ hrv_leafp_to_prod1p(p) = presharv(ivt(p)) * ((t1 * leafp(p)) + ppool_to_leafp(p))
+ hrv_livestemp_to_prod1p(p) = presharv(ivt(p)) * ((t1 * livestemp(p)) + ppool_to_livestemp(p))
+ hrv_grainp_to_prod1p(p) = t1 * grainp(p) + ppool_to_grainp(p)
end if ! offseddt_counter
@@ -2255,7 +2272,7 @@ subroutine CNCropHarvest (num_pcropp, filter_pcropp, num_soilc, filter_soilc, cr
! for C and N inputs
call CNCropHarvestPftToColumn(num_soilc, filter_soilc,cnstate_vars, &
- carbonstate_vars, nitrogenstate_vars, carbonflux_vars, nitrogenflux_vars)
+ carbonflux_vars, nitrogenflux_vars, phosphorusflux_vars)
end associate
end subroutine CNCropHarvest
@@ -2371,8 +2388,8 @@ subroutine CNOffsetLitterfall (num_soilp, filter_soilp, &
frootc_to_litter(p) = t1 * frootc(p) + cpool_to_frootc(p)
livestemc_to_litter(p) = (1.0_r8 - presharv(ivt(p))) * ((t1 * livestemc(p)) + cpool_to_livestemc(p))
else
- leafc_to_litter(p) = t1 * leafc(p) + cpool_to_leafc(p)
- frootc_to_litter(p) = t1 * frootc(p) + cpool_to_frootc(p)
+ leafc_to_litter(p) = t1 * leafc(p) + cpool_to_leafc(p)
+ frootc_to_litter(p) = t1 * frootc(p) + cpool_to_frootc(p)
end if
else
t1 = dt * 2.0_r8 / (offset_counter(p) * offset_counter(p))
@@ -2398,7 +2415,6 @@ subroutine CNOffsetLitterfall (num_soilp, filter_soilp, &
if (ivt(p) >= npcropmin) then
livestemn_to_litter(p) = livestemc_to_litter(p) / livewdcn(ivt(p))
livestemp_to_litter(p) = livestemc_to_litter(p) / livewdcp(ivt(p))
- grainp_to_food(p) = grainc_to_food(p) / graincp(ivt(p))
end if
else
if (offset_counter(p) == dt) then
@@ -2406,19 +2422,15 @@ subroutine CNOffsetLitterfall (num_soilp, filter_soilp, &
if (ivt(p) >= npcropmin) then
! this assumes that offset_counter == dt for crops
! if this were ever changed, we'd need to add code to the "else"
- leafn_to_litter(p) = min(((1.0_r8 - presharv(ivt(p))) * ((t1 * leafn(p)) + npool_to_leafn(p))),leafn(p))* 0.38_r8 ! 62% N resorption rate; LEONARDUS VERGUTZ 2012 Ecological Monographs 82(2) 205-220.
- leafn_to_retransn(p) = min(((1.0_r8 - presharv(ivt(p))) * ((t1 * leafn(p)) + npool_to_leafn(p))),leafn(p))* 0.62_r8
+ leafn_to_litter(p) = (1.0_r8 - presharv(ivt(p))) * ((t1 * leafn(p)) + npool_to_leafn(p))
+ leafp_to_litter(p) = (1.0_r8 - presharv(ivt(p))) * ((t1 * leafp(p)) + ppool_to_leafp(p))
- leafp_to_litter(p) = min(((1.0_r8 - presharv(ivt(p))) * ((t1 * leafp(p)) + ppool_to_leafp(p))),leafp(p))* 0.35_r8 ! 65% N resorption rate; LEONARDUS VERGUTZ 2012 Ecological Monographs 82(2) 205-220.
- leafp_to_retransp(p) = min(((1.0_r8 - presharv(ivt(p))) * ((t1 * leafp(p)) + ppool_to_leafp(p))),frootp(p))* 0.65_r8
-
- frootn_to_litter(p) = min(t1 * frootn(p) + npool_to_frootn(p),frootn(p))
- frootp_to_litter(p) = min(t1 * frootp(p) + ppool_to_frootp(p),frootp(p))
+ frootn_to_litter(p) = t1 * frootn(p) + npool_to_frootn(p)
+ frootp_to_litter(p) = t1 * frootp(p) + ppool_to_frootp(p)
- livestemn_to_litter(p) = min((1.0_r8 - presharv(ivt(p))) * ((t1 * livestemn(p)) + npool_to_livestemn(p)),livestemn(p))
- livestemp_to_litter(p) = min((1.0_r8 - presharv(ivt(p))) * ((t1 * livestemp(p)) + ppool_to_livestemp(p)),livestemp(p))
+ livestemn_to_litter(p) = (1.0_r8 - presharv(ivt(p))) * ((t1 * livestemn(p)) + npool_to_livestemn(p))
+ livestemp_to_litter(p) = (1.0_r8 - presharv(ivt(p))) * ((t1 * livestemp(p)) + ppool_to_livestemp(p))
- !grainp_to_food(p) = grainc_to_food(p) / graincp(ivt(p))
else
leafn_to_litter(p) = (t1 * leafn(p) + npool_to_leafn(p))*0.38_r8
leafn_to_retransn(p) = (t1 * leafn(p) + npool_to_leafn(p))*0.62_r8
@@ -2730,13 +2742,13 @@ subroutine CNLitterToColumn (num_soilc, filter_soilc, &
leafc_to_litter => carbonflux_vars%leafc_to_litter_patch , & ! Input: [real(r8) (:) ] leaf C litterfall (gC/m2/s)
frootc_to_litter => carbonflux_vars%frootc_to_litter_patch , & ! Input: [real(r8) (:) ] fine root N litterfall (gN/m2/s)
livestemc_to_litter => carbonflux_vars%livestemc_to_litter_patch , & ! Input: [real(r8) (:) ] live stem C litterfall (gC/m2/s)
- grainc_to_food => carbonflux_vars%grainc_to_food_patch , & ! Input: [real(r8) (:) ] grain C to food (gC/m2/s)
+! grainc_to_food => carbonflux_vars%grainc_to_food_patch , & ! Input: [real(r8) (:) ] grain C to food (gC/m2/s)
phenology_c_to_litr_met_c => carbonflux_vars%phenology_c_to_litr_met_c_col , & ! Output: [real(r8) (:,:) ] C fluxes associated with phenology (litterfall and crop) to litter metabolic pool (gC/m3/s)
phenology_c_to_litr_cel_c => carbonflux_vars%phenology_c_to_litr_cel_c_col , & ! Output: [real(r8) (:,:) ] C fluxes associated with phenology (litterfall and crop) to litter cellulose pool (gC/m3/s)
phenology_c_to_litr_lig_c => carbonflux_vars%phenology_c_to_litr_lig_c_col , & ! Output: [real(r8) (:,:) ] C fluxes associated with phenology (litterfall and crop) to litter lignin pool (gC/m3/s)
livestemn_to_litter => nitrogenflux_vars%livestemn_to_litter_patch , & ! Input: [real(r8) (:) ] livestem N to litter (gN/m2/s)
- grainn_to_food => nitrogenflux_vars%grainn_to_food_patch , & ! Input: [real(r8) (:) ] grain N to food (gN/m2/s)
+! grainn_to_food => nitrogenflux_vars%grainn_to_food_patch , & ! Input: [real(r8) (:) ] grain N to food (gN/m2/s)
leafn_to_litter => nitrogenflux_vars%leafn_to_litter_patch , & ! Input: [real(r8) (:) ] leaf N litterfall (gN/m2/s)
frootn_to_litter => nitrogenflux_vars%frootn_to_litter_patch , & ! Input: [real(r8) (:) ] fine root N litterfall (gN/m2/s)
phenology_n_to_litr_met_n => nitrogenflux_vars%phenology_n_to_litr_met_n_col , & ! Output: [real(r8) (:,:) ] N fluxes associated with phenology (litterfall and crop) to litter metabolic pool (gN/m3/s)
@@ -2744,7 +2756,7 @@ subroutine CNLitterToColumn (num_soilc, filter_soilc, &
phenology_n_to_litr_lig_n => nitrogenflux_vars%phenology_n_to_litr_lig_n_col , & ! Output: [real(r8) (:,:) ] N fluxes associated with phenology (litterfall and crop) to litter lignin pool (gN/m3/s)
livestemp_to_litter => phosphorusflux_vars%livestemp_to_litter_patch , & ! Input: [real(r8) (:) ] livestem P to litter (gP/m2/s)
- grainp_to_food => phosphorusflux_vars%grainp_to_food_patch , & ! Input: [real(r8) (:) ] grain P to food (gP/m2/s)
+! grainp_to_food => phosphorusflux_vars%grainp_to_food_patch , & ! Input: [real(r8) (:) ] grain P to food (gP/m2/s)
leafp_to_litter => phosphorusflux_vars%leafp_to_litter_patch , & ! Input: [real(r8) (:) ] leaf P litterfall (gP/m2/s)
frootp_to_litter => phosphorusflux_vars%frootp_to_litter_patch , & ! Input: [real(r8) (:) ] fine root P litterfall (gP/m2/s)
phenology_p_to_litr_met_p => phosphorusflux_vars%phenology_p_to_litr_met_p_col , & ! Output: [real(r8) (:,:) ] P fluxes associated with phenology (litterfall and crop) to litter metabolic pool (gP/m3/s)
@@ -2840,30 +2852,6 @@ subroutine CNLitterToColumn (num_soilc, filter_soilc, &
phenology_p_to_litr_lig_p(c,j) = phenology_p_to_litr_lig_p(c,j) &
+ livestemp_to_litter(p) * lf_flig(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- ! grain litter carbon fluxes
- phenology_c_to_litr_met_c(c,j) = phenology_c_to_litr_met_c(c,j) &
- + grainc_to_food(p) * lf_flab(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_c_to_litr_cel_c(c,j) = phenology_c_to_litr_cel_c(c,j) &
- + grainc_to_food(p) * lf_fcel(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_c_to_litr_lig_c(c,j) = phenology_c_to_litr_lig_c(c,j) &
- + grainc_to_food(p) * lf_flig(ivt(p)) * wtcol(p) * leaf_prof(p,j)
-
- ! grain litter nitrogen fluxes
- phenology_n_to_litr_met_n(c,j) = phenology_n_to_litr_met_n(c,j) &
- + grainn_to_food(p) * lf_flab(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_n_to_litr_cel_n(c,j) = phenology_n_to_litr_cel_n(c,j) &
- + grainn_to_food(p) * lf_fcel(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_n_to_litr_lig_n(c,j) = phenology_n_to_litr_lig_n(c,j) &
- + grainn_to_food(p) * lf_flig(ivt(p)) * wtcol(p) * leaf_prof(p,j)
-
- ! grain litter phosphorus fluxes
- phenology_p_to_litr_met_p(c,j) = phenology_p_to_litr_met_p(c,j) &
- + grainp_to_food(p) * lf_flab(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_p_to_litr_cel_p(c,j) = phenology_p_to_litr_cel_p(c,j) &
- + grainp_to_food(p) * lf_fcel(ivt(p)) * wtcol(p) * leaf_prof(p,j)
- phenology_p_to_litr_lig_p(c,j) = phenology_p_to_litr_lig_p(c,j) &
- + grainp_to_food(p) * lf_flig(ivt(p)) * wtcol(p) * leaf_prof(p,j)
-
end if
end if
end if
@@ -2879,7 +2867,7 @@ end subroutine CNLitterToColumn
!-----------------------------------------------------------------------
subroutine CNCropHarvestPftToColumn (num_soilc, filter_soilc, &
- cnstate_vars, carbonstate_vars, nitrogenstate_vars, carbonflux_vars, nitrogenflux_vars)
+ cnstate_vars, carbonflux_vars, nitrogenflux_vars, phosphorusflux_vars)
!
! !DESCRIPTION:
! called at the end of CNCropHarvest to gather all pft-level harvest fluxes
@@ -2888,10 +2876,9 @@ subroutine CNCropHarvestPftToColumn (num_soilc, filter_soilc, &
! !USES:
use clm_varpar, only : maxpatch_pft
type(cnstate_type) , intent(in) :: cnstate_vars
- type(carbonstate_type) , intent(in) :: carbonstate_vars
- type(nitrogenstate_type) , intent(in) :: nitrogenstate_vars
type(carbonflux_type) , intent(inout) :: carbonflux_vars
type(nitrogenflux_type) , intent(inout) :: nitrogenflux_vars
+ type(phosphorusflux_type), intent(inout) :: phosphorusflux_vars
!
! !ARGUMENTS:
integer, intent(in) :: num_soilc ! number of soil columns in filter
@@ -2903,7 +2890,6 @@ subroutine CNCropHarvestPftToColumn (num_soilc, filter_soilc, &
associate(&
ivt => pft%itype , & ! Input: [integer (:)] pft vegetation type
wtcol => pft%wtcol , & ! Input: [real(r8) (:)] pft weight relative to column (0-1)
-
phrv_leafc_to_prod1c => carbonflux_vars%hrv_leafc_to_prod1c_patch , & ! Input: [real(r8) (:)] crop leafc harvested
phrv_livestemc_to_prod1c => carbonflux_vars%hrv_livestemc_to_prod1c_patch, & ! Input: [real(r8) (:)] crop stemc harvested
phrv_grainc_to_prod1c => carbonflux_vars%hrv_grainc_to_prod1c_patch , & ! Input: [real(r8) (:)] crop grainc harvested
@@ -2912,8 +2898,13 @@ subroutine CNCropHarvestPftToColumn (num_soilc, filter_soilc, &
phrv_livestemn_to_prod1n => nitrogenflux_vars%hrv_livestemn_to_prod1n_patch, & ! Input: [real(r8) (:)] crop stemn harvested
phrv_grainn_to_prod1n => nitrogenflux_vars%hrv_grainn_to_prod1n_patch , & ! Input: [real(r8) (:)] crop grainn harvested
phrv_cropn_to_prod1n => nitrogenflux_vars%hrv_cropn_to_prod1n_patch , & ! InOut: [real(r8) (:)] crop grainn harvested
+ phrv_leafp_to_prod1p => phosphorusflux_vars%hrv_leafp_to_prod1p_patch , & ! InOut: [real(r8) (:)] crop grainp harvested
+ phrv_livestemp_to_prod1p => phosphorusflux_vars%hrv_livestemp_to_prod1p_patch, & ! InOut: [real(r8) (:)] column level crop carbon harvested
+ phrv_grainp_to_prod1p => phosphorusflux_vars%hrv_grainp_to_prod1p_patch , & ! InOut: [real(r8) (:)] column level crop nitrogen harvested
+ phrv_cropp_to_prod1p => phosphorusflux_vars%hrv_cropp_to_prod1p_patch , & ! InOut: [real(r8) (:)] column level crop phosphorus harvested
chrv_cropc_to_prod1c => carbonflux_vars%hrv_cropc_to_prod1c_col , & ! InOut: [real(r8) (:)] column level crop carbon harvested
- chrv_cropn_to_prod1n => nitrogenflux_vars%hrv_cropn_to_prod1n_col & ! InOut: [real(r8) (:)] column level crop nitrogen harvested
+ chrv_cropn_to_prod1n => nitrogenflux_vars%hrv_cropn_to_prod1n_col , & ! InOut: [real(r8) (:)] column level crop nitrogen harvested
+ chrv_cropp_to_prod1p => phosphorusflux_vars%hrv_cropp_to_prod1p_col & ! InOut: [real(r8) (:)] column level crop phosphorus harvested
)
do pi = 1,maxpatch_pft
@@ -2935,6 +2926,11 @@ subroutine CNCropHarvestPftToColumn (num_soilc, filter_soilc, &
chrv_cropn_to_prod1n(c) = chrv_cropn_to_prod1n(c) + phrv_cropn_to_prod1n(p) * wtcol(p)
+ phrv_cropp_to_prod1p(p) = phrv_leafp_to_prod1p(p) + phrv_livestemp_to_prod1p(p) + &
+ phrv_grainp_to_prod1p(p)
+
+ chrv_cropp_to_prod1p(c) = chrv_cropp_to_prod1p(c) + phrv_cropp_to_prod1p(p) * wtcol(p)
+
end if
end if
diff --git a/components/clm/src/biogeochem/PStateUpdate2Mod.F90 b/components/clm/src/biogeochem/PStateUpdate2Mod.F90
index 9038d7556459..edcf6bc41fd8 100644
--- a/components/clm/src/biogeochem/PStateUpdate2Mod.F90
+++ b/components/clm/src/biogeochem/PStateUpdate2Mod.F90
@@ -12,6 +12,8 @@ module PStateUpdate2Mod
use clm_varctl , only : iulog
use PhosphorusStateType , only : phosphorusstate_type
use PhosphorusFLuxType , only : phosphorusflux_type
+ use PatchType , only : pft
+ use pftvarcon , only : npcropmin
!! bgc interface & pflotran:
use clm_varctl , only : use_pflotran, pf_cmode
!
@@ -143,6 +145,7 @@ subroutine PStateUpdate2h(num_soilc, filter_soilc, num_soilp, filter_soilp, &
!-----------------------------------------------------------------------
associate( &
+ ivt => pft%itype , & ! Input: [integer (:) ] pft vegetation type
pf => phosphorusflux_vars , &
ps => phosphorusstate_vars &
)
@@ -188,6 +191,12 @@ subroutine PStateUpdate2h(num_soilc, filter_soilc, num_soilp, filter_soilp, &
ps%deadcrootp_patch(p) = ps%deadcrootp_patch(p) - pf%hrv_deadcrootp_to_litter_patch(p) * dt
ps%retransp_patch(p) = ps%retransp_patch(p) - pf%hrv_retransp_to_litter_patch(p) * dt
+ if (ivt(p) >= npcropmin) then ! skip 2 generic crops
+ ps%livestemp_patch(p)= ps%livestemp_patch(p) - pf%hrv_livestemp_to_prod1p_patch(p) * dt
+ ps%leafp_patch(p) = ps%leafp_patch(p) - pf%hrv_leafp_to_prod1p_patch(p) * dt
+ ps%grainp_patch(p) = ps%grainp_patch(p) - pf%hrv_grainp_to_prod1p_patch(p) * dt
+ end if
+
! storage pools
ps%leafp_storage_patch(p) = ps%leafp_storage_patch(p) - pf%hrv_leafp_storage_to_litter_patch(p) * dt
ps%frootp_storage_patch(p) = ps%frootp_storage_patch(p) - pf%hrv_frootp_storage_to_litter_patch(p) * dt
diff --git a/components/clm/src/biogeochem/PhosphorusFluxType.F90 b/components/clm/src/biogeochem/PhosphorusFluxType.F90
old mode 100644
new mode 100755
index 47c1089fef7d..cfc82c7793bc
--- a/components/clm/src/biogeochem/PhosphorusFluxType.F90
+++ b/components/clm/src/biogeochem/PhosphorusFluxType.F90
@@ -75,6 +75,13 @@ module PhosphorusFluxType
real(r8), pointer :: harvest_p_to_litr_lig_p_col (:,:) ! col P fluxes associated with harvest to litter lignin pool (gP/m3/s)
real(r8), pointer :: harvest_p_to_cwdp_col (:,:) ! col P fluxes associated with harvest to CWD pool (gP/m3/s)
+ ! crop harvest
+ real(r8), pointer :: hrv_leafp_to_prod1p_patch (:) ! crop leafp harvested (gP/m2/s)
+ real(r8), pointer :: hrv_livestemp_to_prod1p_patch (:) ! crop stemp harvested (gP/m2/s)
+ real(r8), pointer :: hrv_grainp_to_prod1p_patch (:) ! crop grain harvested (gP/m2/s)
+ real(r8), pointer :: hrv_cropp_to_prod1p_patch (:) ! total amount of crop P harvested (gP/m2/s)
+ real(r8), pointer :: hrv_cropp_to_prod1p_col (:) ! crop P harvest mortality to 1-yr product pool (gP/m2/s)
+
! fire P fluxes
real(r8), pointer :: m_decomp_ppools_to_fire_vr_col (:,:,:) ! col vertically-resolved decomposing P fire loss (gP/m3/s)
real(r8), pointer :: m_decomp_ppools_to_fire_col (:,:) ! col vertically-integrated (diagnostic) decomposing P fire loss (gP/m2/s)
@@ -387,6 +394,10 @@ subroutine InitAllocate(this, bounds)
allocate(this%hrv_livestemp_to_litter_patch (begp:endp)) ; this%hrv_livestemp_to_litter_patch (:) = nan
allocate(this%hrv_deadstemp_to_prod10p_patch (begp:endp)) ; this%hrv_deadstemp_to_prod10p_patch (:) = nan
allocate(this%hrv_deadstemp_to_prod100p_patch (begp:endp)) ; this%hrv_deadstemp_to_prod100p_patch (:) = nan
+ allocate(this%hrv_leafp_to_prod1p_patch (begp:endp)) ; this%hrv_leafp_to_prod1p_patch (:) = nan
+ allocate(this%hrv_livestemp_to_prod1p_patch (begp:endp)) ; this%hrv_livestemp_to_prod1p_patch (:) = nan
+ allocate(this%hrv_grainp_to_prod1p_patch (begp:endp)) ; this%hrv_grainp_to_prod1p_patch (:) = nan
+ allocate(this%hrv_cropp_to_prod1p_patch (begp:endp)) ; this%hrv_cropp_to_prod1p_patch (:) = nan
allocate(this%hrv_livecrootp_to_litter_patch (begp:endp)) ; this%hrv_livecrootp_to_litter_patch (:) = nan
allocate(this%hrv_deadcrootp_to_litter_patch (begp:endp)) ; this%hrv_deadcrootp_to_litter_patch (:) = nan
allocate(this%hrv_retransp_to_litter_patch (begp:endp)) ; this%hrv_retransp_to_litter_patch (:) = nan
@@ -486,6 +497,7 @@ subroutine InitAllocate(this, bounds)
allocate(this%fert_p_to_sminp_col (begc:endc)) ; this%fert_p_to_sminp_col (:) = nan
allocate(this%hrv_deadstemp_to_prod10p_col (begc:endc)) ; this%hrv_deadstemp_to_prod10p_col (:) = nan
allocate(this%hrv_deadstemp_to_prod100p_col (begc:endc)) ; this%hrv_deadstemp_to_prod100p_col (:) = nan
+ allocate(this%hrv_cropp_to_prod1p_col (begc:endc)) ; this%hrv_cropp_to_prod1p_col (:) = nan
allocate(this%sminp_to_plant_col (begc:endc)) ; this%sminp_to_plant_col (:) = nan
allocate(this%potential_immob_p_col (begc:endc)) ; this%potential_immob_p_col (:) = nan
allocate(this%actual_immob_p_col (begc:endc)) ; this%actual_immob_p_col (:) = nan
@@ -1413,7 +1425,7 @@ subroutine InitHistory(this, bounds)
this%prod1p_loss_col(begc:endc) = spval
call hist_addfld1d (fname='PROD1P_LOSS', units='gP/m^2/s', &
avgflag='A', long_name='loss from 1-yr crop product pool', &
- ptr_col=this%prod100p_loss_col)
+ ptr_col=this%prod1p_loss_col)
this%product_ploss_col(begc:endc) = spval
call hist_addfld1d (fname='PRODUCT_PLOSS', units='gP/m^2/s', &
@@ -1784,6 +1796,10 @@ subroutine SetValues ( this, &
this%hrv_livestemp_to_litter_patch(i) = value_patch
this%hrv_deadstemp_to_prod10p_patch(i) = value_patch
this%hrv_deadstemp_to_prod100p_patch(i) = value_patch
+ this%hrv_leafp_to_prod1p_patch(i) = value_patch
+ this%hrv_livestemp_to_prod1p_patch(i) = value_patch
+ this%hrv_grainp_to_prod1p_patch(i) = value_patch
+ this%hrv_cropp_to_prod1p_patch(i) = value_patch
this%hrv_livecrootp_to_litter_patch(i) = value_patch
this%hrv_deadcrootp_to_litter_patch(i) = value_patch
this%hrv_retransp_to_litter_patch(i) = value_patch
@@ -1942,6 +1958,7 @@ subroutine SetValues ( this, &
this%fert_p_to_sminp_col(i) = value_column
this%hrv_deadstemp_to_prod10p_col(i) = value_column
this%hrv_deadstemp_to_prod100p_col(i) = value_column
+ this%hrv_cropp_to_prod1p_col(i) = value_column
this%prod10p_loss_col(i) = value_column
this%prod100p_loss_col(i) = value_column
this%product_ploss_col(i) = value_column
@@ -2098,7 +2115,8 @@ subroutine Summary(this, bounds, num_soilc, filter_soilc, num_soilp, filter_soil
! !USES:
use clm_varpar , only: nlevdecomp,ndecomp_cascade_transitions,ndecomp_pools
use clm_varctl , only: use_nitrif_denitrif
- use subgridAveMod , only: p2c
+ use subgridAveMod , only: p2c
+ use pftvarcon , only: npcropmin
! pflotran
! use clm_varctl , only: use_pflotran, pf_cmode
!
@@ -2128,6 +2146,11 @@ subroutine Summary(this, bounds, num_soilc, filter_soilc, num_soilp, filter_soil
this%wood_harvestp_patch(p) = &
this%hrv_deadstemp_to_prod10p_patch(p) + &
this%hrv_deadstemp_to_prod100p_patch(p)
+ if ( crop_prog .and. pft%itype(p) >= npcropmin )then
+ this%wood_harvestp_patch(p) = &
+ this%wood_harvestp_patch(p) + &
+ this%hrv_cropp_to_prod1p_patch(p)
+ end if
! total pft-level fire P losses
this%fire_ploss_patch(p) = &
@@ -2286,7 +2309,7 @@ subroutine Summary(this, bounds, num_soilc, filter_soilc, num_soilp, filter_soil
this%product_ploss_col(c) = &
this%prod10p_loss_col(c) + &
this%prod100p_loss_col(c) + &
- this%prod1p_loss_col(c)
+ this%prod1p_loss_col(c)
end do
! add up all vertical transport tendency terms and calculate total som leaching loss as the sum of these
diff --git a/components/clm/src/biogeochem/PhosphorusStateType.F90 b/components/clm/src/biogeochem/PhosphorusStateType.F90
old mode 100644
new mode 100755
index 607e85a6d8ff..60c56819743d
--- a/components/clm/src/biogeochem/PhosphorusStateType.F90
+++ b/components/clm/src/biogeochem/PhosphorusStateType.F90
@@ -66,6 +66,7 @@ module PhosphorusStateType
! wood product pools, for dynamic landcover
real(r8), pointer :: seedp_col (:) ! col (gP/m2) column-level pool for seeding new Patches
+ real(r8), pointer :: prod1p_col (:) ! col (gN/m2) crop product N pool, 1-year lifespan
real(r8), pointer :: prod10p_col (:) ! col (gP/m2) wood product P pool, 10-year lifespan
real(r8), pointer :: prod100p_col (:) ! col (gP/m2) wood product P pool, 100-year lifespan
real(r8), pointer :: totprodp_col (:) ! col (gP/m2) total wood product P
@@ -233,6 +234,7 @@ subroutine InitAllocate(this, bounds)
allocate(this%sminp_col (begc:endc)) ; this%sminp_col (:) = nan
allocate(this%ptrunc_col (begc:endc)) ; this%ptrunc_col (:) = nan
allocate(this%seedp_col (begc:endc)) ; this%seedp_col (:) = nan
+ allocate(this%prod1p_col (begc:endc)) ; this%prod1p_col (:) = nan
allocate(this%prod10p_col (begc:endc)) ; this%prod10p_col (:) = nan
allocate(this%prod100p_col (begc:endc)) ; this%prod100p_col (:) = nan
allocate(this%totprodp_col (begc:endc)) ; this%totprodp_col (:) = nan
@@ -629,6 +631,11 @@ subroutine InitHistory(this, bounds)
avgflag='A', long_name='100-yr wood product P', &
ptr_col=this%prod100p_col, default='inactive')
+ this%prod1p_col(begc:endc) = spval
+ call hist_addfld1d (fname='PROD1P', units='gP/m^2', &
+ avgflag='A', long_name='1-yr crop product P', &
+ ptr_col=this%prod1p_col, default='inactive')
+
this%totprodp_col(begc:endc) = spval
call hist_addfld1d (fname='TOTPRODP', units='gP/m^2', &
avgflag='A', long_name='total wood product P', &
@@ -832,6 +839,7 @@ subroutine InitCold(this, bounds, &
! dynamic landcover state variables
this%seedp_col(c) = 0._r8
+ this%prod1p_col(c) = 0._r8
this%prod10p_col(c) = 0._r8
this%prod100p_col(c) = 0._r8
this%totprodp_col(c) = 0._r8
@@ -845,6 +853,7 @@ subroutine InitCold(this, bounds, &
c = special_col(fc)
this%seedp_col(c) = 0._r8
+ this%prod1p_col(c) = 0._r8
this%prod10p_col(c) = 0._r8
this%prod100p_col(c) = 0._r8
this%totprodp_col(c) = 0._r8
@@ -1148,6 +1157,10 @@ subroutine Restart ( this, bounds, ncid, flag, cnstate_vars)
dim1name='column', long_name='', units='', &
interpinic_flag='interp', readvar=readvar, data=this%prod100p_col)
+ call restartvar(ncid=ncid, flag=flag, varname='prod1p', xtype=ncd_double, &
+ dim1name='column', long_name='', units='', &
+ interpinic_flag='interp', readvar=readvar, data=this%prod1p_col)
+
! decomp_cascade_state - the purpose of this is to check to make sure the bgc used
! matches what the restart file was generated with.
! add info about the SOM decomposition cascade
@@ -1707,6 +1720,7 @@ subroutine Summary(this, bounds, num_soilc, filter_soilc, num_soilp, filter_soil
! total wood product phosphorus
this%totprodp_col(c) = &
+ this%prod1p_col(c) + &
this%prod10p_col(c) + &
this%prod100p_col(c)
diff --git a/components/clm/src/biogeophys/TemperatureType.F90 b/components/clm/src/biogeophys/TemperatureType.F90
old mode 100644
new mode 100755
index 800303db14b7..dbf492312c4b
--- a/components/clm/src/biogeophys/TemperatureType.F90
+++ b/components/clm/src/biogeophys/TemperatureType.F90
@@ -1049,7 +1049,7 @@ subroutine InitAccVars(this, bounds)
end if
if ( use_ed ) then
- write(iulog,*) 'SPM before this one line 1040 '
+! write(iulog,*) 'SPM before this one line 1040 '
call extract_accum_field ('ED_GDD0', rbufslp, nstep)
this%gdd0_patch(begp:endp) = rbufslp(begp:endp)
end if
@@ -1285,7 +1285,7 @@ subroutine UpdateAccVars (this, EDbio_vars, bounds)
rbufslp(p) = 0._r8 ! keeps gdd unchanged at other times (eg, through Dec in NH)
end if
end do
- write(iulog,*) 'SPM before this one line 1258 '
+! write(iulog,*) 'SPM before this one line 1258 '
call update_accum_field ('GDD0', rbufslp, nstep)
call extract_accum_field ('GDD0', this%gdd0_patch, nstep)