dome_tracer module reference

A tracer package that is used as a diagnostic in the DOME experiments.

More…

Data Types

dome_tracer_cs

The DOME_tracer control structure.

Functions/Subroutines

register_dome_tracer()

Register tracer fields and subroutines to be used with MOM.

initialize_dome_tracer()

Initializes the NTR tracer fields in tr(:,:,:,:) and sets up the tracer output.

dome_tracer_column_physics()

This subroutine applies diapycnal diffusion and any other column tracer physics or chemistry to the tracers from this file.

dome_tracer_surface_state()

This subroutine extracts the surface fields from this tracer package that are to be shared with the atmosphere in coupled configurations.

dome_tracer_end()

Clean up memory allocations, if any.

Detailed Description

By Robert Hallberg, 2002.

This file contains an example of the code that is needed to set up and use a set (in this case eleven) of dynamically passive tracers. These tracers dye the inflowing water or water initially within a range of latitudes or water initially in a range of depths.

A single subroutine is called from within each file to register each of the tracers for reinitialization and advection and to register the subroutine that initializes the tracers and set up their output and the subroutine that does any tracer physics or chemistry along with diapycnal mixing (included here because some tracers may float or swim vertically or dye diapycnal processes).

Type Documentation

type dome_tracer/dome_tracer_cs

The DOME_tracer control structure.

Type fields:
  • % coupled_tracers [logical] :: These tracers are not offered to the coupler.

  • % tracer_ic_file [character (len=200)] :: The full path to the IC file, or ” ” to initialize internally.

  • % time [type(time_type),pointer] :: A pointer to the ocean model’s clock.

  • % tr_reg [type(tracer_registry_type),pointer] :: A pointer to the tracer registry.

  • % tr [real(:,:,:,:),pointer] :: The array of tracers used in this package, perhaps in [g kg-1].

  • % land_val [real( ntr )] :: The value of tr used where land is masked out, perhaps in [g kg-1].

  • % use_sponge [logical] :: If true, sponges may be applied somewhere in the domain.

  • % stripe_width [real] :: The meridional width of the vertical stripes in the initial condition for some of the DOME tracers, in [km] or [degrees_N] or [m].

  • % stripe_s_lat [real] :: The southern latitude of the first vertical stripe in the initial condition for some of the DOME tracers, in [km] or [degrees_N] or [m].

  • % sheet_spacing [real] :: The vertical spacing between successive horizontal sheets of tracer in the initial conditions for some of the DOME tracers [Z ~> m], and twice the thickness of these horizontal tracer sheets.

  • % ind_tr [integer( ntr )] :: Indices returned by atmos_ocn_coupler_flux if it is used and the surface tracer concentrations are to be provided to the coupler.

  • % diag [type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.

  • % tr_desc [type( vardesc )( ntr )] :: Descriptions and metadata for the tracers.

Function/Subroutine Documentation

function dome_tracer/register_dome_tracer(G, GV, US, param_file, CS, tr_Reg, restart_CS) [logical]

Register tracer fields and subroutines to be used with MOM.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

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

  • cs :: A pointer that is set to point to the control structure for this module

  • tr_reg :: A pointer to the tracer registry.

  • restart_cs :: [inout] MOM restart control struct

Call to:

mom_error_handler::mom_error ntr mom_tracer_registry::register_tracer mom_io::var_desc

subroutine dome_tracer/initialize_dome_tracer(restart, day, G, GV, US, h, diag, OBC, CS, sponge_CSp, tv)

Initializes the NTR tracer fields in tr(:,:,:,:) and sets up the tracer output.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

  • restart :: [in] .true. if the fields have already been read from a restart file.

  • day :: [in] Time of the start of the run.

  • h :: [in] Layer thicknesses [H ~> m or kg m-2]

  • diag :: [in] Structure used to regulate diagnostic output.

  • obc :: Structure specifying open boundary options.

  • cs :: The control structure returned by a previous call to DOME_register_tracer.

  • sponge_csp :: A pointer to the control structure for the sponges, if they are in use.

  • tv :: [in] A structure pointing to various thermodynamic variables

Call to:

mom_error_handler::mom_error ntr mom_io::query_vardesc mom_sponge::set_up_sponge_field

subroutine dome_tracer/dome_tracer_column_physics(h_old, h_new, ea, eb, fluxes, dt, G, GV, US, CS, evap_CFL_limit, minimum_forcing_depth)

This subroutine applies diapycnal diffusion and any other column tracer physics or chemistry to the tracers from this file. This is a simple example of a set of advected passive tracers.

The arguments to this subroutine are redundant in that h_new(k) = h_old(k) + ea(k) - eb(k-1) + eb(k) - ea(k+1)

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

  • h_new :: [in] Layer thickness after entrainment [H ~> m or kg m-2].

  • ea :: [in] an array to which the amount of fluid entrained

  • eb :: [in] an array to which the amount of fluid entrained

  • fluxes :: [in] A structure containing pointers to thermodynamic and tracer forcing fields. Unused fields have NULL ptrs.

  • dt :: [in] The amount of time covered by this call [T ~> s]

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

  • cs :: The control structure returned by a previous call to DOME_register_tracer.

  • evap_cfl_limit :: [in] Limit on the fraction of the water that can be fluxed out of the top layer in a timestep [nondim]

  • minimum_forcing_depth :: [in] The smallest depth over which fluxes can be applied [H ~> m or kg m-2]

Call to:

mom_tracer_diabatic::applytracerboundaryfluxesinout ntr mom_tracer_diabatic::tracer_vertdiff

subroutine dome_tracer/dome_tracer_surface_state(sfc_state, h, G, GV, CS)

This subroutine extracts the surface fields from this tracer package that are to be shared with the atmosphere in coupled configurations. This particular tracer package does not report anything back to the coupler.

Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure

  • sfc_state :: [inout] A structure containing fields that describe the surface state of the ocean.

  • h :: [in] Layer thickness [H ~> m or kg m-2].

  • cs :: The control structure returned by a previous call to DOME_register_tracer.

Call to:

ntr mom_coupler_types::set_coupler_type_data

subroutine dome_tracer/dome_tracer_end(CS)

Clean up memory allocations, if any.

Parameters:

cs :: The control structure returned by a previous call to DOME_register_tracer.

Called from:

mom_tracer_flow_control::tracer_flow_control_end