CLM Over All Design
This is a design we want to work towards from where it is now.
CLM consists of six levels:
- CESM interface level
- CLM global superstructure level
- CLM main parametrization level
- CLM sub parametrization level
- CLM infrastructure level
- 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.
- lnd_init
- lnd_run
- 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