2. Configuring and Building CICE¶
2.1. Overview¶
The setup scripts for the coupled model are located in cesm2/scripts.
The directory structure of CICE5 within CESM is shown below.
cesm2 (main directory)
|
|
components --------+--------- scripts
| |
| * * * * * * * * * *
cice *build scripts for*
| * coupled model *
| * * * * * * * * * *
|
bld ----+---- cime_config ---- docs ------ src
| | |
(Build scripts (CICE |
and CIME config) documentation) |
|
|
drivers --- mpi ---+--- io_pio --- serial --- source
|
|
|
cesm --- cice ---+--- hadley
The CIME scripts generate a set of “resolved scripts” for a specific configuration determined by the user. The configuration includes components, resolution, run type, and machine. The run and setup scripts that were in the /scripts directory for previous versions are now generated automatically. See the CESM2 User’s Guide for information on how to use the new scripts.
http://www.cesm.ucar.edu/models/cesm2
The file that contains the ice model namelist is now located in $CASE/CaseDocs. The file containing the environment variables used for building the executable file for the ice model is in $CASE/env_build.xml. The contents of the ice model namelist are described in section CICE Namelists.
2.2. Building the CICE library¶
2.3. The Build Environment¶
The cime_config/build_cpp script sets all compile time parameters, such
as the horizontal grid, the sea ice mode (prognostic or prescribed),
tracers, etc. However, to change the CPP variables, one needs to add these to
the CICE_CONFIG_OPTS
variable in the env_build.xml file. Additional options
can be set here, such as the decomposition and the number of tasks.
2.4. CICE Preprocessor Flags¶
Preprocessor flags are activated in the form -Doption in the buildcpp script. Only advanced users should change these options. See the CESM User’s Guide or the CICE reference guide for more information on these. The flags specific to the ice model are:
CPPDEFS := $(CPPDEFS) -DCESMCOUPLED -Dcoupled -Dncdf -DNICECAT=5 -DNXGLOB=$()
-DNYGLOB=$() -DNTRAERO=3 -DNTRISO=0 -DNBGCLYR=0 -DNICELYR=8 -DNSNWLYR=3
-DTRAGE=1 -DTRFY=1 -DTRLVL=1 -DTRPND=1 -DTRBRI=0 -DTRBGCS=0
-DBLCKX=$() -DBLCKY=$() -DMXBLCKS=$()
The options -DCESMCOUPLED
and -Dcoupled
are set to activate the coupling
interface. This will include the source code in ice_comp_mct.F90,
for example. In coupled runs, the CESM coupler multiplies the fluxes by
the ice area, so they are divided by the ice area in CICE to get the
correct fluxes. Note that the ice_forcing.F90 module is not used in
coupled runs.
The options -DBLCKX=$(CICE_BLCKX)
and -DBLCKY=$(CICE_BLCKY)
set the
block sizes used in each grid direction. These values are set
automatically in the scripts for the coupled model. Note that CICE_BLCKX
and
CICE_BLCKY
must divide evenly into the grid, and are used only for MPI grid
decomposition. If CICE_BLCKX
or CICE_BLCKY
do not divide evenly into the grid,
which determines the number of blocks in each direction, the model setup
will exit from the setup script and print an error message to the
ice.bldlog (build log) file. To override these values, one must set
the variable CICE_AUTO_DECOMP
to false
in env_build.xml and
then the variables CICE_BLCKX
, CICE_BLCKY
, and CICE_MBLCKS
can be set manually.
The flag -DMXBLCKS
is essentially the threading option. This controls
the number of “blocks” per processor. This can describe the number of
OpenMP threads on an MPI task, or can simply be that a single MPI task
handles a number of blocks. This is set automatically, but can be changed
as described above.
The number of categories -DNICECAT
can be changed at build time. There is
a separate discussion of this in CICE Thickness Categories.
The number of ice and snow layers are set at compile time via the CPP
flags. They can technically be changed via the CICE_CONFIG_OPTS
variable in env_build.xml, but it this is not recommended. We have provided
an option to use the older CICE4 physics, inluding 4 ice levels and 1 snow level.
This option also turns on ktherm=1
and tr_pond_cesm=.true.
To use the
older CICE4 physics options, one should add/change -phys cice4
in the XML variable
CICE_CONFIG_OPTS
.
The flag -DNTR\_AERO=n
flag turns on the aerosol deposition physics in
the sea ice where n is the number of tracer species and 0 turns off the
tracers. More details on this are in the section on tracers. The default here
is 3 and should only be changed when adding additional aerosol tracers. This can
be turned off by setting CICE_CONFIG_OPTS
to -ntr_aero=0
in the
env_build.xml file.
The flag -DNTR\_ISO=n
flag turns on the isotopes and is not yet supported.
The flags -DBGCLYR
, -DTRBRI
, and -DTRBGCS
are for the skeletal biogeochemistry.
These have not been tested within CESM and more information can be found in the CICE
reference guide [6].
The other tracer flags, -DTRAGE
, -DTRFY
, -DTRLVL
, -DTRPND
are for the age, first-year ice,
level ice, and melt pond tracers. These are either on or off using 1 or 0. By default, all are
turned on. More information on these can be found in the CICE reference guide [6].
More information on the compile settings for CICE can be found here:
http://www.cesm.ucar.edu/models/cesm2/component_settings/cice_input.html