Whatis: the libf directory

De LMDZPedia
Aller à : navigation, rechercher

The LMDZ source Fortran code is located under the libf directory of the root LMDZ directory.

The various directories (and their respective subdirectories) are there to separate codes with various functionalities. The main driver in this organization is to cleanly separate dynamics, physics and their interface. In practice:

dynamics solver related subdirectories

dyn3d  : dynamics, serial version

dyn3dpar  : dynamics, parallel version. Obsolete (many arrays remained global requiring more overall memory with increasing core number)

dyn3dmem  : dynamics, parallel (optimized) version with improved memory management (all arrays are local to each core)

dyn3d_common : routines used by all dynamics (serial or parallel)

filtre : high-latitude longitudinal filter for lonxlat grid (used by the dynamics, serial or parallel)

grid : routine for model's grid generation (used by the dynamics, serial or parallel)

physics packages related subdirectories

phy* : various physics packages:

- phylmd: standard terrestrial lmd physics

- phylmdiso: version with isotopes (temporary, should be merged in phylmd)

- phymar: physics of the 'modele atmospherique regional', obsolete

- phydev: 'physics that does nothing but does it well'

phy_common : common routines to all physics (different modules for parallelism, abort_physics, geometry, getin wrapper, ...)

physics-dynamics interface

dynphy_lonlat: contains the dynamics/physics interface with at a first level common routines to all physics and dedicated specific routines for each physics (e.g., call physics + physics initialization) in a subdirectory of the same name as the physics package's (phylmd, phydev, ...). In addition the subdirectory stores main programs, other than the gcm, which require access to both physics and dynamics routines (e.g. to generate initial states, such as ce0l). Note that if a physics package name is an extension of an already existing physics package (e.g. phylmdiso and phylmd) then they share the same interface (phylmd here).

phy*/dyn1d: the 1D model (and links to some required dyn3d/* routines)

others

misc: (misceallenous) dynamics and physics independent routines which can be used by either but rely on neither (e.g. random number generator, tridiagonal matrix solver, NetCDF function wrappers, CRAY-specific routines, ...)

obsolete: obsolete code not used anymore but moved and stored here for an easy quick look.


14/10/2021