8. Additional information about CIMEΒΆ
All compiler flags are defined in
cime/config/ufs/machines/config_compilers.xml. This file contains
all supported compilers and the specific compiler flags to be used for
building with that
compiler. cime/config/ufs/machines/config_compilers.xml contains
compiler flags for each target compiler. In general, flags are not
system dependent and are valid on all systems. However, there can be
machine or OS (useful to generalize over eg MacOS or Cray systems)
dependent flags.
All environment variables and module operations are defined in
cime/config/ufs/machines/config_machines.xml. The environment
variables are sorted by machine name and can be subset for compiler,
mpilib, debug, etc.
The following describes how the xml files in the cime/config/ufs/machines/
directory are utilized in the case directory that is created for you
when you invoke create_newcase.
Note
It is important to point out that for
a model component to be CIME CCS compliant, it needs to have a
directory cime_config/ that contains a buildlib script that
tells CIME how to build that component and a buildnml script that
tells CIME how to generate namelists for your target component
configuration.
CIMEs
case.setup scriptreads theconfig_compilers.xmlfile and creates aMacros.makeandMacros.cmakefile in youe case directory.The
Macros.cmakefile is then used by the fileFV3/cime/cime_config/buildlibto build your model component.Macros.cmakeis included by fileconfigure_cime.cmakeand there the compiler flag names are translated to those used by the FV3GFS cmake build. If CCPP is used the ccpp_precompile script is called prior to calling the cmake for the model. Finally gmake is called and all the libraries are built, verbose records of the build are written to the atm.bldlog.timestamp file in the case EXEROOT.
When you create an MR Weather Application case, CIME will create a
$CASEROOT directory for you. It will also create a
$CASEROOT/SourceMods/src.fv3gfs directory where you can put in
modified source code that you can use for your experiment. The CIME
build will look in the $CASEROOT/SourceMods/src.fv3gfs directory
for any source file matching the name of any source file in the
build. (FMS, CCPP, stochastic_physics, FV3) If it finds a match it
will use the file in SourceMods/src.fv3gfs instead of the matching
file in your checked out code sandbox. If a file is removed from
SourceMods/src.fv3gfs then the next build will again use the
original file your checked out code base. For best interaction with
the git repository it is recommended that you edit source files in the
source tree and do not use the SourceMods mechanism, however keep in
mind that source files changed in this way will affect all cases
associated with the source tree.