3. CICE Namelists¶
CICE uses the same namelists for both the coupled and uncoupled models. This section describes the namelist variables, which determine time management, output frequency, model physics, and filenames. The ice namelists for the coupled model are now located in $CASE/CaseDocs. Some additional documentation on the CICE namelist is available here:
http://www.cesm.ucar.edu/models/cesm2/component_settings/cice_nml.html
A script reads the input namelist at runtime, and writes the namelist information to the file ice_in in the directory where the model executable is located. Therefore, the namelist will be updated even if the ice model is not recompiled. The default values of the ice setup, grid, tracer, and physics namelists are set in ice_init.F90. The prescribed ice option along with the history namelist variables are set in ice_prescribed.F90 and ice_history.F90 respectively. If they are not set in the namelist in the script, they will assume the default values listed in the following tables, which list all available namelist parameters. The default values shown here are for the coupled model, which is set up for a production run. Only a few of these variables are required to be set in the namelist; these values are noted in the paragraphs below. An example of the default namelist is shown in Section CICE Namelist Examples.
The main run management namelist options are shown in Table 1: Setup Namelist Options. While additional namelist variables are available in the uncoupled version, they are set by the driver in CESM. For a full list of namelist variables, you should consult the CICE Reference Guide [6].
Variables set by the driver include: dt
, runid
, runtype
, istep0
,
days_per_year
, restart
and dumpfreq
. These should be changed in the
CESM configuration files.
Variable Name | Type | Default | Description |
---|---|---|---|
&setup_nml | |||
ice_ic |
character | default | Filename for initial and branch runs. Set by driver scripts |
pointer_file |
character | ’rpointer.ice’ | Pointer file that contains the name of the restart file |
restart_file |
character | none | Restart file prefix. Set by driver. |
restart_format |
character | none | Restart file format. bin = binary, nc = netcdf, pio = use pio library (default). |
restart_ext |
logical | .false. | Write ghost cells as a part of restarts |
history_file |
character | ‘unknown’ | History file prefix. Set by driver. ’default’ uses default initialization. ’none’ initializes with no ice. |
days_per_year |
integer | 365 | Standard number of days per year for calendar. Does interact with Gregorian calendar setting. Set by driver. |
year_init |
integer | 1 | Used in leap year calculation. Do not change |
ndtd |
integer | 1 | Number of dynamic timesteps per thermodynamic timestep |
histfreq |
char array | ’m’,’x’,’x’,’x’,’x’ | Unit for frequency of output written to history streams |
’H’ or ’h’ writes hourly data | |||
’D’ or ’d’ writes daily data | |||
’M’ or ’m’ writes monthly data | |||
’Y’ or ’y’ writes yearly data | |||
’1’ writes every timestep | |||
’x’ no history data is written | |||
histfreq_n |
integer | 1,1,1,1,1 | Frequency of histfreq history data is written to each stream |
dumpfreq |
character | ‘x’ | Unit for frequency of dump files. Set by driver. |
dumpfreq_n |
integer | 1 | Frequency of dumpfreq dump files. Set by driver. |
hist_avg |
logical | .true. | If true, averaged history information is written out at a frequency determined by histfreq. If false, instantaneous values are written in all streams. |
write_ic |
logical | .true. | If true, write initial conditions |
diagfreq |
integer | 24 | Frequency of diagnostics written (min, max, hemispheric sums) to standard output. |
‘24’ = diagnostics written once every 24 timesteps | |||
‘1’ = diagnostics written each timestep | |||
‘0’ = no diagnostics written | |||
print_global |
logical | .true. | Print global diagnostics |
print_points |
logical | .true. | Print diagnostics at latpnt and lonpnt |
latpnt |
float arr | 90.0, -65.0 | Latitudes for diagnostic points (print_points ) |
lonpnt |
float arr | 0.0, -45.0 | Longitudes for diagnostic points (print_points ) |
lcdf64 |
logical | .false. | Use 64-bit offset in netcdf files |
bfbflag |
logical | .false. | Require bit-for-bit global sums |
3.1. Changing the timestep¶
dt
is the timestep in seconds for the ice model thermodynamics. The
thermodynamics component is stable but not necessarily accurate for any
value of the timestep. The value chosen for dt
depends on the stability
of the transport and the grid resolution. A conservative estimate of dt
for the transport using the upwind advection scheme is:
Maximum values for dt
for the two standard CESM POP grids, assuming
\(max(u,v) = 0.5\ m/s\), are shown in Table 2: Recommended timesteps.
The default timestep for CICE is 30 minutes for gx1,
which must be equvialent to the coupling interval (NCPL_ICE
and NCPL_ATM
)
set in the CESM configuration files env_run.xml. One should only change the CICE
timestep using the NCPL_ATM
variable in env_run.xml. For more on this see:
http://www.cesm.ucar.edu/models/cesm2/component_settings/drv_input_cesm.html
Grid |
|
\(max {\Delta} t\) |
gx3 | 28845.9 m | 4.0 hr |
gx1 | 8558.2 m | 1.2 hr |
Occasionally, ice velocities are calculated that are larger than what is
assumed when the model timestep is chosen. This causes a CFL violation
in the transport scheme. A namelist option was added (ndtd
) to
subcycle the dynamics to get through these instabilities that arise
during long integrations. The default value for this variable is one,
and is typically increased to two when the ice model reaches an
instability. The value in the namelist should be returned to one by the
user when the model integrates past that point.
3.2. Writing Output¶
The namelist variables that control the frequency of the model diagnostics, netCDF history, and restart files are shown in Table 1: Setup Namelist Options. By default, diagnostics are written out once every 48 timesteps to the ascii file ice.log.$LID (see section Stdout Output). $LID is a time stamp that is set in the main script.
The namelist variable histfreq
controls the output frequency of the
netCDF history files; writing monthly averages is the default. The
content of the history files is described in section CICE History Files. The
value of hist_avg
determines if instantaneous or averaged variables are
written at the frequency set by histfreq
. If histfreq
is set to 1
for
instantaneous output, hist_avg
is set to .false.
within the source code
to avoid conflicts. The latest version of CICE allows for multiple
history streams, currently set to a maximum of 5. The namelist
variables, histfreq
and histfreq_n
are now arrays which allow for
different frequency history file sets. More detail on this is available
in CICE History Files.
The namelist variable pointer_file
is set to the name of the pointer
file containing the restart file name that will be read when model
execution begins. The pointer file resides in the scripts directory and
is created initially by the ice setup script but is overwritten every
time a new restart file is created. It will contain the name of the
latest restart file. The default filename ice.restart_file shown in
Table 1: Setup Namelist Options will not work unless some modifications
are made to the ice setup script and a file is created with this name
and contains the name of a valid restart file; this variable must be set
in the namelist. More information on restart pointer files can be found
in Section CICE Restart Files.
The variables dumpfreq
and dumpfreq_n
control the output frequency of
the netCDF restart files; writing one restart file per year is the
default and is set by the CESM driver. The default format for all reads and
writes of files in CESM is now pio, but this can be changed to binary or
netCDF through the namelist variable, restart_format
.
The Parallel Input/Output libraries or “PIO” are used within the CESM for more efficient reading and writing. PIO includes options for binary, netCDF version3, parallel netCDF, or netCDF version 4 parallel. More on this can be found here: http://ncar.github.io/ParallelIO/
If print_points
is .true.
, diagnostic data is printed out for two grid
points, one near the north pole and one near the Weddell Sea. The points
are set via namelist variables latpnt
and lonpnt
. This option can be
helpful for debugging.
3.3. Model Physics¶
Some of the most commonly used namelist variables for the ice model physics are listed in the following tables. More information can be found in the CICE reference guide at [6].
The calculation of the ice velocities is subcycled ndte
times per
timestep so that the elastic waves are damped before the next timestep.
The subcycling timestep is calculated as \(dte = dt/ndte\) and must be
sufficiently smaller than the damping timescale T, which needs to be
sufficiently shorter than dt.
This relationship is discussed in [6]. The best ratio for
\([dte:T:dt]\) is [1:40:120]. Typical combinations of (dt
, ndte
)
are (3600., 120), (7200., 240) (10800., 120). The default ndte
is 120
as set in ice_init.F90.
kitd
determines the scheme used to redistribute sea ice within the ice
thickness distribution (ITD) as the ice grows and melts. The linear
remapping scheme is the default and approximates the thickness
distribution in each category as a linear function. The delta
function method represents g(h) in each category as a delta function.
This method can leave some categories mostly empty at any given time
and cause jumps in the properties of g(h).
kdyn
determines the ice dynamics used in the model. The default is the
elastic-viscous-plastic (EVP) dynamics (kdyn
= 1). If kdyn
is set
to 0
, the ice dynamics is inactive. In this case, ice velocities are
not computed and ice is not transported. Since the initial ice velocities
are read in from the restart file, the maximum and minimum velocities written
to the log file will be non-zero in this case, but they are not used in any
calculations.
The value of kstrength
determines which formulation is used to calculate
the strength of the pack ice. The calculation depends on mean ice
thickness and open water fraction. The calculation is based on
energetics and should not be used if the ice that participates in
ridging is not well resolved.
The variable advection
determines the horizontal transport scheme used. The default
scheme is the incremental remapping method (advection
= “remap”). This method is less
diffusive and is computationally efficient for large numbers of
categories or tracers than other options. The upwind scheme is also available, but this
scheme is only first order accurate.
Variable Name | Type | Default | Description |
---|---|---|---|
&dynamics_nml | |||
kdyn |
Integer | 1 | Determines ice dynamics, 0 = No ice dynamics, 1 = Elastic viscous plastic dynamics |
revised_evp |
Logical | .false. | Revised EVP formulation |
ndte |
Integer | 1 | Number of sub-cycles in EVP dynamics. |
advection |
Character | ‘remap’ | Determines horizontal advection scheme. ’remap’ = incremental remapping, ’upwind’ = first order advection |
kstrength |
Integer | 1 | Determines pressure formulation, 0 = parameterization, 1 = parameterization |
krdg_partic |
Integer | 1 | Ridging participation function, 0 = Thorndike, 1 = Expontential |
krdg_redist |
Integer | 1 | Ridging distribution function, 0 = Hibler , 1 = Expontential |
mu_rdg |
Real | 4.0 | e-folding scale of ridged ice |
cf |
Real | 17.0 | Ratio of ridging work to PE change |
A new thermodynamics option (ktherm = 2
) is now the default. This is the
so-called mushy-layer thermodyanmics of [10]. The basic
idea of this is that prognostic salinity is now used in the vertical
thermodynamic calculation where this used to be a constant profile. The
CESM1 and older option of [3], (ktherm = 1
) is still available.
There are several additional thermodynamic options not listed that go with
ktherm = 2
, that are described more thoroughly in [6].
Variable Name | Type | Default | Description |
---|---|---|---|
&thermo_nml | |||
kitd |
Integer | 1 | Determines ITD conversion, 0 = delta scheme, 1=linear remapping |
ktherm |
Integer | 1 | Determines ice thermodynamics, 1 = BL99, 2 = mushy layer |
conduct |
Character | ‘MU71’ | Determines conductivity formulation used with ktherm = 1, MU71, bubbly |
For the newer delta-Eddington shortwave radiative transfer scheme shortwave = dEdd
, the
base albedos are computed based on the inherent optical properties of
snow, sea ice, and melt ponds. These albedos are most commonly changed through
adjustments to the snow grain radius, R_snw
, temperature to transition
to melting snow, dT_mlt_in
, and maximum snow grain radius, rsnw_mlt_in
. Note, the older CCSM3
radiation scheme is still available through shortwave = default
.
Variable Name | Type | Default: CESM-CAM4 gx3 | Default: CESM-CAM4 gx1 | Default: CESM-CAM5 gx1 | Description |
---|---|---|---|---|---|
&shortwave_nml | |||||
shortwave |
Character | ‘dEdd’ | ‘dEdd’ | ‘dEdd’ | Shortwave Radiative Transfer Scheme, ’dEdd’ = delta-Eddington Shortwave, ’default’ = CCSM3 Shortwave |
albicev |
Real | 0.68 | 0.75 | 0.75 | Visible ice albedo (CCSM3) |
albicei |
Real | 0.30 | 0.45 | 0.45 | Near-infrared ice albedo (CCSM3) |
albsnowv |
Real | 0.91 | 0.98 | 0.98 | Visible snow albedo (CCSM3) |
albsnowi |
Real | 0.63 | 0.73 | 0.73 | Near-infrared snow albedo (CCSM3) |
r_ice |
Real | 0.0 | 0.0 | 0.0 | Base ice tuning parameter (dEdd) |
r_pnd |
Real | 0.0 | 0.0 | 0.0 | Base pond tuning parameter (dEdd) |
r_snw |
Real | -2.0 | 1.5 | 1.75 | Base snow grain radius tuning parameter (dEdd) |
dt_mlt |
Real | 2.0 | 1.5 | 1.0 | Snow melt onset temperature parameter (dEdd) |
rsnw_mlt |
Real | Snow melt maximum radius (dEdd) |
3.4. Tracer Namelist¶
The namelist parameters listed in Table 6: Tracer Namelist Options are
for adding tracers. The tracers should be added through the CESM
driver scripts via the CICE_CONFIG_OPTS
variable.
Variable Name | Type | Default | Description |
---|---|---|---|
&tracer_nml | |||
tr_aero |
Logical | .true. | Aerosol physics and tracer |
restart_aero |
Logical | .false. | Initialize aerosols to zero or from file. |
tr_iage |
Logical | .true. | Ice age passive tracer |
restart_age |
Logical | .false. | Initialize iage to zero or from file. |
tr_FY |
Logical | .true. | First-year ice area passive tracer |
restart_FY |
Logical | .false. | Initialize first-year ice to zero or from file. |
tr_lvl |
Logical | .false. | Level ice area passive tracer |
restart_lvl |
Logical | .false. | Initialize level ice to zero or from file. |
tr_pond_cesm |
Logical | .false. | The older CESM melt pond option. |
restart_pond_cesm |
Logical | .false. | Initialize CESM ponds to zero or from file. |
tr_pond_lvl |
Logical | .true. | The Hunke et al. level ice pond formulation |
restart_pond_lvl |
Logical | .false. | Initialize level ponds to zero or from file. |
tr_pond_topo |
Logical | .true. | The Felthem et al. topographic pond formulation |
restart_pond_topo |
Logical | .false. | Initialize topgraphic ponds to zero or from file. |
3.5. Prescribed Ice Namelist¶
The namelist parameters listed in Table 7: Prescribed Ice Namelist Options are for the prescribed ice option as used in AMIP and F compset (standalone CAM) runs [prescribed].
Variable Name | Type | Default | Description |
---|---|---|---|
prescribed_ice |
Logical | .false. | Flag to turn on prescribed ice |
prescribed_ice_fill |
Logical | .false. | Flag to turn fill option |
stream_year_first |
Integer | 1 | First year of prescribed ice data |
stream_year_last |
Integer | 1 | Last year of prescribed ice data |
model_year_align |
Integer | 1 | Year in model run that aligns with stream_year_first |
stream_domfilename |
Character | ‘none’ | Prescribed ice stream data file |
stream_fldfilename |
Character | ‘none’ | Prescribed ice stream data file |
stream_fldvarname |
Character | ‘ice_cov’ | Ice fraction field name |
3.6. Grid Namelist¶
The namelist parameters listed in Table 8: Grid Namelist Options are for
grid and mask information. During execution, the ice model reads grid
and land mask information from the files grid_file
and kmt_file
that
should be located in the executable directory. There are commands in the
scripts that copy these files from the input data directory, rename them
from global_$ICE_GRID.grid and global_$ICE_GRID.kmt to the
default filenames shown in Table 8: Grid Namelist Options.
Variable Name | Type | Default | Description |
---|---|---|---|
&grid_nml | |||
grid_type |
Character | ‘displaced_pole’ | Determines grid type. |
‘displaced_pole’ | |||
tripole | |||
rectangular | |||
grid_format |
Character | ‘binary’ | Grid file format (binary or netCDF) |
grid_file |
Character | ‘data.domain.grid’ | Input filename containing grid information. |
gridcpl_file |
Character | ‘data.domain.grid’ | Input filename containing grid information if coupling grid is different than computational grid. |
kmt_file |
Character | ‘data.domain.kmt’ | Input filename containing land mask information. |
kcatbound |
Integer | 0 | How category boundaries are set (0 or 1) |
For coupled runs, supported grids include the ’displaced_pole’ grids (gx3 and gx1) and the ’tripole’ grids.
3.7. Domain Namelist¶
The namelist parameters listed in Table 9: Domain Namelist Options are
for computational domain decomposition information. These are generally
set in the build configure scripts through the variables CICE_DECOMPTYPE
and CICE_DECOMPSETTING
based on the number of processors.
See the CESM scripts documentation.
Variable Name | Type | Default | Description |
---|---|---|---|
&domain_nml | |||
processor_shape |
Character | ‘square-ice’ | Approximate block shapes |
‘slenderX1’ | |||
‘slenderX2’ | |||
‘square-ice’ | |||
‘square-pop’ | |||
distribution_type |
Character | ‘spacecurve’ | How domain is split into blocks and distributed onto processors |
‘cartesian’ | |||
‘rake’ | |||
‘roundrobin’ | |||
‘sectcart’ | |||
‘sectrobin’ | |||
‘spacecurve’ | |||
distribution_wght |
Character | ‘latitude’ | How blocks are weighted when using space-filling curves |
‘block’ | |||
‘latitude’ | |||
‘erfc’ | |||
‘file’ | |||
distribution_wght_file |
Character | ‘none’ | File containing space-filling curve weights when using file weighting |
ew_boundary_type |
Character | ‘cyclic’ | Boundary conditions in E-W direction |
ns_boundary_type |
Character | ‘open’ | Boundary conditions in N-S direction |
maskhalo_dyn |
Logical | .true. | Use masked halos in dynamics. |
maskhalo_remap |
Logical | .true. | Use masked halos in remapping. |
maskhalo_bound |
Logical | .true. | Use masked halos in state bound. |
3.8. PIO Namelist¶
PIO settings are now handled via the CESM driver.