Difference between revisions of "ICOSA LMDZ directory layout and contents"

From Planets
Jump to: navigation, search
(Created page with "This page describes the directory structure of the ICOSA_LMDZ directory which contains the interface between the DYNAMICO dynamical core and the LMDZ.* physics packages == Th...")
 
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page describes the directory structure of the ICOSA_LMDZ directory which contains the interface between the DYNAMICO dynamical core and the LMDZ.* physics packages
+
This page describes the directory structure of the ICOSA_LMDZ directory which contains the interface between [[the DYNAMICO dynamical core]] and the PCM LMDZ.* physics packages
  
 
== The ''ICOSA_LMDZ'' directory ==
 
== The ''ICOSA_LMDZ'' directory ==
 
Once downloaded from the svn server, the ''ICOSA_LMDZ'' directory contents should be:
 
Once downloaded from the svn server, the ''ICOSA_LMDZ'' directory contents should be:
 
<pre>
 
<pre>
arch     build  compile_ada      make_icosa_lmdz xml
+
arch  bld.cfg build clean  compile_adastra-gnu  compile_irene-amd  make_icosa_lmdz src xml
bld.cfg  clean  compile_occigen src
 
 
</pre>
 
</pre>
 
Where the noteworthy elements are:
 
Where the noteworthy elements are:
 
* The <font color="green">make_icosa_lmdz</font> script, which is the master script to use to compile all components (DYNAMICO, physics package, the interface between the two and the IOIPSL and XIOS libraries).
 
* The <font color="green">make_icosa_lmdz</font> script, which is the master script to use to compile all components (DYNAMICO, physics package, the interface between the two and the IOIPSL and XIOS libraries).
* Example scripts <font color="green">compile_ada</font> and <font color="green">compile_occigen</font> which are wrappers to the <font color="green">make_icosa_lmdz</font> script with a set of given options. The general idea here is that a user would likewise write his own wrapper script.
+
To list available options, run "make_icosa_lmdz -h", which should return something like:
 +
<pre>
 +
Usage :
 +
make_icosa_lmdz [options] -arch arch_name -p phys
 +
[-h]                      : help
 +
[-prod / -dev / -debug]    : compilation mode: production (default) / developpement / debug .
 +
[-full]                    : recompile all code from scratch
 +
[-nodeps]                  : do not build dependencies (XIOS and IOIPSL libraries)
 +
-arch arch_name          : target architecture
 +
[-arch_path path]          : relative PATH to directory containing multi-model
 +
                            path and environment arch files
 +
-p phys                  : physics package (e.g. std , venus , mars, ...)
 +
[-p_opt "options"]        : additional options for physics package
 +
[-parallel type]          : parallelism (none|mpi|omp|mpi_omp)
 +
[-with_xios]              : compile and link with XIOS (default)
 +
[-job num]                : speed up compilation by using num simulateneous
 +
                            compilation steps (when possible)
 +
</pre>
 +
Upon successful completion of the compilation step the <font color="blue">bin</font> subdirectory will contain the executable <font color="green">icosa_lmdz.exe</font>
 +
* Example scripts <font color="green">compile_adastra-gnu</font> and <font color="green">compile_irene-amd</font> which are wrappers to the <font color="green">make_icosa_lmdz</font> script with a set of given options. The general idea here is that a user would likewise write his/her own wrapper script.
 
* The ''arch'' directory which contains architecture files used by the <font color="green">make_icosa_lmdz</font> script
 
* The ''arch'' directory which contains architecture files used by the <font color="green">make_icosa_lmdz</font> script
 
* The ''src'' directory which contains the source code for the interface
 
* The ''src'' directory which contains the source code for the interface
Line 15: Line 33:
  
 
== The ''src'' subdirectory ==
 
== The ''src'' subdirectory ==
This directory contains the source code for the interface, along with subdirectories related to each of the physics packages (currently Generic, Mars and Venus). More general code, i.e. which apply to all the physics packages, such as plugins for the vertical discretization or dissipation factors are located at this level
+
This directory contains the source code for the interface, along with subdirectories related to each of the physics packages (currently Generic, Mars and Venus). More general code, i.e. which apply to all the physics packages, such as plugins for the vertical discretization or dissipation factors are located at this level. In practice that directory currently contains:
 +
<pre>
 +
distrib_icosa_lmdz.f90  phymars  phyvenus
 +
disvert_icosa_lmdz.f90  phypluto  vert_prof_dissip_icosa_lmdz.f90
 +
icosa_lmdz.f90          phystd    wrapper.f90
 +
</pre>
 +
where
 +
* icosa_lmdz.f90 is the main program which is in fact quite minimal as it only needs to set-up pointers for  plugin routines and call DYNAMICO's ''icosa_init'' routine
 +
* distrib_icosa_lmdz.f90 and wrapper.f90 are quite technical routines handling the parallelism and correspondances between physics and dynamics grids
 +
* disvert_icosa_lmdz.f90 is the plugin (inherited from LMDZ.COMMON and follows the vertical coordinate and associated discretization choices made there)
 +
* vert_prof_dissip_icosa_lmdz.f90 is the plugin (inherited from LMDZ.COMMON) to set the multiplicative coefficient along the vertical for lateral dissipation
 +
 
 +
=== The ''src/phy*'' subdirectories ===
 +
These contain the interface to call the main physics driver from the Mars (''phymars''), Pluto (''phypluto''), Generic (''phystd'') or Venus (''phyvenus'') physics packages
 +
 
 +
[[Category:Generic-DYNAMICO]]
 +
[[Category:Mars-DYNAMICO]]
 +
[[Category:Venus-DYNAMICO]]

Latest revision as of 08:30, 15 November 2024

This page describes the directory structure of the ICOSA_LMDZ directory which contains the interface between the DYNAMICO dynamical core and the PCM LMDZ.* physics packages

The ICOSA_LMDZ directory

Once downloaded from the svn server, the ICOSA_LMDZ directory contents should be:

arch  bld.cfg  build  clean  compile_adastra-gnu  compile_irene-amd  make_icosa_lmdz  src  xml

Where the noteworthy elements are:

  • The make_icosa_lmdz script, which is the master script to use to compile all components (DYNAMICO, physics package, the interface between the two and the IOIPSL and XIOS libraries).

To list available options, run "make_icosa_lmdz -h", which should return something like:

Usage :
make_icosa_lmdz [options] -arch arch_name -p phys
[-h]                       : help
[-prod / -dev / -debug]    : compilation mode: production (default) / developpement / debug .
[-full]                    : recompile all code from scratch
[-nodeps]                  : do not build dependencies (XIOS and IOIPSL libraries)
 -arch arch_name           : target architecture
[-arch_path path]          : relative PATH to directory containing multi-model
                             path and environment arch files
 -p phys                   : physics package (e.g. std , venus , mars, ...)
[-p_opt "options"]         : additional options for physics package
[-parallel type]           : parallelism (none|mpi|omp|mpi_omp)
[-with_xios]               : compile and link with XIOS (default)
[-job num]                 : speed up compilation by using num simulateneous 
                             compilation steps (when possible)

Upon successful completion of the compilation step the bin subdirectory will contain the executable icosa_lmdz.exe

  • Example scripts compile_adastra-gnu and compile_irene-amd which are wrappers to the make_icosa_lmdz script with a set of given options. The general idea here is that a user would likewise write his/her own wrapper script.
  • The arch directory which contains architecture files used by the make_icosa_lmdz script
  • The src directory which contains the source code for the interface
  • The xml directory which contains an example of the iodef.xml file to use, along with related instructions to combining it with other xml file gathered from DYNAMICO and physics packages

The src subdirectory

This directory contains the source code for the interface, along with subdirectories related to each of the physics packages (currently Generic, Mars and Venus). More general code, i.e. which apply to all the physics packages, such as plugins for the vertical discretization or dissipation factors are located at this level. In practice that directory currently contains:

distrib_icosa_lmdz.f90  phymars   phyvenus
disvert_icosa_lmdz.f90  phypluto  vert_prof_dissip_icosa_lmdz.f90
icosa_lmdz.f90          phystd    wrapper.f90

where

  • icosa_lmdz.f90 is the main program which is in fact quite minimal as it only needs to set-up pointers for plugin routines and call DYNAMICO's icosa_init routine
  • distrib_icosa_lmdz.f90 and wrapper.f90 are quite technical routines handling the parallelism and correspondances between physics and dynamics grids
  • disvert_icosa_lmdz.f90 is the plugin (inherited from LMDZ.COMMON and follows the vertical coordinate and associated discretization choices made there)
  • vert_prof_dissip_icosa_lmdz.f90 is the plugin (inherited from LMDZ.COMMON) to set the multiplicative coefficient along the vertical for lateral dissipation

The src/phy* subdirectories

These contain the interface to call the main physics driver from the Mars (phymars), Pluto (phypluto), Generic (phystd) or Venus (phyvenus) physics packages