# Modules

From WikiROMS

Modules

Now that we are using Fortran 90, the method of choice for managing data structures are modules. The **ROMS/Modules** directory contains all of the ROMS modules that contain globally used variables. The complete list is:

- mod_arrays.F
- This is actually a subroutine, not a module, but it calls the allocate and initialize routines for all the modules containing allocatable arrays.

- mod_average.F
- If AVERAGES is
**#defined**, this will provide the storage for the running means of the fields you are averaging.

- mod_biology.F
- If BIOLOGY is
**#defined**, this will provide the storage for the biology interaction parameters.

- mod_boundary.F
- This contains the storage for the open boundary conditions. If they aren't provided analytically, this will also provide the storage for fields read from a file that need to be time-interpolated.

- mod_clima.F
- If one of CLIMATOLOGY, AD_SENSITIVITY, OPT_OBSERVATIONS, or SO_SEMI is
**#defined**, this will provide the storage for the climatological fields.

- mod_coupler.F
- If either MODEL_COUPLING or ESMF_LIB is
**#defined**, this will set up the requisite fields and data structures for the coupling.

- mod_coupling.F
- If SOLVE3D is
**#defined**, this will provide the storage for the fields used in coupling the 2-D and 3-D components of the simulation.

- mod_diags.F
- If DIAGNOSTICS is
**#defined**, this will provide the storage for the various tendency terms.

- mod_eclight.F
- If both BIOLOGY and ECOSIM are
**#defined**, this will set up the spectral irradiance variables.

- mod_eoscoef.F
- If NONLIN_EOS is
**#defined**, this will provide the polynomial expansion coefficients for the nonlinear equation of state for sea water.

- mod_floats.F
- If FLOATS is
**#defined**, this will provide the storage for the float tracking variables.

- mod_forces.F
- This provides the storage for the surface and bottom forcing fields.

- mod_fourdvar.F
- If either FOUR_DVAR or VERIFICATION is
**#defined**, this will set up the variational data assimilation variables.

- mod_grid.F
- This provides the storage for the model grid fields.

- mod_iounits.F
- This contains a number of variables used by the I/O, including file names and file IDs.

- mod_kinds.F
- This contains the integers associated with the various integer and real Fortran types. If you find more systems supporting 128-bit reals, let us know.

- mod_mixing.F
- This contains the arrays for the horizontal and vertical mixing parameterizations, including those used by the various optional schemes.

- mod_ncparam.F
- This contains all sorts of parameters relating to the NetCDF I/O files, including that read from the
**varinfo.dat**file. The parameter MT is set here, giving the maximum number of variables that can be read.

- mod_nesting.F
- If NESTING is
**#defined**, this module defines generic structures used for nesting, composed, and mosaic grids.

- mod_netcdf.F
- This brings in
**netcdf.mod**and defines a few type variables based on it.

- mod_obs.F
- If either ASSIMILATION or NUDGING is
**#defined**, this contains variables for the observed fields.

- mod_ocean.F
- This contains the 2-D and 3-D fields of the primitive ocean variables and optionally the sediment variables.

- mod_parallel.F
- This sets up some global variables such as Master, which is true for the master thread or process. It also initializes the internal ROMS profiling arrays.

- mod_param.F
- This contains the sizes of each grid used, plus things like how many tidal constituents are being used. Many of these are read from the input files during initialization, not known at compile time.

- mod_scalars.F
- This contains a large number of scalars, i.e. values which don't have spatial dependence. Some are fixed constants such as itemp referring to the temperature tracer. Others could have a different value on each grid.

- mod_sediment.F
- If either SEDIMENT or BBL_MODEL is
**#defined**, this contains parameters for the respective model.

- mod_sources.F
- If one of UV_PSOURCE, TS_PSOURCE or Q_PSOURCE is
**#defined**, this contains the variables used for point sources.

- mod_stepping.F
- This contains the timestepping variables used to point to the relevant time level.

- mod_storage.F
- If PROPAGATOR is
**#defined**, this module defines the work space for the Generalized Stability Theory (GST) Analysis package (ARPACK).

- mod_strings.F
- This contains strings such as a title for the run, the list of
**cpp**options defined, and the names of the sections of code being profiled.

- mod_tides.F
- If one of SSH_TIDES, UV_TIDES or POT_TIDES is
**#defined**, this contains the tidal variables. Also the AVERAGES_DETIDE variables if required.