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 |