next up previous contents
Next: Fortran: Module Interface NStateUpdate2Mod Up: Fortran: Module Interface NStateUpdate1Mod Previous: Fortran: Module Interface NStateUpdate1Mod   Contents

NStateUpdate1


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 CNEcosystemDyn
REVISION HISTORY:
   8/1/03: Created by Peter Thornton
LOCAL 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)



Erik Kluzek 2011-06-15