PCM directory layout

From Planets
Revision as of 11:14, 9 March 2023 by Martin.turbet (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page loosely describes the directory structure of the model and its components

Top directory structure and related principles

Because the PCM is a combination of various libraries and packages (or components), not all included on the same versioning systems and servers, it is important to grasp the philosophy of the underlying ecosystem and its organization. In practice it is advised to have all the source codes of various packages and libraries to be at the same level in a general master directory.

For instance (to relate to the baseline Early Mars example) if one wants to run the Generic PCM using the lon-lat LMDZ dynamical core with the Generic physics package and IOIPSL library, then at the very least the master directory should contain the three relevant directories:

IOIPSL  LMDZ.COMMON  LMDZ.GENERIC

If in addition one were to use the same setup but using the XIOS library then it should also be found in the master directory:

IOIPSL  LMDZ.COMMON  LMDZ.GENERIC  XIOS

If in addition one were to use the DYNAMICO dynamical core (rather than LMDZ.COMMON), it should also be present, along with the dedicated interface ICOSA_LMDZ:

ICOSAGCM  ICOSA_LMDZ  IOIPSL  LMDZ.COMMON  LMDZ.GENERIC  XIOS

Note that for historical reasons DYNAMICO is actually in our setup renamed ICOSAGCM.

In addition, because it is handy to be able to ensure that all components are compiled using the same environment (i.e. compiler, compiler version, external libraries etc.) and that all these components rely on FCM arch.env and arch.path files, it is advised to also have a common ARCH directory to store these:

ARCH  ICOSAGCM  ICOSA_LMDZ  IOIPSL  LMDZ.COMMON  LMDZ.GENERIC  XIOS

where again the meaning/content of each of these directories may be summarized as:

  • ARCH : to store arch files common to all models
  • ICOSAGCM : The DYNAMICO icosahedral dynamical core
  • ICOSA_LMDZ : The interface between DYNAMICO and PCM physics packages
  • IOIPSL : The IOIPSL library
  • LMDZ.COMMON : The LMDZ (legacy) longitude-latitude dynamical core
  • LMDZ.GENERIC : The Generic physics package
  • XIOS : The XIOS library

Selecting the components to put in the master directory

Because all the LMDZ.* packages : common dynamics, Venus, Mars, Generic, Mesoscale (WRF) dynamics, downloading the full trunk from our svn repository will yield a "master" directory containing:

ARCH         LMDZ.EARTH    LMDZ.TITAN.old           sync_svn_from_gitlab.sh
DOC          LMDZ.GENERIC  LMDZ.VENUS               UTIL
ICOSA_LMDZ   LMDZ.MARS     MESOSCALE                WRF.COMMON
LMDZ.COMMON  LMDZ.TITAN    sync_gitlab_from_svn.sh

Which is probably much more than you need. It is therefore advised to use the "--depth empty" followed by "update" of subversion to only retrieve the sought components. For example first create the master directory (keeping the default name "trunk"):

svn checkout http://svn.lmd.jussieu.fr/Planeto/trunk --depth empty

And then for instance only update ARCH, ICOSA_LMDZ, LMDZ.COMMON and LMDZ.GENERIC (once in the "trunk" master directory):

cd trunk
svn update ARCH ICOSA_LMDZ LMDZ.COMMON LMDZ.GENERIC

In addition one can also, in the same "trunk" directory download other components or libraries, e.g. to add the IOIPSL and XIOS libraries:

svn checkout http://forge.ipsl.jussieu.fr/igcmg/svn/IOIPSL/trunk IOIPSL
svn checkout http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk XIOS

And to likewise alongside add the DYNAMICO core as ICOSAGCM:

git clone https://gitlab.in2p3.fr/ipsl/projets/dynamico/dynamico.git ICOSAGCM