GFDL - Geophysical Fluid Dynamics Laboratory

FMS – Frequently Asked Questions


Compilation Issues

Runtime Issues


Q: What is FMS?
FMS is the Flexible Modeling System, a software framework for supporting
the efficient development, construction, execution, and scientific interpretation
of atmospheric, oceanic, and climate system models. It was developed at the
Geophysical Fluid Dynamics Laboratory. Please see What is FMS? for more information.
Q: How do I obtain FMS?
Our publicly released models are available on our GForge Server. You must
register as a GForge user, then request access to specific models. When you
are granted access, you will receive an email with further instructions.
Q: Where can I ask a question?
There are mailing lists associated with each of our publicly released models
on the GForge Server. When you have access to a project, you may browse the
archives of these lists, and they are searchable. In most cases, your questions
should be posted to one of these lists. However, if you have not yet registered
for a project, or you feel your question is inappropriate for the mailing lists,
you may send an email to
Q: What documentation is available?
You may browse the documentation associated with our publicly released packages
by clicking on the links under “Public Releases” at left.
Q: How do models get dates, and which dates are used for what?
If the model starts from a restart file, it always takes its date from the
restart file. If it does not read coupler.res or atmos_model.res, it takes its
date from coupler_nml (coupled models) or main_nml (solo models). The date in
the diagnostics table is used as a base date for calculating the axes in output
netcdf files. It is usually set to the start of the model run. You will get
an error if it is set to a date later than that in the restart files.
Q: What does T42L18 mean? N45L20? How does this translate to processor counts?
N45L20 is the bgrid model. N45 is the number of latitude rows between pole
and equator (meridianal resolution). L20 is the number of levels. For a bgrid
model, the number of processors must agree with the domain decomposition, which
is set with the decomp variable in bgrid_core_driver_nml.

T42L18 is the spectral model. T stands for triangular truncation of spherical
harmonics. T42 indicates the highest total wavenumber. (The model will include
all total wavenumbers from 0 to 42.) R30 stands for rhomboidal truncation of
spherical harmonics, and the highest total wavenumber. For a spectral model,
the number of processors depends on the transform grid. The grid is chosen to
avoid antialiasing and to be efficient for fourier transforms. The number of
processors must divide half the latitude gridpoints. The parameters lon_max
and lat_max are set in the spectral model spectral_dynamics_nml namelist.

Tn: grid_lon >= 3n + 1, grid_lat > (5n+1) / 2

Rn: grid_lon >= 3n + 1, grid_lat > (3n+1) / 2

Model: Typical Grid: Processors:

T42 128 x 64 must divide 32

T63 192 x 96 must divide 48

R30 96 x 80 must divide 40

Compilation Issues

Q: I get compilation or linker errors involving sgi_tick.Unresolved text
symbol "sgi_tick_" -- 1st referenced by mpp.o
Make sure that you have the file nsclock.c, which is distributed with
mpp. Make sure this file is referenced in your path_names when you create your
makefile with mkmf.
Q: How do I use Cray Scientific Library (SCILIB) routines on the HPCS at GFDL?
  • You need to link the SCSL library explicitly (-lscs).
  • Some name changes to distinguish 4- and 8-byte arguments, e.g The calls
    SCFFTM and CSFFTM work with 4-byte reals. The calls DZFFTM and ZDFFTM work
    with 8-byte reals, same syntax.
  • Use ‘man intro_scsl’ on the HPCS for more details.
Q: I get a compile error on fpe_mod.use FTN_IEEE_DEFINITIONS


f90-1181 f90: ERROR FPE_MOD, File =

/net/klf/MixedLayer/havana/AM2p9_SSTover/shared/fpe/fpe.F90, Line = 34,

Column = 7

Module file "/usr/lib/f90modules/FTN_IEEE_DEFINITIONS.mod" must be

recompiled. Its format is unsupported.


This error first occurred when GFDL installed a new version of the compiler.
To get around the problem, do not compile and use fpe.F90, or use /home/fms/bin/mkmf.template.inchon.sgi
as your compilation template, or add -I/opt/MIPSpro/7312m/usr/lib/f90modules
to the FFLAGS in your mkmf compilation template or makefile.

Runtime Issues

Q: I get a time-divide error on coupled models. FATAL from PE 0: time_manager:

time_divide quotient error :: notify developer

A: Check that dt_cpld is set in coupler_nml.
Q: I get an mpp domains stack size error, often with a small number of processors.
FATAL from PE 0: MPP_UPDATE_DOMAINS user stack overflow:

call mpp_domains_set_stack_size( 81920) from all PEs.

A: Increase domains_stack_size in fms_nml to the number printed in the error
message or larger.
Q: The program crashes immediately while trying to open a file. sys-2
: UNRECOVERABLE error on system request

No such file or directory

A: Make sure that you have a sub-directory called RESTART.
Q: I get a runtime error when running a bgrid atmospheric core with an older
initial conditions file
. FATAL from PE 13: bgrid_cold_start_mod: resolution
not specified
A: Your initial conditions file may have an outdated restart file name.
Bgrid’s restart file dynamics.res was renamed to bgrid_prog_var.res. After you
expand the initial conditions cpio archive in your runscript, add this:
if (-e dynamics.res) mv dynamics.res bgrid_prog_var.res
Q: Spectral models crash immediately after initialization when using version of the SGI Scientific Computing Software Library (scsl)
shallow_dynamics: meridional wind out of valid range

FATAL: spectral_dynamics: temperatures out of valid range

A: The FMS spectral transforms code will not run correctly when using version of the SGI Scientific Computing Software Library (scsl). Apparently,
this version has a bug in the FFT.
The spectral transforms code does run under versions 1.3, 1.4, and,
which were all that were available for testing on our machine.
Q: What are the two vertical velocities “wg” and “wg_full” in the spectral
dynamics code?
A: wg(k) is defined as a downward mass flux per unit area across the k+1/2
wg_full is the pressure velocity at the model kth(full) level in generalized
coordinate. wg_full = d(P)/d(t) = d(Psurf*sigma)/d(t)
Note that wg_full is NOT only one of the Psurf*d(sigma)/d(t) or sigma*d(Psurf)/d(t)
Q: I’m getting an error about mix_snapshot_average_fields from the diag_manager.
A: Setting mix_snapshot_average_fields = true will give you a message like
this: WARNING from PE 0: Namelist mix_snapshot_average_fields = true will

cause ERROR in time coordinates of all time_averaged fields. Strongly

recommend mix_snapshot_average_fields = false

Here’s what happens with this namelist:
With mix_snapshot_average_fields = false, time values in time axis are at
the MIDDLE of averaging period, which is more correct. Users can NOT, however,
mix snapshot and averaged fields in one file. This is the default.
With mix_snapshot_average_fields = true, time values in time axis are at
the END of averaging period, so January monthly means will have time value equal
Jan. 31. Users can have snapshot and averaged fields in one file. The frepp
postprocessing utility will operate on data with time values at the end of the
averaging period, however, resulting postprocessing files will also have the
time axis at the end of the averaging period rather than the middle. However,
the postprocessing program is unable to create time averages for files containing
mixed instantaneous and averaged fields. Also, many existing ferret scripts
will produce unexpected or wrong results since they are expecting the time axis
in the middle of the averaging period.
The default value is false, and unless you really want to have snapshot
and averaged fields in one file, please stick with the default.
Q: The namelist entry “time_varying_cover_type” in land_properties_nml no
longer exists in the new codes.
A: As of the Khartoum release, the format of land_properties_nml has changed
with regards to reading the input cover type dataset. The time_varying_cover_type
was renamed to dynamic_cover_type, and the default is true. This option implies
that the cover type forcing data set in netCDF format will vary with time. The
new parameter read_old_ascii_cover provides backwards compatibility to read
the old style ascii cover type forcing data, and the default is false. If both
read_old_ascii_cover and dynamic_cover_type are false, the static netCDF cover
type forcing data set will be used, and the year will be read based on cover_dataset_entry
and cover_dataset_init_year.
The new parameter cover_dataset_init_year specifies the initial year of
the cover type forcing data. The parameter cover_dataset_entry is included for
data mapping and specifies the beginning time for reading the data, and changes
during the integration. When using the netCDF dynamic or static options, both
of these namelist variables must be specified. Following are some examples of
how to set up land_properties_nml.

  • Specify the following variables to read a static netcdf file, setting
    the dates appropriately: dynamic_cover_type = .false.

    read_old_ascii_cover = .false.

    cover_dataset_init_year = 1860

    cover_dataset_entry = 1990, 1, 1, 0, 0, 0,

  • Specify the following variables to read a dynamic netcdf file, setting
    the dates appropriately: dynamic_cover_type = .true.

    read_old_ascii_cover = .false.

    cover_dataset_init_year = 1860

    cover_dataset_entry = 1861, 1, 1, 0, 0, 0,

  • Specify the following variables to read an ascii file, setting the dates
    appropriately: dynamic_cover_type = .false.

    read_old_ascii_cover = .true.

    cover_dataset_init_year = 1860

    cover_dataset_entry = 1990, 1, 1, 0, 0, 0,