g_tracer_utils module reference

g_tracer_utils() module consists of core utility subroutines to be used by all generic tracer modules. These include the lowest level functions for adding, allocating memory, and record keeping of individual generic tracers irrespective of their physical/chemical nature. module consists of core utility subroutines to be used by all generic tracer modules. These include the lowest level functions for adding, allocating memory, and record keeping of individual generic tracers irrespective of their physical/chemical nature.

More…

Data Types

g_tracer_type

Each generic tracer node is an instant of a FORTRAN type with the following member variables.

g_diag_type

Unknown.

g_tracer_common

The following type fields are common to ALL generic tracers and hence has to be instantiated only once.

Functions/Subroutines

g_tracer_flux_init()

Unknown.

g_tracer_set_csdiag()

Unknown.

g_tracer_set_common()

g_tracer_get_common()

g_tracer_get_4d()

Unknown.

g_tracer_get_3d()

Unknown.

g_tracer_get_2d()

Unknown.

g_tracer_get_4d_val()

Unknown.

g_tracer_get_3d_val()

Unknown.

g_tracer_get_2d_val()

Unknown.

g_tracer_get_real()

Unknown.

g_tracer_get_string()

Unknown.

g_tracer_set_2d()

Unknown.

g_tracer_set_3d()

Unknown.

g_tracer_set_4d()

Unknown.

g_tracer_set_real()

Unknown.

g_tracer_send_diag()

g_tracer_get_name()

Unknown.

g_tracer_get_alias()

Unknown.

g_tracer_is_prog()

Is the tracer prognostic?

g_tracer_get_next()

get the next tracer in the list

g_tracer_get_obc_segment_props()

get obc segment properties for each tracer

g_tracer_vertdiff_g()

Vertical Diffusion of a tracer node.

Detailed Description

g_tracer_utils() module consists of core utility subroutines to be used by all generic tracer modules. These include the lowest level functions for adding, allocating memory, and record keeping of individual generic tracers irrespective of their physical/chemical nature. module consists of core utility subroutines to be used by all generic tracer modules. These include the lowest level functions for adding, allocating memory, and record keeping of individual generic tracers irrespective of their physical/chemical nature.

Type Documentation

type g_tracer_utils/g_tracer_type

Each generic tracer node is an instant of a FORTRAN type with the following member variables. These member fields are supposed to uniquely define an individual tracer. One such type shall be instantiated for EACH individual tracer.

Type fields:
  • % field [real(:,:,:,:),pointer, private] :: Tracer concentration field in space (and time) MOM keeps the prognostic tracer fields at 3 time levels, hence 4D.

  • % trunoff [real(:,:),allocatable, private] :: Tracer concentration in river runoff.

  • % requires_restart [logical,private] :: Unknown.

  • % src_file [character (len=fm_string_len),private] :: Tracer source filename.

  • % src_var_name [character (len=fm_string_len),private] :: Tracer source variable name.

  • % src_var_unit [character (len=fm_string_len),private] :: Tracer source variable units.

  • % src_var_gridspec [character (len=fm_string_len),private] :: Tracer source grid file name.

  • % obc_src_file_name [character (len=fm_string_len),private] :: Boundary condition tracer source filename.

  • % obc_src_field_name [character (len=fm_string_len),private] :: Boundary condition tracer source fieldname.

  • % src_var_record [integer,private] :: Unknown.

  • % runoff_added_to_stf [logical,private] :: Has flux in from runoff been added to stf?

  • % requires_src_info [logical,private] :: Unknown.

  • % src_var_unit_conversion [real,private] :: This factor depends on the tracer. Ask Jasmin.

  • % src_var_valid_min [real,private] :: Unknown.

type g_tracer_utils/g_diag_type

Unknown.

Type fields:
  • % dummy [integer,private] :: A dummy member, not part of the API.

type g_tracer_utils/g_tracer_common

The following type fields are common to ALL generic tracers and hence has to be instantiated only once.

Type fields:
  • % isd [integer,private] :: Domain extents.

  • % jsd [integer,private] :: Start index of the data domain in the j-direction.

Function/Subroutine Documentation

subroutine g_tracer_utils/g_tracer_flux_init(g_tracer)

Unknown.

Parameters:

g_tracer :: Pointer to this tracer node

subroutine g_tracer_utils/g_tracer_set_csdiag(diag_CS)

Unknown.

Parameters:

diag_cs :: [in] Unknown

subroutine g_tracer_utils/g_tracer_set_common(isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau, axes, grid_tmask, grid_kmt, init_time)
Parameters:
  • isc :: [in] Computation start index in i direction

  • iec :: [in] Computation end index in i direction

  • jsc :: [in] Computation start index in j direction

  • jec :: [in] Computation end index in j direction

  • isd :: [in] Data start index in i direction

  • ied :: [in] Data end index in i direction

  • jsd :: [in] Data start index in j direction

  • jed :: [in] Data end index in j direction

  • nk :: [in] Number of levels in k direction

  • ntau :: [in] Unknown

  • axes :: [in] Domain axes?

  • grid_tmask :: [in] Unknown

  • grid_kmt :: [in] Unknown

  • init_time :: [in] Unknown

subroutine g_tracer_utils/g_tracer_get_common(isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau, axes, grid_tmask, grid_mask_coast, grid_kmt, init_time, diag_CS)
Parameters:
  • isc :: [out] Computation start index in i direction

  • iec :: [out] Computation end index in i direction

  • jsc :: [out] Computation start index in j direction

  • jec :: [out] Computation end index in j direction

  • isd :: [out] Data start index in i direction

  • ied :: [out] Data end index in i direction

  • jsd :: [out] Data start index in j direction

  • jed :: [out] Data end index in j direction

  • nk :: [out] Number of levels in k direction

  • ntau :: [out] Unknown

  • axes :: [out] Unknown

  • init_time :: [out] Unknown

  • grid_tmask :: Unknown

  • grid_mask_coast :: Unknown

  • grid_kmt :: Unknown

  • diag_cs :: Unknown

subroutine g_tracer_utils/g_tracer_get_4d(g_tracer_list, name, member, array_ptr)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • array_ptr :: Unknown

subroutine g_tracer_utils/g_tracer_get_3d(g_tracer_list, name, member, array_ptr)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • array_ptr :: Unknown

subroutine g_tracer_utils/g_tracer_get_2d(g_tracer_list, name, member, array_ptr)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • array_ptr :: Unknown

subroutine g_tracer_utils/g_tracer_get_4d_val(g_tracer_list, name, member, array, isd, jsd)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • array :: [out] Unknown

subroutine g_tracer_utils/g_tracer_get_3d_val(g_tracer_list, name, member, array, isd, jsd, ntau, positive)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • ntau :: [in] Unknown

  • positive :: [in] Unknown

  • array :: [out] Unknown

subroutine g_tracer_utils/g_tracer_get_2d_val(g_tracer_list, name, member, array, isd, jsd)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • array :: [out] Unknown

subroutine g_tracer_utils/g_tracer_get_real(g_tracer_list, name, member, value)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • value :: [out] Unknown

subroutine g_tracer_utils/g_tracer_get_string(g_tracer_list, name, member, string)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • string :: [out] Unknown

subroutine g_tracer_utils/g_tracer_set_2d(g_tracer_list, name, member, array, isd, jsd, weight)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • array :: [in] Unknown

  • weight :: [in] Unknown

subroutine g_tracer_utils/g_tracer_set_3d(g_tracer_list, name, member, array, isd, jsd, ntau)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • ntau :: [in] Unknown

  • array :: [in] Unknown

subroutine g_tracer_utils/g_tracer_set_4d(g_tracer_list, name, member, array, isd, jsd)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • isd :: [in] Unknown

  • jsd :: [in] Unknown

  • array :: [in] Unknown

subroutine g_tracer_utils/g_tracer_set_real(g_tracer_list, name, member, value)

Unknown.

Parameters:
  • name :: [in] Unknown

  • member :: [in] Unknown

  • g_tracer_list :: Unknown

  • value :: [in] Unknown

subroutine g_tracer_utils/g_tracer_send_diag(g_tracer_list, model_time, tau)
Parameters:
  • g_tracer_list :: pointer to the head of the generic tracer list

  • model_time :: [in] Time

  • tau :: [in] The time step for the field 4D field to be reported

subroutine g_tracer_utils/g_tracer_get_name(g_tracer, string)

Unknown.

Parameters:
  • g_tracer :: Unknown

  • string :: [out] Unknown

subroutine g_tracer_utils/g_tracer_get_alias(g_tracer, string)

Unknown.

Parameters:
  • g_tracer :: Unknown

  • string :: [out] Unknown

function g_tracer_utils/g_tracer_is_prog(g_tracer) [logical]

Is the tracer prognostic?

Parameters:

g_tracer :: Pointer to tracer node

subroutine g_tracer_utils/g_tracer_get_next(g_tracer, g_tracer_next)

get the next tracer in the list

Parameters:
  • g_tracer :: Pointer to tracer node

  • g_tracer_next :: Pointer to the next tracer node in the list

subroutine g_tracer_utils/g_tracer_get_obc_segment_props(g_tracer_list, name, obc_has, src_file, src_var_name, lfac_in, lfac_out)

get obc segment properties for each tracer

Parameters:
  • g_tracer_list :: pointer to the head of the generic tracer list

  • name :: [in] tracer name

  • obc_has :: [out] .true. if This tracer has OBC

  • lfac_in :: [out] OBC reservoir inverse lengthscale factor

  • lfac_out :: [out] OBC reservoir inverse lengthscale factor

  • src_file :: [out] OBC source file

  • src_var_name :: [out] OBC source variable in file

Called from:

mom_generic_tracer::initialize_mom_generic_tracer mom_generic_tracer::register_mom_generic_tracer_segments

subroutine g_tracer_utils/g_tracer_vertdiff_g(g_tracer, h_old, ea, eb, dt, kg_m2_to_H, m_to_H, tau, mom)

Vertical Diffusion of a tracer node.

This subroutine solves a tridiagonal equation to find and set values of vertically diffused field for a tracer node.This is ported from GOLD (vertdiff) and simplified Since the surface flux from the atmosphere (stf) has the units of mol/m^2/sec the resulting tracer concentration has units of mol/Kg

Parameters:
  • g_tracer :: Unknown

  • h_old :: [in] Layer thickness before entrainment, in m or kg m-2.

  • ea :: [in] The amount of fluid entrained from the layer above, in H.

  • eb :: [in] The amount of fluid entrained from the layer below, in H.

  • dt :: [in] The amount of time covered by this call, in s.

  • kg_m2_to_h :: [in] A conversion factor that translates kg m-2 into the units of h_old (H)

  • m_to_h :: [in] A conversion factor that translates m into the units of h_old (H).

  • tau :: [in] Unknown

  • mom :: [in] Unknown