next up previous contents
Next: clm_drv (Source File: clm_driver.F90) Up: Routine/Function Prologues Previous: clm_map2gcell   Contents

Fortran: Module Interface clm_driver (Source File: clm_driver.F90)

This module provides the main CLM driver physics calling sequence. Most computations occurs over ``clumps'' of gridcells (and associated subgrid scale entities) assigned to each MPI process. Computation is further parallelized by looping over clumps on each process using shared memory OpenMP.

The main CLM driver physics calling sequence for clm_driver1 is as follows:

  
       + interpMonthlyVeg      interpolate monthly vegetation data        [! CN or ! CNDV]
         + readMonthlyVegetation read vegetation data for two months      [! CN or ! CNDV]
  
   ==== Begin Loop over clumps ====
    -> dynland_hwcontent   Get initial heat, water content
       + pftdyn_interp                                                    [pftdyn]
       + dynland_hwcontent   Get new heat, water content                  [pftdyn]
  
   ==== Begin Loop over clumps ====
    -> clm_driverInit      save of variables from previous time step
    -> Hydrology1          canopy interception and precip on ground
       -> FracWet          fraction of wet vegetated surface and dry elai
    -> SurfaceRadiation    surface solar radiation
    -> UrbanRadiation      surface solar and longwave radiation for Urban landunits
    -> Biogeophysics1      leaf temperature and surface fluxes
    -> BareGroundFluxes    surface fluxes for bare soil or snow-covered
                           vegetation patches
    -> UrbanFluxes         surface fluxes for urban landunits
       -> MoninObukIni     first-guess Monin-Obukhov length and wind speed
       -> FrictionVelocity friction velocity and potential temperature and
                           humidity profiles
    -> CanopyFluxes        leaf temperature and surface fluxes for vegetated
                           patches
       -> QSat             saturated vapor pressure, specific humidity, &
                           derivatives at leaf surface
       -> MoninObukIni     first-guess Monin-Obukhov length and wind speed
       -> FrictionVelocity friction velocity and potential temperature and
                           humidity profiles
       -> Stomata          stomatal resistance and photosynthesis for
                           sunlit leaves
       -> Stomata          stomatal resistance and photosynthesis for
                           shaded leaves
       -> QSat             recalculation of saturated vapor pressure,
                           specific humidity, & derivatives at leaf surface
     + DustEmission        Dust mobilization
     + DustDryDep          Dust dry deposition
    -> Biogeophysics_Lake  lake temperature and surface fluxes
     + VOCEmission         compute VOC emission                          [VOC]
    -> Biogeophysics2      soil/snow & ground temp and update surface fluxes
    -> pft2col             Average from PFT level to column level
    -> Hydrology2          surface and soil hydrology
    -> Hydrology_Lake      lake hydrology
    -> SnowAge_grain       update snow effective grain size for snow radiative transfer
     + CNEcosystemDyn      Carbon Nitrogen model ecosystem dynamics:     [CN]
                           vegetation phenology and soil carbon  
     + casa_ecosystemDyn   CASA Prime Carbon model ecosystem dynamics:   [CASA]
                           vegetation phenology and soil carbon  
     + EcosystemDyn        "static" ecosystem dynamics:                  [! CN or ! CASA]
                           vegetation phenology and soil carbon  
    -> BalanceCheck        check for errors in energy and water balances
    -> SurfaceAlbedo       albedos for next time step
    -> UrbanAlbedo         Urban landunit albedos for next time step
    ====  End Loop over clumps  ====
  
   Second phase of the clm main driver, for handling history and restart file output.
  
    -> write_diagnostic    output diagnostic if appropriate
     + Rtmriverflux        calls RTM river routing model                [RTM]
     + inicPerp            initial snow and soil moisture               [is_perpetual]
    -> updateAccFlds       update accumulated fields
    -> hist_update_hbuf    accumulate history fields for time interval
    -> htapes_wrapup       write history tapes if appropriate
    -> restFile_write      write restart file if appropriate

Optional subroutines are denoted by an plus (+) with the associated CPP token or variable in brackets at the end of the line.


USES:

   use shr_kind_mod        , only : r8 => shr_kind_r8
   use clmtype
   use clm_varctl          , only : wrtdia, fpftdyn
   use clm_varctl          , only : iulog
   use spmdMod             , only : masterproc,mpicom
   use decompMod           , only : get_proc_clumps, get_clump_bounds, get_proc_bounds
   use filterMod           , only : filter, setFilters
 #if (defined CNDV)
   use CNDVMod             , only : dv, histCNDV
   use pftdynMod           , only : pftwt_interp
 #endif
   use pftdynMod           , only : pftdyn_interp, pftdyn_wbal_init, pftdyn_wbal
 #ifdef CN
   use pftdynMod           , only : pftdyn_cnbal
 #endif
   use dynlandMod          , only : dynland_hwcontent
   use clm_varcon          , only : zlnd, isturb
   use clm_time_manager    , only : get_step_size, get_curr_calday, &
                                    get_curr_date, get_ref_date, get_nstep, is_perpetual
   use histFileMod         , only : hist_update_hbuf, hist_htapes_wrapup
   use restFileMod         , only : restFile_write, restFile_filename
   use inicPerpMod         , only : inicPerp  
   use accFldsMod          , only : updateAccFlds
   use clm_driverInitMod   , only : clm_driverInit
   use BalanceCheckMod     , only : BeginWaterBalance, BalanceCheck
   use SurfaceRadiationMod , only : SurfaceRadiation
   use Hydrology1Mod       , only : Hydrology1
   use Hydrology2Mod       , only : Hydrology2
   use HydrologyLakeMod    , only : HydrologyLake
   use Biogeophysics1Mod   , only : Biogeophysics1
   use BareGroundFluxesMod , only : BareGroundFluxes
   use CanopyFluxesMod     , only : CanopyFluxes
   use Biogeophysics2Mod   , only : Biogeophysics2
   use BiogeophysicsLakeMod, only : BiogeophysicsLake
   use SurfaceAlbedoMod    , only : SurfaceAlbedo
   use pft2colMod          , only : pft2col
 #if (defined CN)
   use CNSetValueMod       , only : CNZeroFluxes_dwt
   use CNEcosystemDynMod   , only : CNEcosystemDyn
   use CNAnnualUpdateMod   , only : CNAnnualUpdate
   use CNBalanceCheckMod   , only : BeginCBalance, BeginNBalance, &
                                    CBalanceCheck, NBalanceCheck
   use ndepStreamMod       , only : ndep_interp
 #else
   use STATICEcosysDynMod  , only : EcosystemDyn
 #endif
   use DUSTMod             , only : DustDryDep, DustEmission
   use VOCEmissionMod      , only : VOCEmission
   use seq_drydep_mod      , only : n_drydep, drydep_method, DD_XLND
   use STATICEcosysDynMod  , only : interpMonthlyVeg
   use DryDepVelocity      , only : depvel_compute
 #if (defined CASA)
   use CASAMod             , only : casa_ecosystemDyn
 #endif
 #if (defined RTM)
   use RtmMod              , only : RtmInput, RtmMapl2r, Rtm
 #endif
   use abortutils          , only : endrun
   use UrbanMod            , only : UrbanAlbedo, UrbanRadiation, UrbanFluxes 
   use SNICARMod           , only : SnowAge_grain
   use clm_atmlnd          , only : clm_map2gcell
   use perf_mod
PUBLIC TYPES:
   implicit none
PUBLIC MEMBER FUNCTIONS:
   public :: clm_drv                 ! clm physics,history, restart writes
PRIVATE MEMBER FUNCTIONS:
   private :: write_diagnostic       ! Write diagnostic information to log file



Subsections

Erik Kluzek 2011-06-15