CLM Over All Design

This is a design we want to work towards from where it is now.

CLM consists of six levels:

  1. CESM interface level
  2. CLM global superstructure level
  3. CLM main parametrization level
  4. CLM sub parametrization level
  5. CLM infrastructure level
  6. CESM infrastructure level

CESM Interface Level

This is the level that interacts with the CESM driver and coupler. This consists of "lnd_comp_mct.F90" or "lnd_comp_esmf.F90" in the "models/lnd/clm/src/cpl_*" directories. There are three public interfaces that interact with the driver ONLY through the argument list.

  1. lnd_init
  2. lnd_run
  3. lnd_final

The convention is that the CESM driver is NOT allowed to send information to CLM EXCEPT through the argument list.

CLM Global Superstructure Level

The top level calling structure.

  • clm_initializeMod.F90
  • clm_driver.F90
  • histFldsMod.F90 --> call Main parametrization level history registration subroutines
  • clmtype.F90
  • clmtypeInit.F90
  • controlMod.F90 --> Call Main parametrization level namelist read subroutines
  • clm_varpar
  • clm_varcon
  • clm_varorb
  • clm_varctl
  • clm_varsur
  • clm_varorb
  • iniTimeConst
  • restFileMod.F90 --> Call Main parametrization level restart subroutines

CLM Main Parametrization Level

CLM Sub-Parametrization Level

CLM Infrastructure Level

These are things that can be used and called freely from anywhere in CLM code.

  • clm_timemgr.F90
  • spmdMod.F90
  • decompMod.F90
  • histFileMod.F90
  • filterMod.F90
  • ncd_pio.F90
  • getdatetime.F90
  • fileutils.F90

CESM Infrastructure Level

Things that can be used and called freely from anywhere in CLM code.

  • shr_file_mod.F90

CLM Type UML Diagram

CLM UML Diagrams
  • No labels