# mom_coupler_types module reference¶

This module provides coupler type interfaces for use by MOM6.

More…

## Functions/Subroutines¶

 ct_spawn_1d_2d() Generate a 2-D coupler type using a 1-D coupler type as a template. ct_spawn_1d_3d() Generate a 3-D coupler type using a 1-D coupler type as a template. ct_spawn_2d_2d() Generate one 2-D coupler type using another 2-D coupler type as a template. ct_spawn_2d_3d() Generate a 3-D coupler type using a 2-D coupler type as a template. ct_spawn_3d_2d() Generate a 2-D coupler type using a 3-D coupler type as a template. ct_spawn_3d_3d() Generate a 3-D coupler type using another 3-D coupler type as a template. ct_copy_data_2d() Copy all elements of the data in a coupler_2d_bc_type into another. ct_copy_data_3d() Copy all elements of the data in a coupler_3d_bc_type into another. ct_copy_data_2d_3d() Copy all elements of the data in a coupler_2d_bc_type into a coupler_3d_bc_type. ct_increment_data_2d() Increment data in all elements of one coupler_2d_bc_type with the data from another. ct_increment_data_3d() Increment data in all elements of one coupler_3d_bc_type with the data from another. ct_increment_data_2d_3d() Increment data in the elements of a coupler_2d_bc_type with weighted averages of elements of a coupler_3d_bc_type. ct_rescale_data_2d() Rescales the fields in the elements of a coupler_2d_bc_type by multiplying by a factor scale. ct_rescale_data_3d() Rescales the fields in the elements of a coupler_3d_bc_type by multiplying by a factor scale. ct_redistribute_data_2d() Redistribute the data in all elements of one coupler_2d_bc_type into another, which may be on different processors with a different decomposition. ct_redistribute_data_3d() Redistribute the data in all elements of one coupler_3d_bc_type into another, which may be on different processors with a different decomposition. coupler_type_data_override() Potentially override the values in a coupler_2d_bc_type. extract_coupler_type_data() Extract a 2d field from a coupler_2d_bc_type into a two-dimensional array, using a MOM-specific interface. set_coupler_type_data() Set single 2d field in coupler_2d_bc_type from a two-dimensional array, using a MOM-specific interface. coupler_type_set_diags() Register the diagnostics of a coupler_2d_bc_type. coupler_type_send_data() Write out all diagnostics of elements of a coupler_2d_bc_type. ct_write_chksums_2d() Write out checksums for the elements of a coupler_2d_bc_type. ct_write_chksums_3d() Write out checksums for the elements of a coupler_3d_bc_type. ct_initialized_1d() Indicate whether a coupler_1d_bc_type has been initialized. ct_initialized_2d() Indicate whether a coupler_2d_bc_type has been initialized. ct_initialized_3d() Indicate whether a coupler_3d_bc_type has been initialized. ct_destructor_1d() Deallocate all data associated with a coupler_1d_bc_type. ct_destructor_2d() Deallocate all data associated with a coupler_2d_bc_type.

## Detailed Description¶

This module provides coupler type interfaces for use by MOM6.

## Function/Subroutine Documentation¶

subroutine mom_coupler_types/ct_spawn_1d_2d(var_in, var, idim, jdim, suffix, as_needed)

Generate a 2-D coupler type using a 1-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_spawn_1d_3d(var_in, var, idim, jdim, kdim, suffix, as_needed)

Generate a 3-D coupler type using a 1-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• kdim :: [in] The array extents of the third dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_spawn_2d_2d(var_in, var, idim, jdim, suffix, as_needed)

Generate one 2-D coupler type using another 2-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_spawn_2d_3d(var_in, var, idim, jdim, kdim, suffix, as_needed)

Generate a 3-D coupler type using a 2-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• kdim :: [in] The array extents of the third dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_spawn_3d_2d(var_in, var, idim, jdim, suffix, as_needed)

Generate a 2-D coupler type using a 3-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_spawn_3d_3d(var_in, var, idim, jdim, kdim, suffix, as_needed)

Generate a 3-D coupler type using another 3-D coupler type as a template.

Parameters
• var_in :: [in] structure from which to copy information

• var :: [inout] structure into which to copy information

• idim :: [in] The data and computational domain extents of the first dimension in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension in a non-decreasing list

• kdim :: [in] The array extents of the third dimension in a non-decreasing list

• suffix :: [in] optional suffix to make the name identifier unique

• as_needed :: [in] Only do the spawn if the target type (var) is not set and the parent type (var_in) is set.

subroutine mom_coupler_types/ct_copy_data_2d(var_in, var, halo_size, bc_index, field_index, exclude_flux_type, only_flux_type, pass_through_ice)

Copy all elements of the data in a coupler_2d_bc_type into another. Both must have the same array sizes.

Parameters
• var_in :: [in] BC_type structure with the data to copy

• var :: [inout] The recipient BC_type structure

• halo_size :: [in] The extent of the halo to copy; 0 by default

• bc_index :: [in] The index of the boundary condition that is being copied

• field_index :: [in] The index of the field in the boundary condition that is being copied

• exclude_flux_type :: [in] A string describing which types of fluxes to exclude from this copy.

• only_flux_type :: [in] A string describing which types of fluxes to include from this copy.

• pass_through_ice :: [in] If true, only copy BCs whose value of pass_through ice matches this

subroutine mom_coupler_types/ct_copy_data_3d(var_in, var, halo_size, bc_index, field_index, exclude_flux_type, only_flux_type, pass_through_ice)

Copy all elements of the data in a coupler_3d_bc_type into another. Both must have the same array sizes.

Parameters
• var_in :: [in] BC_type structure with the data to copy

• var :: [inout] The recipient BC_type structure

• halo_size :: [in] The extent of the halo to copy; 0 by default

• bc_index :: [in] The index of the boundary condition that is being copied

• field_index :: [in] The index of the field in the boundary condition that is being copied

• exclude_flux_type :: [in] A string describing which types of fluxes to exclude from this copy.

• only_flux_type :: [in] A string describing which types of fluxes to include from this copy.

• pass_through_ice :: [in] If true, only copy BCs whose value of pass_through ice matches this

subroutine mom_coupler_types/ct_copy_data_2d_3d(var_in, var, halo_size, bc_index, field_index, exclude_flux_type, only_flux_type, pass_through_ice, ind3_start, ind3_end)

Copy all elements of the data in a coupler_2d_bc_type into a coupler_3d_bc_type. Both must have the same array sizes for the first two dimensions, while the extent of the 3rd dimension that is being filled may be specified via optional arguments.

Parameters
• var_in :: [in] BC_type structure with the data to copy

• var :: [inout] The recipient BC_type structure

• halo_size :: [in] The extent of the halo to copy; 0 by default

• bc_index :: [in] The index of the boundary condition that is being copied

• field_index :: [in] The index of the field in the boundary condition that is being copied

• exclude_flux_type :: [in] A string describing which types of fluxes to exclude from this copy.

• only_flux_type :: [in] A string describing which types of fluxes to include from this copy.

• pass_through_ice :: [in] If true, only copy BCs whose value of pass_through ice matches this

• ind3_start :: [in] The starting value of the 3rd index of the 3d type to fill in.

• ind3_end :: [in] The ending value of the 3rd index of the 3d type to fill in.

subroutine mom_coupler_types/ct_increment_data_2d(var_in, var, halo_size, scale_factor, scale_prev)

Increment data in all elements of one coupler_2d_bc_type with the data from another. Both must have the same array sizes.

Parameters
• var_in :: [in] coupler_type structure with the data to add to the other type

• var :: [inout] The coupler_type structure whose fields are being incremented

• halo_size :: [in] The extent of the halo to increment; 0 by default

• scale_factor :: [in] A scaling factor for the data that is being added

• scale_prev :: [in] A scaling factor for the data that is already here

subroutine mom_coupler_types/ct_increment_data_3d(var_in, var, halo_size, scale_factor, scale_prev, exclude_flux_type, only_flux_type)

Increment data in all elements of one coupler_3d_bc_type with the data from another. Both must have the same array sizes.

Parameters
• var_in :: [in] coupler_type structure with the data to add to the other type

• var :: [inout] The coupler_type structure whose fields are being incremented

• halo_size :: [in] The extent of the halo to increment; 0 by default

• scale_factor :: [in] A scaling factor for the data that is being added

• scale_prev :: [in] A scaling factor for the data that is already here

• exclude_flux_type :: [in] A string describing which types of fluxes to exclude from this increment.

• only_flux_type :: [in] A string describing which types of fluxes to include from this increment.

subroutine mom_coupler_types/ct_increment_data_2d_3d(var_in, weights, var, halo_size)

Increment data in the elements of a coupler_2d_bc_type with weighted averages of elements of a coupler_3d_bc_type.

Parameters
• var_in :: [in] coupler_type structure with the data to add to the other type

• weights :: [in] An array of normalized weights for the 3d-data to increment the 2d-data. There is no renormalization, so if the weights do not sum to 1 in the 3rd dimension there may be adverse consequences!

• var :: [inout] The coupler_type structure whose fields are being incremented

• halo_size :: [in] The extent of the halo to increment; 0 by default

subroutine mom_coupler_types/ct_rescale_data_2d(var, scale)

Rescales the fields in the elements of a coupler_2d_bc_type by multiplying by a factor scale. If scale is 0, this is a direct assignment to 0, so that NaNs will not persist.

Parameters
• var :: [inout] The BC_type structure whose fields are being rescaled

• scale :: [in] A scaling factor to multiply fields by

subroutine mom_coupler_types/ct_rescale_data_3d(var, scale)

Rescales the fields in the elements of a coupler_3d_bc_type by multiplying by a factor scale. If scale is 0, this is a direct assignment to 0, so that NaNs will not persist.

Parameters
• var :: [inout] The BC_type structure whose fields are being rescaled

• scale :: [in] A scaling factor to multiply fields by

subroutine mom_coupler_types/ct_redistribute_data_2d(var_in, domain_in, var_out, domain_out, complete)

Redistribute the data in all elements of one coupler_2d_bc_type into another, which may be on different processors with a different decomposition.

Parameters
• var_in :: [in] BC_type structure with the data to copy

• domain_in :: [in] The FMS domain for the input structure

• var_out :: [inout] The recipient BC_type structure (data intent out)

• domain_out :: [in] The FMS domain for the output structure

• complete :: [in] If true, complete the updates

subroutine mom_coupler_types/ct_redistribute_data_3d(var_in, domain_in, var_out, domain_out, complete)

Redistribute the data in all elements of one coupler_3d_bc_type into another, which may be on different processors with a different decomposition.

Parameters
• var_in :: [in] BC_type structure with the data to copy

• domain_in :: [in] The FMS domain for the input structure

• var_out :: [inout] The recipient BC_type structure (data intent out)

• domain_out :: [in] The FMS domain for the output structure

• complete :: [in] If true, complete the updates

subroutine mom_coupler_types/coupler_type_data_override(gridname, var, time)

Potentially override the values in a coupler_2d_bc_type.

Parameters
• gridname :: [in] 3-character long model grid ID

• var :: [inout] BC_type structure to override

• time :: [in] The current model time

subroutine mom_coupler_types/extract_coupler_type_data(var_in, bc_index, array_out, scale_factor, halo_size, idim, jdim, field_index)

Extract a 2d field from a coupler_2d_bc_type into a two-dimensional array, using a MOM-specific interface.

Parameters
• var_in :: [in] BC_type structure with the data to extract

• bc_index :: [in] The index of the boundary condition that is being copied

• array_out :: [out] The recipient array for the field; its size must match the size of the data being copied unless idim and jdim are supplied.

• scale_factor :: [in] A scaling factor for the data that is being added

• halo_size :: [in] The extent of the halo to copy; 0 by default

• idim :: [in] The data and computational domain extents of the first dimension of the output array in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension of the output array in a non-decreasing list

• field_index :: [in] The index of the field in the boundary condition that is being copied, or the surface flux by default.

subroutine mom_coupler_types/set_coupler_type_data(array_in, bc_index, var, solubility, scale_factor, halo_size, idim, jdim, field_index)

Set single 2d field in coupler_2d_bc_type from a two-dimensional array, using a MOM-specific interface.

Parameters
• array_in :: [in] The source array for the field; its size must match the size of the data being copied unless idim and jdim are supplied.

• bc_index :: [in] The index of the boundary condition that is being copied

• var :: [inout] BC_type structure with the data to set

• solubility :: [in] If true and field index is missing, set the solubility field. Otherwise set the surface concentration (the default).

• scale_factor :: [in] A scaling factor for the data that is being added

• halo_size :: [in] The extent of the halo to copy; 0 by default

• idim :: [in] The data and computational domain extents of the first dimension of the output array in a non-decreasing list

• jdim :: [in] The data and computational domain extents of the second dimension of the output array in a non-decreasing list

• field_index :: [in] The index of the field in the boundary condition that is being set. The surface concentration is set by default.

Called from
subroutine mom_coupler_types/coupler_type_set_diags(var, diag_name, axes, time)

Register the diagnostics of a coupler_2d_bc_type.

Parameters
• var :: [inout] BC_type structure for which to register diagnostics

• diag_name :: [in] name for diagnostic file, or blank not to register the fields

• axes :: [in] array of axes identifiers for diagnostic variable registration

• time :: [in] model time variable for registering diagnostic field

Called from

ocean_model_mod::ocean_model_init

subroutine mom_coupler_types/coupler_type_send_data(var, Time)

Write out all diagnostics of elements of a coupler_2d_bc_type.

Parameters
• var :: [in] BC_type structure with the diagnostics to write

• time :: [in] The current model time

Called from
subroutine mom_coupler_types/ct_write_chksums_2d(var, outunit, name_lead)

Write out checksums for the elements of a coupler_2d_bc_type.

Parameters
• var :: [in] BC_type structure for which to register diagnostics

• outunit :: [in] The index of a open output file

• name_lead :: [in] An optional prefix for the variable names

subroutine mom_coupler_types/ct_write_chksums_3d(var, outunit, name_lead)

Write out checksums for the elements of a coupler_3d_bc_type.

Parameters
• var :: [in] BC_type structure for which to register diagnostics

• outunit :: [in] The index of a open output file

• name_lead :: [in] An optional prefix for the variable names

function mom_coupler_types/ct_initialized_1d(var) [logical]

Indicate whether a coupler_1d_bc_type has been initialized.

Parameters

var :: [in] BC_type structure to be deconstructed

function mom_coupler_types/ct_initialized_2d(var) [logical]

Indicate whether a coupler_2d_bc_type has been initialized.

Parameters

var :: [in] BC_type structure to be deconstructed

function mom_coupler_types/ct_initialized_3d(var) [logical]

Indicate whether a coupler_3d_bc_type has been initialized.

Parameters

var :: [in] BC_type structure to be deconstructed

subroutine mom_coupler_types/ct_destructor_1d(var)

Deallocate all data associated with a coupler_1d_bc_type.

Parameters

var :: [inout] BC_type structure to be deconstructed

subroutine mom_coupler_types/ct_destructor_2d(var)

Deallocate all data associated with a coupler_2d_bc_type.

Parameters

var :: [inout] BC_type structure to be deconstructed