mom_is_diag_mediator module reference

The subroutines here provide convenient wrappers to the FMS diag_manager interfaces with additional diagnostic capabilities.

More…

Data Types

axes_grp

A group of 1D axes that comprise a 1D/2D/3D mesh.

diag_type

This type is used to represent a diagnostic at the diag_mediator level.

diag_ctrl

The diag_ctrl() data type contains times to regulate diagnostics along with masks and axes to use with diagnostics, and a list of structures with data about each diagnostic.

Functions/Subroutines

set_is_axes_info()

Set up the grid and axis information for use by the ice shelf model.

diag_register_area_ids()

Attaches the id of cell areas to axes groups for use with cell_measures.

define_axes_group()

Define a group of "axes" from a list of handles and associate a mask with it.

set_is_diag_mediator_grid()

Set up the array extents for doing diagnostics.

post_is_data_0d()

Make a real ice shelf scalar diagnostic available for averaging or output.

post_is_data_2d()

Make a real 2-d array diagnostic available for averaging or output.

post_data_2d_low()

Make a real 2-d array diagnostic available for averaging or output using a diag_type() instead of an integer id.

enable_averaging()

Enable the accumulation of time averages over the specified time interval.

enable_averages()

Enable the accumulation of time averages over the specified time interval in time units.

disable_averaging()

Call this subroutine to avoid averaging any offered fields.

query_averaging_enabled()

Indicate whether averaging diagnostics is currently enabled.

mom_is_diag_mediator_infrastructure_init()

This subroutine initializes the diag_manager via the MOM6 infrastructure.

get_diag_time_end()

This function returns the valid end time for use with diagnostics that are handled outside of the MOM6 diagnostics infrastructure.

register_mom_is_diag_field()

Returns the "diag_mediator" handle for a group (native, CMOR, ...) of diagnostics derived from one field.

register_diag_field_expand_cmor()

Returns True if either the native or CMOR version of the diagnostic were registered.

register_diag_field_expand_axes()

Returns an FMS id from register_diag_field_fms (the diag_manager routine) after expanding axes (axes-group) into handles and conditionally adding an FMS area_id for cell_measures.

add_diag_to_list()

Create a diagnostic type and attached to list.

attach_cell_methods()

Attaches "cell_methods" attribute to a variable based on defaults for axes_grp() or optional arguments.

register_scalar_field_axes()

Registers a non-array scalar diagnostic, returning an integer handle.

register_scalar_field_cs()

Registers a non-array scalar diagnostic, returning an integer handle.

register_mom_is_static_field()

Registers a static diagnostic, returning an integer handle.

describe_option()

Add a description of an option to the documentation file.

mom_is_diag_mediator_init()

Initialize the MOM_IS diag_mediator and opens the available diagnostics file, if appropriate.

diag_masks_set()

Sets up the 2d masks for native diagnostics.

mom_is_diag_mediator_close_registration()

Prevent the registration of additional diagnostics, so that the creation of files can occur.

mom_is_diag_mediator_end()

Deallocate memory associated with the MOM_IS diag mediator.

get_new_diag_id()

Returns a new diagnostic id, it may be necessary to expand the diagnostics array.

initialize_diag_type()

Initializes a diag_type() (used after allocating new memory) (used after allocating new memory)

alloc_diag_with_id()

Make a new diagnostic.

log_available_diag()

Log a diagnostic to the available diagnostics file.

log_chksum_diag()

Log the diagnostic chksum to the chksum diag file.

found_in_diagtable()

Fakes a register of a diagnostic to find out if an obsolete parameter appears in the diag_table.

mom_is_diag_send_complete()

Finishes the diag manager reduction methods as needed for the time_step.

Detailed Description

The subroutines here provide convenient wrappers to the FMS diag_manager interfaces with additional diagnostic capabilities.

Type Documentation

type  mom_is_diag_mediator/axes_grp

A group of 1D axes that comprise a 1D/2D/3D mesh.

Type fields:
  • % id :: character(len=15) The id string for this particular combination of handles.

  • % rank :: integer Number of dimensions in the list of axes.

  • % handles :: integer, dimension(:), allocatable Handles to 1D axes.

  • % diag_cs :: type(diag_ctrl), pointer Circular link back to the main diagnostics control structure (Used to avoid passing said structure into every possible call).

  • % x_cell_method :: character(len=9) Default nature of data representation, if axes group includes x-direction.

  • % y_cell_method :: character(len=9) Default nature of data representation, if axes group includes y-direction.

  • % is_h_point :: logical If true, indicates that this axes group is for an h-point located field.

  • % is_q_point :: logical If true, indicates that this axes group is for a q-point located field.

  • % is_u_point :: logical If true, indicates that this axes group is for a u-point located field.

  • % is_v_point :: logical If true, indicates that this axes group is for a v-point located field.

  • % id_area :: integer The diag_manager id for area to be used for cell_measure of variables with this

  • % mask2d :: real, dimension(:,:), pointer Mask for 2d (x-y) axes [nondim].

  • % mask2d_comp :: real, dimension(:,:), pointer Mask for 2-d axes on the computational domain for this diagnostic [nondim].

[source]

type  mom_is_diag_mediator/diag_type

This type is used to represent a diagnostic at the diag_mediator level.

Type fields:
  • % in_use :: logical, private True if this entry is being used.

  • % fms_diag_id :: integer, private Underlying FMS diag_manager id.

  • % debug_str :: character(len=64), private The diagnostic name and module for FATAL errors and debugging.

  • % axes :: type(axes_grp), pointer, private The axis group for this diagnostic.

  • % next :: type(diag_type), pointer, private Pointer to the next diagnostic.

  • % conversion_factor :: real, private If non-zero, a factor to multiply data by before posting to FMS, often including factors to undo internal scaling in units of [a A-1 ~> 1].

[source]

type  mom_is_diag_mediator/diag_ctrl

The diag_ctrl() data type contains times to regulate diagnostics along with masks and axes to use with diagnostics, and a list of structures with data about each diagnostic. data type contains times to regulate diagnostics along with masks and axes to use with diagnostics, and a list of structures with data about each diagnostic.

Type fields:
  • % axesb1 :: type(axes_grp) The following are 3D and 2D axis groups defined for output. The names indicate the horizontal locations (B, T, Cu, or Cv) and vertical locations (here just 1).

  • % axest1 :: type(axes_grp) The following are 3D and 2D axis groups defined for output. The names indicate the horizontal locations (B, T, Cu, or Cv) and vertical locations (here just 1).

  • % axescu1 :: type(axes_grp) The following are 3D and 2D axis groups defined for output. The names indicate the horizontal locations (B, T, Cu, or Cv) and vertical locations (here just 1).

  • % axescv1 :: type(axes_grp) The following are 3D and 2D axis groups defined for output. The names indicate the horizontal locations (B, T, Cu, or Cv) and vertical locations (here just 1).

  • % available_diag_doc_unit :: integer The unit number of a diagnostic documentation file. This file is open if available_diag_doc_unit is > 0.

  • % chksum_iounit :: integer The unit number of a diagnostic documentation file. This file is open if available_diag_doc_unit is > 0.

  • % diag_as_chksum :: logical If true, log chksums in a text file instead of posting diagnostics.

  • % show_call_tree :: logical Display the call tree while running. Set by VERBOSITY level.

  • % index_space_axes :: logical If true, diagnostic horizontal coordinates axes are in index space.

  • % is :: integer The start i-index of cell centers within the computational domain.

  • % ie :: integer The end i-index of cell centers within the computational domain.

  • % js :: integer The start j-index of cell centers within the computational domain.

  • % je :: integer The end j-index of cell centers within the computational domain.

  • % isd :: integer The start i-index of cell centers within the data domain.

  • % ied :: integer The end i-index of cell centers within the data domain.

  • % jsd :: integer The start j-index of cell centers within the data domain.

  • % jed :: integer The end j-index of cell centers within the data domain.

  • % time_int :: real The time interval for any fields that are offered for averaging [s].

  • % time_end :: type(time_type) The end time of the valid interval for any offered field.

  • % ave_enabled :: logical True if averaging is enabled.

  • % axesnull :: type(axes_grp) An axis group for scalars.

  • % mask2dt :: real, dimension(:,:), pointer 2D mask array for cell-center points [nondim]

  • % mask2dbu :: real, dimension(:,:), pointer 2D mask array for cell-corner points [nondim]

  • % mask2dcu :: real, dimension(:,:), pointer 2D mask array for east-face points [nondim]

  • % mask2dcv :: real, dimension(:,:), pointer 2D mask array for north-face points [nondim]

  • % mask2dt_comp :: real, dimension(:,:), pointer 2D cell-center mask on the computational domain [nondim]

  • % diags :: type(diag_type), dimension(:), allocatable The list of diagnostics.

  • % next_free_diag_id :: integer The next unused diagnostic ID.

  • % missing_value :: real default missing value to be sent to ALL diagnostics registrations [various]

  • % g :: type(ocean_grid_type), pointer The ocean grid type.

  • % us :: type(unit_scale_type), pointer A dimensional unit scaling type.

  • % num_chksum_diags :: integer Number of checksum-only diagnostics.

[source]

Function/Subroutine Documentation

subroutine mom_is_diag_mediator/set_is_axes_info(G, diag_cs, axes_set_name)

Set up the grid and axis information for use by the ice shelf model.

Parameters:
  • g :: [in] The horizontal grid type

  • diag_cs :: diag_cs [inout] A structure that is used to regulate diagnostic output

  • axes_set_name :: axes_set_name [in] A name to use for this set of axes. The default is “ice”.

Call to:

define_axes_group

[source]

subroutine mom_is_diag_mediator/diag_register_area_ids(diag_cs, id_area_t, id_area_q)

Attaches the id of cell areas to axes groups for use with cell_measures.

Parameters:
  • diag_cs :: diag_cs [inout] Diagnostics control structure

  • id_area_t :: id_area_t [in] Diag_mediator id for area of h-cells

  • id_area_q :: id_area_q [in] Diag_mediator id for area of q-cells

[source]

subroutine mom_is_diag_mediator/define_axes_group(diag_cs, handles, axes, x_cell_method, y_cell_method, is_h_point, is_q_point, is_u_point, is_v_point)

Define a group of “axes” from a list of handles and associate a mask with it.

Parameters:
  • diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

  • handles :: handles [in] A list of 1D axis handles that define the axis group

  • axes :: axes [out] The group of axes that is set up here

  • x_cell_method :: x_cell_method [in] A x-direction cell method used to construct the “cell_methods” attribute in CF convention

  • y_cell_method :: y_cell_method [in] A y-direction cell method used to construct the “cell_methods” attribute in CF convention

  • is_h_point :: is_h_point [in] If true, indicates this axes group for h-point located fields

  • is_q_point :: is_q_point [in] If true, indicates this axes group for q-point located fields

  • is_u_point :: is_u_point [in] If true, indicates this axes group for u-point located fields

  • is_v_point :: is_v_point [in] If true, indicates this axes group for v-point located fields

Call to:

mom_string_functions::ints_to_string

Called from:

set_is_axes_info

[source]

subroutine mom_is_diag_mediator/set_is_diag_mediator_grid(G, diag_cs)

Set up the array extents for doing diagnostics.

Parameters:
  • g :: [inout] The horizontal grid type

  • diag_cs :: diag_cs [inout] Structure used to regulate diagnostic output

[source]

subroutine mom_is_diag_mediator/post_is_data_0d(diag_field_id, field, diag_cs, is_static)

Make a real ice shelf scalar diagnostic available for averaging or output.

Parameters:
  • diag_field_id :: diag_field_id [in] The id for an output variable returned by a previous call to register_MOM_IS_diag_field.

  • field :: field [in] real value being offered for output or averaging in internally scaled arbitrary units [A ~> a]

  • diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

  • is_static :: is_static [in] If true, this is a static field that is always offered.

[source]

subroutine mom_is_diag_mediator/post_is_data_2d(diag_field_id, field, diag_cs, is_static, mask)

Make a real 2-d array diagnostic available for averaging or output.

Parameters:
  • diag_field_id :: diag_field_id [in] The id for an output variable returned by a previous call to register_MOM_IS_diag_field.

  • field :: field [in] 2-d array being offered for output or averaging in internally scaled arbitrary units [A ~> a]

  • diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

  • is_static :: is_static [in] If true, this is a static field that is always offered.

  • mask :: mask [in] If present, use this real array as the data mask [nondim]

[source]

subroutine mom_is_diag_mediator/post_data_2d_low(diag, field, diag_cs, is_static, mask)

Make a real 2-d array diagnostic available for averaging or output using a diag_type() instead of an integer id. instead of an integer id.

Parameters:
  • diag :: diag [in] A structure describing the diagnostic to post

  • field :: field [in] 2-d array being offered for output or averaging in internally scaled arbitrary units [A ~> a]

  • diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

  • is_static :: is_static [in] If true, this is a static field that is always offered.

  • mask :: mask [in] If present, use this real array as the data mask [nondim]

Called from:

mom_is_diag_mediator::post_is_data::post_is_data_2d

[source]

subroutine mom_is_diag_mediator/enable_averaging(time_int_in, time_end_in, diag_cs)

Enable the accumulation of time averages over the specified time interval.

Parameters:
  • time_int_in :: time_int_in [in] The time interval [s] over which any values that are offered are valid.

  • time_end_in :: time_end_in [in] The end time of the valid interval

  • diag_cs :: diag_cs [inout] Structure used to regulate diagnostic output

[source]

subroutine mom_is_diag_mediator/enable_averages(time_int, time_end, diag_CS, T_to_s)

Enable the accumulation of time averages over the specified time interval in time units.

Parameters:
  • time_int :: time_int [in] The time interval over which any values that are offered are valid [T ~> s].

  • time_end :: time_end [in] The end time of the valid interval.

  • diag_cs :: [inout] A structure that is used to regulate diagnostic output

  • t_to_s :: [in] A conversion factor for time_int to seconds [s T-1 ~> 1].

Called from:

mom_ice_shelf_dynamics::is_dynamics_post_data

[source]

subroutine mom_is_diag_mediator/disable_averaging(diag_cs)

Call this subroutine to avoid averaging any offered fields.

Parameters:

diag_cs :: diag_cs [inout] Structure used to regulate diagnostic output

Called from:

mom_ice_shelf_dynamics::is_dynamics_post_data

[source]

function  mom_is_diag_mediator/query_averaging_enabled(diag_cs, time_int, time_end)

Indicate whether averaging diagnostics is currently enabled.

Parameters:
  • diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

  • time_int :: time_int [out] Current setting of diag_cstime_int [s]

  • time_end :: time_end [out] Current setting of diag_cstime_end

[source]

subroutine mom_is_diag_mediator/mom_is_diag_mediator_infrastructure_init(err_msg)

This subroutine initializes the diag_manager via the MOM6 infrastructure.

Parameters:

err_msg :: err_msg [out] An error message

[source]

function  mom_is_diag_mediator/get_diag_time_end(diag_cs)

This function returns the valid end time for use with diagnostics that are handled outside of the MOM6 diagnostics infrastructure.

Parameters:

diag_cs :: diag_cs [in] Structure used to regulate diagnostic output

[source]

function  mom_is_diag_mediator/register_mom_is_diag_field(module_name, field_name, axes_in, init_time, long_name, units, missing_value, range, mask_variant, standard_name, verbose, do_not_log, err_msg, interp_method, tile_count, cmor_field_name, cmor_long_name, cmor_units, cmor_standard_name, cell_methods, x_cell_method, y_cell_method, conversion)

Returns the “diag_mediator” handle for a group (native, CMOR, …) of diagnostics derived from one field.

Return:

undefined :: The returned diagnostic handle

Parameters:
  • module_name :: module_name [in] Name of this module, usually “ice_model”

  • field_name :: field_name [in] Name of the diagnostic field

  • axes_in :: axes_in [in] Container with up to 3 integer handles that indicates axes for this field

  • init_time :: init_time [in] Time at which a field is first available?

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable (not used in MOM?) in arbitrary units [a]

  • mask_variant :: mask_variant [in] If true a logical mask must be provided with post_IS_data calls (not used in MOM?)

  • verbose :: verbose [in] If true, FMS is verbose (not used in MOM?)

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • err_msg :: err_msg [out] String into which an error message might be placed (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • tile_count :: tile_count [in] no clue (not used in MOM?)

  • cmor_field_name :: cmor_field_name [in] CMOR name of a field

  • cmor_long_name :: cmor_long_name [in] CMOR long name of a field

  • cmor_units :: cmor_units [in] CMOR units of a field

  • cmor_standard_name :: cmor_standard_name [in] CMOR standardized name associated with a field

  • cell_methods :: cell_methods [in] String to append as cell_methods attribute. Use ‘’ to have no attribute. If present, this overrides the default constructed from the default for each individual axis direction.

  • x_cell_method :: x_cell_method [in] Specifies the cell method for the x-direction. Use ‘’ have no method.

  • y_cell_method :: y_cell_method [in] Specifies the cell method for the y-direction. Use ‘’ have no method.

  • conversion :: conversion [in] A value to multiply data by before writing to files, often including factors to undo internal scaling and in units of [a A-1 ~> 1]

Call to:

attach_cell_methods log_available_diag register_diag_field_expand_cmor mom_string_functions::trim_trailing_commas

[source]

function  mom_is_diag_mediator/register_diag_field_expand_cmor(dm_id, module_name, field_name, axes, init_time, long_name, units, missing_value, range, mask_variant, standard_name, verbose, do_not_log, err_msg, interp_method, tile_count, cmor_field_name, cmor_long_name, cmor_units, cmor_standard_name, cell_methods, x_cell_method, y_cell_method, conversion)

Returns True if either the native or CMOR version of the diagnostic were registered. Updates ‘dm_id’ after calling register_diag_field_expand_axes() for both native and CMOR variants of the field. for both native and CMOR variants of the field.

Parameters:
  • dm_id :: dm_id [inout] The diag_mediator ID for this diagnostic group

  • module_name :: module_name [in] Name of this module, usually “ice_model” or “ice_model_fast”

  • field_name :: field_name [in] Name of the diagnostic field

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • init_time :: init_time [in] Time at which a field is first available?

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable (not used in MOM?) in arbitrary units [a]

  • mask_variant :: mask_variant [in] If true a logical mask must be provided with post_data calls (not used in MOM?)

  • verbose :: verbose [in] If true, FMS is verbose (not used in MOM?)

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • err_msg :: err_msg [out] String into which an error message might be placed (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • tile_count :: tile_count [in] no clue (not used in MOM?)

  • cmor_field_name :: cmor_field_name [in] CMOR name of a field

  • cmor_long_name :: cmor_long_name [in] CMOR long name of a field

  • cmor_units :: cmor_units [in] CMOR units of a field

  • cmor_standard_name :: cmor_standard_name [in] CMOR standardized name associated with a field

  • cell_methods :: cell_methods [in] String to append as cell_methods attribute. Use ‘’ to have no attribute. If present, this overrides the default constructed from the default for each individual axis direction.

  • x_cell_method :: x_cell_method [in] Specifies the cell method for the x-direction. Use ‘’ have no method.

  • y_cell_method :: y_cell_method [in] Specifies the cell method for the y-direction. Use ‘’ have no method.

  • conversion :: conversion [in] A value to multiply data by before writing to files, often including factors to undo internal scaling and in units of [a A-1 ~> 1]

Call to:

add_diag_to_list attach_cell_methods register_diag_field_expand_axes

Called from:

register_mom_is_diag_field

[source]

function  mom_is_diag_mediator/register_diag_field_expand_axes(module_name, field_name, axes, init_time, long_name, units, missing_value, range, mask_variant, standard_name, verbose, do_not_log, err_msg, interp_method, tile_count)

Returns an FMS id from register_diag_field_fms (the diag_manager routine) after expanding axes (axes-group) into handles and conditionally adding an FMS area_id for cell_measures.

Parameters:
  • module_name :: module_name [in] Name of this module, usually “ocean_model” or “ice_shelf_model”

  • field_name :: field_name [in] Name of the diagnostic field

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • init_time :: init_time [in] Time at which a field is first available?

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable (not used in MOM?) in arbitrary units [a]

  • mask_variant :: mask_variant [in] If true a logical mask must be provided with post_data calls (not used in MOM?)

  • verbose :: verbose [in] If true, FMS is verbose (not used in MOM?)

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • err_msg :: err_msg [out] String into which an error message might be placed (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • tile_count :: tile_count [in] no clue (not used in MOM?)

Called from:

register_diag_field_expand_cmor

[source]

subroutine mom_is_diag_mediator/add_diag_to_list(diag_cs, dm_id, fms_id, this_diag, axes, module_name, field_name)

Create a diagnostic type and attached to list.

Parameters:
  • diag_cs :: diag_cs Diagnostics mediator control structure

  • dm_id :: dm_id [inout] The diag_mediator ID for this diagnostic group

  • fms_id :: fms_id [in] The FMS diag_manager ID for this diagnostic

  • this_diag :: this_diag This diagnostic

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • module_name :: module_name [in] Name of this module, usually “ocean_model” or “ice_shelf_model”

  • field_name :: field_name [in] Name of diagnostic

Call to:

alloc_diag_with_id get_new_diag_id

Called from:

register_diag_field_expand_cmor

[source]

subroutine mom_is_diag_mediator/attach_cell_methods(id, axes, ostring, cell_methods, x_cell_method, y_cell_method)

Attaches “cell_methods” attribute to a variable based on defaults for axes_grp() or optional arguments. or optional arguments.

Parameters:
  • id :: id [in] Handle to diagnostic

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • ostring :: ostring [out] The cell_methods strings that would appear in the file

  • cell_methods :: cell_methods [in] String to append as cell_methods attribute. Use ‘’ to have no attribute. If present, this overrides the default constructed from the default for each individual axis direction.

  • x_cell_method :: x_cell_method [in] Specifies the cell method for the x-direction. Use ‘’ have no method.

  • y_cell_method :: y_cell_method [in] Specifies the cell method for the y-direction. Use ‘’ have no method.

Called from:

register_diag_field_expand_cmor register_mom_is_diag_field

[source]

function  mom_is_diag_mediator/register_scalar_field_axes(module_name, field_name, axes, init_time, long_name, units, missing_value, range, standard_name, do_not_log, err_msg, interp_method, cmor_field_name, cmor_long_name, cmor_units, cmor_standard_name, conversion)

Registers a non-array scalar diagnostic, returning an integer handle.

Return:

undefined :: An integer handle for a diagnostic array.

Parameters:
  • module_name :: module_name [in] Name of this module, usually “ocean_model” or “ice_shelf_model”

  • field_name :: field_name [in] Name of the diagnostic field

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • init_time :: init_time [in] Time at which a field is first available?

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable (not used in MOM?) in arbitrary units [a]

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • err_msg :: err_msg [out] String into which an error message might be placed (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • cmor_field_name :: cmor_field_name [in] CMOR name of a field

  • cmor_long_name :: cmor_long_name [in] CMOR long name of a field

  • cmor_units :: cmor_units [in] CMOR units of a field

  • cmor_standard_name :: cmor_standard_name [in] CMOR standardized name associated with a field

  • conversion :: conversion [in] A value to multiply data by before writing to files, often including factors to undo internal scaling and in units of [a A-1 ~> 1]

[source]

function  mom_is_diag_mediator/register_scalar_field_cs(module_name, field_name, init_time, diag_cs, long_name, units, missing_value, range, standard_name, do_not_log, err_msg, interp_method, cmor_field_name, cmor_long_name, cmor_units, cmor_standard_name, conversion)

Registers a non-array scalar diagnostic, returning an integer handle.

Return:

undefined :: An integer handle for a diagnostic array.

Parameters:
  • module_name :: module_name [in] Name of this module, usually “ocean_model” or “ice_shelf_model”

  • field_name :: field_name [in] Name of the diagnostic field

  • init_time :: init_time [in] Time at which a field is first available?

  • diag_cs :: diag_cs [inout] Structure used to regulate diagnostic output

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable (not used in MOM?) in arbitrary units [a]

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • err_msg :: err_msg [out] String into which an error message might be placed (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • cmor_field_name :: cmor_field_name [in] CMOR name of a field

  • cmor_long_name :: cmor_long_name [in] CMOR long name of a field

  • cmor_units :: cmor_units [in] CMOR units of a field

  • cmor_standard_name :: cmor_standard_name [in] CMOR standardized name associated with a field

  • conversion :: conversion [in] A value to multiply data by before writing to files, often including factors to undo internal scaling and in units of [a A-1 ~> 1]

Called from:

mom_is_diag_mediator::register_mom_is_scalar_field::register_scalar_field_axes

[source]

function  mom_is_diag_mediator/register_mom_is_static_field(module_name, field_name, axes, long_name, units, missing_value, range, mask_variant, standard_name, do_not_log, interp_method, tile_count, cmor_field_name, cmor_long_name, cmor_units, cmor_standard_name, area, x_cell_method, y_cell_method, area_cell_method, conversion)

Registers a static diagnostic, returning an integer handle.

Return:

undefined :: An integer handle for a diagnostic array.

Parameters:
  • module_name :: module_name [in] Name of this module, usually “ocean_model” or “ice_shelf_model”

  • field_name :: field_name [in] Name of the diagnostic field

  • axes :: axes [in] Container with up to 3 integer handles that indicates axes for this field

  • long_name :: long_name [in] Long name of a field.

  • units :: units [in] Units of a field.

  • standard_name :: standard_name [in] Standardized name associated with a field

  • missing_value :: missing_value [in] A value that indicates missing values in output files, in unscaled arbitrary units [a]

  • range :: range [in] Valid range of a variable in arbitrary units [a]

  • mask_variant :: mask_variant [in] If true a logical mask must be provided with post_IS_data calls (not used in MOM?)

  • do_not_log :: do_not_log [in] If true, do not log something (not used in MOM?)

  • interp_method :: interp_method [in] If ‘none’ indicates the field should not be interpolated as a scalar

  • tile_count :: tile_count [in] no clue (not used in MOM?)

  • cmor_field_name :: cmor_field_name [in] CMOR name of a field

  • cmor_long_name :: cmor_long_name [in] CMOR long name of a field

  • cmor_units :: cmor_units [in] CMOR units of a field

  • cmor_standard_name :: cmor_standard_name [in] CMOR standardized name associated with a field

  • area :: area [in] fms_id for area_t

  • x_cell_method :: x_cell_method [in] Specifies the cell method for the x-direction.

  • y_cell_method :: y_cell_method [in] Specifies the cell method for the y-direction.

  • area_cell_method :: area_cell_method [in] Specifies the cell method for area

  • conversion :: conversion [in] A value to multiply data by before writing to files, often including factors to undo internal scaling and in units of [a A-1 ~> 1]

Call to:

alloc_diag_with_id get_new_diag_id log_available_diag mom_string_functions::trim_trailing_commas

[source]

subroutine mom_is_diag_mediator/describe_option(opt_name, value, diag_CS)

Add a description of an option to the documentation file.

Parameters:
  • opt_name :: opt_name [in] The name of the option

  • value :: value [in] The value of the option

  • diag_cs :: [in] Structure used to regulate diagnostic output

Called from:

log_available_diag

[source]

subroutine mom_is_diag_mediator/mom_is_diag_mediator_init(G, US, param_file, diag_cs, component, err_msg, doc_file_dir)

Initialize the MOM_IS diag_mediator and opens the available diagnostics file, if appropriate.

Parameters:
  • g :: [inout] The horizontal grid type

  • us :: [in] A dimensional unit scaling type

  • param_file :: param_file [in] A structure to parse for run-time parameters

  • diag_cs :: diag_cs [inout] A structure that is used to regulate diagnostic output

  • component :: component [in] An optional component name

  • err_msg :: err_msg [out] A string for a returned error message

  • doc_file_dir :: doc_file_dir [in] A directory in which to create the file

Call to:

diag_masks_set mom_io::get_filename_appendix id_clock_diag_mediator initialize_diag_type mom_string_functions::slasher mom_string_functions::uppercase

[source]

subroutine mom_is_diag_mediator/diag_masks_set(G, missing_value, diag_cs)

Sets up the 2d masks for native diagnostics.

Parameters:
  • g :: [in] The horizontal grid type

  • missing_value :: missing_value [in] A fill value for missing points

  • diag_cs :: diag_cs [inout] Structure used to regulate diagnostic output

Called from:

mom_is_diag_mediator_init

[source]

subroutine mom_is_diag_mediator/mom_is_diag_mediator_close_registration(diag_CS)

Prevent the registration of additional diagnostics, so that the creation of files can occur.

Parameters:

diag_cs :: [inout] Structure used to regulate diagnostic output

Called from:

mom_ice_shelf::initialize_ice_shelf

[source]

subroutine mom_is_diag_mediator/mom_is_diag_mediator_end(diag_CS)

Deallocate memory associated with the MOM_IS diag mediator.

Parameters:

diag_cs :: [inout] Structure used to regulate diagnostic output

[source]

function  mom_is_diag_mediator/get_new_diag_id(diag_cs)

Returns a new diagnostic id, it may be necessary to expand the diagnostics array.

Parameters:

diag_cs :: diag_cs [inout] Diagnostics control structure

Call to:

initialize_diag_type

Called from:

add_diag_to_list register_mom_is_static_field mom_is_diag_mediator::register_mom_is_scalar_field::register_scalar_field_cs

[source]

subroutine mom_is_diag_mediator/initialize_diag_type(diag)

Initializes a diag_type() (used after allocating new memory) (used after allocating new memory)

Parameters:

diag :: diag [inout] diag_type() to be initialized to be initialized

Called from:

get_new_diag_id mom_is_diag_mediator_init

[source]

subroutine mom_is_diag_mediator/alloc_diag_with_id(diag_id, diag_cs, diag)

Make a new diagnostic. Either use memory which is in the array of ‘primary’ diagnostics, or if that is in use, insert it to the list of secondary diags.

Parameters:
  • diag_id :: diag_id [in] id for the diagnostic

  • diag_cs :: diag_cs [inout] structure used to regulate diagnostic output

  • diag :: diag structure representing a diagnostic (inout)

Called from:

add_diag_to_list register_mom_is_static_field mom_is_diag_mediator::register_mom_is_scalar_field::register_scalar_field_cs

[source]

subroutine mom_is_diag_mediator/log_available_diag(used, module_name, field_name, cell_methods_string, comment, diag_CS, long_name, units, standard_name, variants, dimensions)

Log a diagnostic to the available diagnostics file.

Parameters:
  • used :: used [in] Whether this diagnostic was in the diag_table or not

  • module_name :: module_name [in] Name of the diagnostic module

  • field_name :: field_name [in] Name of this diagnostic field

  • cell_methods_string :: cell_methods_string [in] The spatial component of the CF cell_methods attribute

  • comment :: comment [in] A comment to append after [Used|Unused]

  • diag_cs :: [in] The diagnotics control structure

  • dimensions :: dimensions [in] Descriptor of the horizontal and vertical dimensions

  • long_name :: long_name [in] CF long name of diagnostic

  • units :: units [in] Units for diagnostic

  • standard_name :: standard_name [in] CF standardized name of diagnostic

  • variants :: variants [in] Alternate modules and variable names for this diagnostic and derived diagnostics

Call to:

describe_option

Called from:

register_mom_is_diag_field register_mom_is_static_field mom_is_diag_mediator::register_mom_is_scalar_field::register_scalar_field_cs

[source]

subroutine mom_is_diag_mediator/log_chksum_diag(docunit, description, chksum)

Log the diagnostic chksum to the chksum diag file.

Parameters:
  • docunit :: docunit [in] Handle of the log file

  • description :: description [in] Name of the diagnostic module

  • chksum :: chksum [in] chksum of the diagnostic

[source]

function  mom_is_diag_mediator/found_in_diagtable(diag, varName)

Fakes a register of a diagnostic to find out if an obsolete parameter appears in the diag_table.

Parameters:
  • diag :: diag [in] A structure used to control diagnostics.

  • varname :: [in] The obsolete diagnostic name

[source]

subroutine mom_is_diag_mediator/mom_is_diag_send_complete()

Finishes the diag manager reduction methods as needed for the time_step.

[source]

[source]