namespace mom_tracer_diabatic

Overview

This module contains routines that implement physical fluxes of tracers (e.g. due to surface fluxes or mixing). These are intended to be called from call_tracer_column_fns in the MOM_tracer_flow_control module. More…

namespace mom_tracer_diabatic {

// global functions

subroutine, public tracer_vertdiff(
    h_old h_old,
    ea ea,
    eb eb,
    dt dt,
    tr tr,
    G G,
    GV GV,
    sfc_flux sfc_flux,
    btm_flux btm_flux,
    btm_reservoir btm_reservoir,
    sink_rate sink_rate,
    convert_flux_in convert_flux_in
    );

subroutine, public applytracerboundaryfluxesinout(
    G G,
    GV GV,
    Tr Tr,
    dt dt,
    fluxes fluxes,
    h h,
    evap_CFL_limit evap_CFL_limit,
    minimum_forcing_depth minimum_forcing_depth,
    in_flux_optional in_flux_optional,
    out_flux_optional out_flux_optional,
    update_h_opt update_h_opt
    );

} // namespace mom_tracer_diabatic

Detailed Documentation

This module contains routines that implement physical fluxes of tracers (e.g. due to surface fluxes or mixing). These are intended to be called from call_tracer_column_fns in the MOM_tracer_flow_control module.

Global Functions

subroutine, public tracer_vertdiff(
    h_old h_old,
    ea ea,
    eb eb,
    dt dt,
    tr tr,
    G G,
    GV GV,
    sfc_flux sfc_flux,
    btm_flux btm_flux,
    btm_reservoir btm_reservoir,
    sink_rate sink_rate,
    convert_flux_in convert_flux_in
    )

This subroutine solves a tridiagonal equation for the final tracer concentrations after the dual-entrainments, and possibly sinking or surface and bottom sources, are applied. The sinking is implemented with an fully implicit upwind advection scheme.

Parameters:

g

ocean grid structure

gv

ocean vertical grid structure

h_old

layer thickness before entrainment [H ~> m or kg m-2]

ea

amount of fluid entrained from the layer above [H ~> m or kg m-2]

eb

amount of fluid entrained from the layer below [H ~> m or kg m-2]

tr

tracer concentration in concentration units [CU]

dt

amount of time covered by this call [s]

sfc_flux

surface flux of the tracer [CU kg m-2 s-1]

btm_flux

The (negative upward) bottom flux of the tracer [CU kg m-2 s-1]

btm_reservoir

amount of tracer in a bottom reservoir [CU kg m-2]; formerly [CU m]

sink_rate

rate at which the tracer sinks [m s-1]

convert_flux_in

True if the specified sfc_flux needs to be integrated in time

subroutine, public applytracerboundaryfluxesinout(
    G G,
    GV GV,
    Tr Tr,
    dt dt,
    fluxes fluxes,
    h h,
    evap_CFL_limit evap_CFL_limit,
    minimum_forcing_depth minimum_forcing_depth,
    in_flux_optional in_flux_optional,
    out_flux_optional out_flux_optional,
    update_h_opt update_h_opt
    )

This routine is modeled after applyBoundaryFluxesInOut in MOM_diabatic_aux.F90 NOTE: Please note that in this routine sfc_flux gets set to zero to ensure that the surface flux of the tracer does not get applied again during a subsequent call to tracer_vertdif.

Parameters:

g

Grid structure

gv

ocean vertical grid structure

tr

Tracer concentration on T-cell

dt

Time-step over which forcing is applied [s]

fluxes

Surface fluxes container

h

Layer thickness [H ~> m or kg m-2]

evap_cfl_limit

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

minimum_forcing_depth

The smallest depth over which fluxes can be applied [m]

in_flux_optional

The total time-integrated amount of tracer that enters with freshwater

out_flux_optional

The total time-integrated amount of tracer that leaves with freshwater

update_h_opt

Optional flag to determine whether h should be updated