| 1 | Description of libf purpose and contents | 
|---|
| 2 | ---------------------------------------- | 
|---|
| 3 |  | 
|---|
| 4 | All the LMDZ source code is located in subdirectories of libf. | 
|---|
| 5 | The various directories (and their respective subdirectories) are there to | 
|---|
| 6 | separate codes with various functionalities. The main driver in this | 
|---|
| 7 | organization is to cleanly separate dynamics, physics and their | 
|---|
| 8 | interface. In practice: | 
|---|
| 9 |  | 
|---|
| 10 | dyn3d     : dynamics, serial version | 
|---|
| 11 |  | 
|---|
| 12 | dyn3dpar  : dynamics, parallel version. Obsolete (many arrays remained global | 
|---|
| 13 | requiring more overall memory with increasing core number) | 
|---|
| 14 |  | 
|---|
| 15 | dyn3dmem  : dynamics, parallel (optimized) version with improved | 
|---|
| 16 | memory management (all arrays are local to each core) | 
|---|
| 17 |  | 
|---|
| 18 | dyn3d_common: routines used by all dynamics (serial or parallel) | 
|---|
| 19 |  | 
|---|
| 20 | filtre: high-latitude longitudinal filter for lonxlat grid | 
|---|
| 21 | (used by the dynamics, serial or parallel) | 
|---|
| 22 |  | 
|---|
| 23 | grid: routine for model's grid generation | 
|---|
| 24 | (used by the dynamics, serial or parallel) | 
|---|
| 25 |  | 
|---|
| 26 |  | 
|---|
| 27 | phy* : various physics packages | 
|---|
| 28 | phylmd: standard terrestrial lmd physics | 
|---|
| 29 | phylmdiso: version with isotopes (temporary, should be merged in phylmd) | 
|---|
| 30 | phymar: physics of the 'modele atmospherique regional', obsolete | 
|---|
| 31 | phydev: 'physics that does nothing but does it well' | 
|---|
| 32 |  | 
|---|
| 33 | phy_common: common routines to all physics | 
|---|
| 34 | (different modules for parallelism, abort_physics, geometry, | 
|---|
| 35 | getin wrapper, ...) | 
|---|
| 36 |  | 
|---|
| 37 | dynphy_lonlat: contains the dynamics/physics interface | 
|---|
| 38 | with at a first level common routines to all physics | 
|---|
| 39 | and dedicated specific routines for each physics | 
|---|
| 40 | (e.g., CALL physics + physics initialization) in a | 
|---|
| 41 | subdirectory of the same name as the physics package's | 
|---|
| 42 | (phylmd, phydev, ...). | 
|---|
| 43 | In addition the subdirectory stores main programs, | 
|---|
| 44 | other than the gcm, which require access to both physics | 
|---|
| 45 | and dynamics routines | 
|---|
| 46 | (e.g. to generate initial states, such as ce0l). | 
|---|
| 47 | Note that if a physics package name is an extension of | 
|---|
| 48 | an already existing physics package (e.g. phylmdiso and | 
|---|
| 49 | phylmd) then they share the same interface (phylmd here). | 
|---|
| 50 |  | 
|---|
| 51 | phy*/dyn1d: the 1D model (and links to some required dyn3d/* routines) | 
|---|
| 52 |  | 
|---|
| 53 | misc (misceallenous): dynamics and physics independent routines which can be | 
|---|
| 54 | used by either but rely on neither | 
|---|
| 55 | (e.g. random number generator, | 
|---|
| 56 | tridiagonal matrix solver, NetCDF function wrappers, | 
|---|
| 57 | CRAY-specific routines, ...) | 
|---|
| 58 |  | 
|---|
| 59 | obsolete: obsolete code not used anymore but moved and stored here for an | 
|---|
| 60 | easy quick look. | 
|---|
| 61 |  | 
|---|
| 62 | 11/10/2021 | 
|---|
| 63 |  | 
|---|
| 64 |  | 
|---|
| 65 |  | 
|---|
| 66 |  | 
|---|