INTERFACE:
subroutine CNEcosystemDyn(lbc, ubc, lbp, ubp, num_soilc, filter_soilc, & num_soilp, filter_soilp, num_pcropp, filter_pcropp, doalb)DESCRIPTION:
The core CN code is executed here. Calculates fluxes for maintenance respiration, decomposition, allocation, phenology, and growth respiration. These routines happen on the radiation time step so that canopy structure stays synchronized with albedo calculations.
USES:
use clmtype use spmdMod , only: masterproc use CNSetValueMod , only: CNZeroFluxes use CNNDynamicsMod , only: CNNDeposition,CNNFixation, CNNLeaching use CNMRespMod , only: CNMResp use CNDecompMod , only: CNDecompAlloc use CNPhenologyMod , only: CNPhenology use CNGRespMod , only: CNGResp use CNCStateUpdate1Mod , only: CStateUpdate1,CStateUpdate0 use CNNStateUpdate1Mod , only: NStateUpdate1 use CNGapMortalityMod , only: CNGapMortality use CNCStateUpdate2Mod , only: CStateUpdate2, CStateUpdate2h use CNNStateUpdate2Mod , only: NStateUpdate2, NStateUpdate2h use CNFireMod , only: CNFireArea, CNFireFluxes use CNCStateUpdate3Mod , only: CStateUpdate3 use CNNStateUpdate3Mod , only: NStateUpdate3 use CNBalanceCheckMod , only: CBalanceCheck, NBalanceCheck use CNPrecisionControlMod, only: CNPrecisionControl use CNVegStructUpdateMod , only: CNVegStructUpdate use CNAnnualUpdateMod , only: CNAnnualUpdate use CNSummaryMod , only: CSummary, NSummary #if (defined C13) use CNC13StateUpdate1Mod , only: C13StateUpdate1,C13StateUpdate0 use CNC13StateUpdate2Mod , only: C13StateUpdate2, C13StateUpdate2h use CNC13StateUpdate3Mod , only: C13StateUpdate3 use CNC13FluxMod , only: C13Flux1, C13Flux2, C13Flux2h, C13Flux3 use C13SummaryMod , only: C13Summary #endif use pftdynMod , only: CNHarvest use CNWoodProductsMod , only: CNWoodProductsARGUMENTS:
implicit none integer, intent(in) :: lbc, ubc ! column bounds integer, intent(in) :: lbp, ubp ! pft bounds integer, intent(in) :: num_soilc ! number of soil columns in filter integer, intent(in) :: filter_soilc(ubc-lbc+1) ! filter for soil columns integer, intent(in) :: num_soilp ! number of soil pfts in filter integer, intent(in) :: filter_soilp(ubp-lbp+1) ! filter for soil pfts integer, intent(in) :: num_pcropp ! number of prog. crop pfts in filter integer, intent(in) :: filter_pcropp(:)! filter for prognostic crop pfts logical, intent(in) :: doalb ! true = surface albedo calculation time stepCALLED FROM:
REVISION HISTORY:
10/22/03, Peter Thornton: created from EcosystemDyn during migration to new vector code. 11/3/03, Peter Thornton: removed update of elai, esai, frac_veg_nosno_alb. These are now done in CNVegStructUpdate(), which is called prior to SurfaceAlbedo(). 11/13/03, Peter Thornton: switched from nolake to soil filtering.LOCAL VARIABLES:
local pointers to implicit in arguments local pointers to implicit out arguments !OTHER LOCAL VARIABLES: