INTERFACE:
subroutine NStateUpdate1(num_soilc, filter_soilc, num_soilp, filter_soilp)DESCRIPTION:
On the radiation time step, update all the prognostic nitrogen state variables (except for gap-phase mortality and fire fluxes)
USES:
use clmtype
use clm_time_manager, only: get_step_size
use pftvarcon , only: npcropmin, nc3crop
use surfrdMod , only: crop_prog
ARGUMENTS:
implicit none
integer, intent(in) :: num_soilc ! number of soil columns in filter
integer, intent(in) :: filter_soilc(:) ! filter for soil columns
integer, intent(in) :: num_soilp ! number of soil pfts in filter
integer, intent(in) :: filter_soilp(:) ! filter for soil pfts
CALLED FROM:
subroutine CNEcosystemDynREVISION HISTORY:
8/1/03: Created by Peter ThorntonLOCAL VARIABLES:
local pointers to implicit in scalars
integer , pointer :: ivt(:) ! pft vegetation type
real(r8), pointer :: woody(:) ! binary flag for woody lifeform (1=woody, 0=not woody)
real(r8), pointer :: cwdn_to_litr2n(:) ! decomp. of coarse woody debris N to litter 2 N (gN/m2/s)
real(r8), pointer :: cwdn_to_litr3n(:) ! decomp. of coarse woody debris N to litter 3 N (gN/m2/s)
real(r8), pointer :: grainn_to_litr1n(:) ! grain N litterfall to litter 1 N (gN/m2/s)
real(r8), pointer :: grainn_to_litr2n(:) ! grain N litterfall to litter 2 N (gN/m2/s)
real(r8), pointer :: grainn_to_litr3n(:) ! grain N litterfall to litter 3 N (gN/m2/s)
real(r8), pointer :: livestemn_to_litr1n(:) ! livestem N litterfall to litter 1 N (gN/m2/s)
real(r8), pointer :: livestemn_to_litr2n(:) ! livestem N litterfall to litter 2 N (gN/m2/s)
real(r8), pointer :: livestemn_to_litr3n(:) ! livestem N litterfall to litter 3 N (gN/m2/s)
real(r8), pointer :: frootn_to_litr1n(:) ! fine root N litterfall to litter 1 N (gN/m2/s)
real(r8), pointer :: frootn_to_litr2n(:) ! fine root N litterfall to litter 2 N (gN/m2/s)
real(r8), pointer :: frootn_to_litr3n(:) ! fine root N litterfall to litter 3 N (gN/m2/s)
real(r8), pointer :: leafn_to_litr1n(:) ! leaf N litterfall to litter 1 N (gN/m2/s)
real(r8), pointer :: leafn_to_litr2n(:) ! leaf N litterfall to litter 2 N (gN/m2/s)
real(r8), pointer :: leafn_to_litr3n(:) ! leaf N litterfall to litter 3 N (gN/m2/s)
real(r8), pointer :: litr1n_to_soil1n(:)
real(r8), pointer :: litr2n_to_soil2n(:)
real(r8), pointer :: litr3n_to_soil3n(:)
real(r8), pointer :: ndep_to_sminn(:)
real(r8), pointer :: nfix_to_sminn(:) ! symbiotic/asymbiotic N fixation to soil mineral N (gN/m2/s)
real(r8), pointer :: sminn_to_denit_excess(:)
real(r8), pointer :: sminn_to_denit_l1s1(:)
real(r8), pointer :: sminn_to_denit_l2s2(:)
real(r8), pointer :: sminn_to_denit_l3s3(:)
real(r8), pointer :: sminn_to_denit_s1s2(:)
real(r8), pointer :: sminn_to_denit_s2s3(:)
real(r8), pointer :: sminn_to_denit_s3s4(:)
real(r8), pointer :: sminn_to_denit_s4(:)
real(r8), pointer :: sminn_to_plant(:)
real(r8), pointer :: sminn_to_soil1n_l1(:)
real(r8), pointer :: sminn_to_soil2n_l2(:)
real(r8), pointer :: sminn_to_soil2n_s1(:)
real(r8), pointer :: sminn_to_soil3n_l3(:)
real(r8), pointer :: sminn_to_soil3n_s2(:)
real(r8), pointer :: sminn_to_soil4n_s3(:)
real(r8), pointer :: soil1n_to_soil2n(:)
real(r8), pointer :: soil2n_to_soil3n(:)
real(r8), pointer :: soil3n_to_soil4n(:)
real(r8), pointer :: soil4n_to_sminn(:)
real(r8), pointer :: supplement_to_sminn(:)
real(r8), pointer :: deadcrootn_storage_to_xfer(:)
real(r8), pointer :: deadcrootn_xfer_to_deadcrootn(:)
real(r8), pointer :: deadstemn_storage_to_xfer(:)
real(r8), pointer :: deadstemn_xfer_to_deadstemn(:)
real(r8), pointer :: frootn_storage_to_xfer(:)
real(r8), pointer :: frootn_to_litter(:)
real(r8), pointer :: frootn_xfer_to_frootn(:)
real(r8), pointer :: leafn_storage_to_xfer(:)
real(r8), pointer :: leafn_to_litter(:)
real(r8), pointer :: leafn_to_retransn(:)
real(r8), pointer :: leafn_xfer_to_leafn(:)
real(r8), pointer :: livecrootn_storage_to_xfer(:)
real(r8), pointer :: livecrootn_to_deadcrootn(:)
real(r8), pointer :: livecrootn_to_retransn(:)
real(r8), pointer :: livecrootn_xfer_to_livecrootn(:)
real(r8), pointer :: livestemn_storage_to_xfer(:)
real(r8), pointer :: livestemn_to_deadstemn(:)
real(r8), pointer :: livestemn_to_retransn(:)
real(r8), pointer :: livestemn_xfer_to_livestemn(:)
real(r8), pointer :: npool_to_deadcrootn(:)
real(r8), pointer :: npool_to_deadcrootn_storage(:)
real(r8), pointer :: npool_to_deadstemn(:)
real(r8), pointer :: npool_to_deadstemn_storage(:)
real(r8), pointer :: npool_to_frootn(:)
real(r8), pointer :: npool_to_frootn_storage(:)
real(r8), pointer :: npool_to_leafn(:)
real(r8), pointer :: npool_to_leafn_storage(:)
real(r8), pointer :: npool_to_livecrootn(:)
real(r8), pointer :: npool_to_livecrootn_storage(:)
real(r8), pointer :: npool_to_livestemn(:) ! allocation to live stem N (gN/m2/s)
real(r8), pointer :: npool_to_livestemn_storage(:) ! allocation to live stem N storage (gN/m2/s)
real(r8), pointer :: retransn_to_npool(:) ! deployment of retranslocated N (gN/m2/s)
real(r8), pointer :: sminn_to_npool(:) ! deployment of soil mineral N uptake (gN/m2/s)
real(r8), pointer :: grainn_storage_to_xfer(:) ! grain N shift storage to transfer (gN/m2/s)
real(r8), pointer :: grainn_to_food(:) ! grain N to food (gN/m2/s)
real(r8), pointer :: grainn_xfer_to_grainn(:) ! grain N growth from storage (gN/m2/s)
real(r8), pointer :: livestemn_to_litter(:) ! livestem N to litter (gN/m2/s)
real(r8), pointer :: npool_to_grainn(:) ! allocation to grain N (gN/m2/s)
real(r8), pointer :: npool_to_grainn_storage(:) ! allocation to grain N storage (gN/m2/s)
local pointers to implicit in/out scalars
real(r8), pointer :: grainn(:) ! (gN/m2) grain N
real(r8), pointer :: grainn_storage(:) ! (gN/m2) grain N storage
real(r8), pointer :: grainn_xfer(:) ! (gN/m2) grain N transfer
real(r8), pointer :: litr1n(:) ! (gN/m2) litter labile N
real(r8), pointer :: litr2n(:) ! (gN/m2) litter cellulose N
real(r8), pointer :: litr3n(:) ! (gN/m2) litter lignin N
real(r8), pointer :: sminn(:) ! (gN/m2) soil mineral N
real(r8), pointer :: soil1n(:) ! (gN/m2) soil organic matter N (fast pool)
real(r8), pointer :: soil2n(:) ! (gN/m2) soil organic matter N (medium pool)
real(r8), pointer :: soil3n(:) ! (gN/m2) soil orgainc matter N (slow pool)
real(r8), pointer :: soil4n(:) ! (gN/m2) soil orgainc matter N (slowest pool)
real(r8), pointer :: cwdn(:) ! (gN/m2) coarse woody debris N
real(r8), pointer :: frootn(:) ! (gN/m2) fine root N
real(r8), pointer :: frootn_storage(:) ! (gN/m2) fine root N storage
real(r8), pointer :: frootn_xfer(:) ! (gN/m2) fine root N transfer
real(r8), pointer :: leafn(:) ! (gN/m2) leaf N
real(r8), pointer :: leafn_storage(:) ! (gN/m2) leaf N storage
real(r8), pointer :: leafn_xfer(:) ! (gN/m2) leaf N transfer
real(r8), pointer :: livecrootn(:) ! (gN/m2) live coarse root N
real(r8), pointer :: livecrootn_storage(:) ! (gN/m2) live coarse root N storage
real(r8), pointer :: livecrootn_xfer(:) ! (gN/m2) live coarse root N transfer
real(r8), pointer :: livestemn(:) ! (gN/m2) live stem N
real(r8), pointer :: livestemn_storage(:) ! (gN/m2) live stem N storage
real(r8), pointer :: livestemn_xfer(:) ! (gN/m2) live stem N transfer
real(r8), pointer :: deadcrootn(:) ! (gN/m2) dead coarse root N
real(r8), pointer :: deadcrootn_storage(:) ! (gN/m2) dead coarse root N storage
real(r8), pointer :: deadcrootn_xfer(:) ! (gN/m2) dead coarse root N transfer
real(r8), pointer :: deadstemn(:) ! (gN/m2) dead stem N
real(r8), pointer :: deadstemn_storage(:) ! (gN/m2) dead stem N storage
real(r8), pointer :: deadstemn_xfer(:) ! (gN/m2) dead stem N transfer
real(r8), pointer :: retransn(:) ! (gN/m2) plant pool of retranslocated N
real(r8), pointer :: npool(:) ! (gN/m2) temporary plant N pool
local pointers for dynamic landcover fluxes and states
real(r8), pointer :: dwt_seedn_to_leaf(:)
real(r8), pointer :: dwt_seedn_to_deadstem(:)
real(r8), pointer :: dwt_frootn_to_litr1n(:)
real(r8), pointer :: dwt_frootn_to_litr2n(:)
real(r8), pointer :: dwt_frootn_to_litr3n(:)
real(r8), pointer :: dwt_livecrootn_to_cwdn(:)
real(r8), pointer :: dwt_deadcrootn_to_cwdn(:)
real(r8), pointer :: seedn(:)
local pointers to implicit out scalars
real(r8), pointer :: col_begnb(:) ! nitrogen mass, beginning of time step (gN/m**2)
real(r8), pointer :: pft_begnb(:) ! nitrogen mass, beginning of time step (gN/m**2)
!OTHER LOCAL VARIABLES:
integer :: c,p ! indices
integer :: fp,fc ! lake filter indices
real(r8):: dt ! radiation time step (seconds)