mom_diabatic_driver module reference¶
This routine drives the diabatic/dianeutral physics for MOM.
Data Types¶
Control structure for this module. |
Functions/Subroutines¶
This subroutine imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers. |
|
Applies diabatic forcing and diapycnal mixing of temperature, salinity and other tracers for use with an ALE algorithm. |
|
This subroutine imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers. |
|
Imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers using the original MOM6 algorithms. |
|
Returns pointers or values of members within the diabatic_CS type. |
|
Routine called for adiabatic physics. |
|
This routine diagnoses tendencies from application of diabatic diffusion using ALE algorithm. |
|
This routine diagnoses tendencies from application of boundary fluxes. |
|
This routine diagnoses tendencies for temperature and heat from frazil formation. |
|
A simplified version of diabatic_driver_init that will allow tracer column functions to be called without allowing any of the diabatic processes to be used. |
|
This routine initializes the diabatic driver module. |
|
Routine to register restarts, pass-through to children modules. |
|
Routine to close the diabatic driver module. |
Detailed Description¶
By Robert Hallberg, Alistair Adcroft, and Stephen Griffies.
This program contains the subroutine that, along with the subroutines that it calls, implements diapycnal mass and momentum fluxes and a bulk mixed layer. The diapycnal diffusion can be used without the bulk mixed layer.
Outline of MOM diabatic¶
diabatic first determines the (diffusive) diapycnal mass fluxes based on the convergence of the buoyancy fluxes within each layer.
The dual-stream entrainment scheme of MacDougall and Dewar (JPO, 1997) is used for combined diapycnal advection and diffusion, calculated implicitly and potentially with the Richardson number dependent mixing, as described by Hallberg (MWR, 2000).
Diapycnal advection is the residual of diapycnal diffusion, so the fully implicit upwind differencing scheme that is used is entirely appropriate.
The downward buoyancy flux in each layer is determined from an implicit calculation based on the previously calculated flux of the layer above and an estimated flux in the layer below. This flux is subject to the following conditions: (1) the flux in the top and bottom layers are set by the boundary conditions, and (2) no layer may be driven below a minimal thickness. If there is a bulk mixed layer, the buffer layer is treated as a fixed density layer with vanishingly small diffusivity.
diabatic takes 5 arguments: the two velocities (u and v), the thicknesses (h), a structure containing the forcing fields, and the length of time over which to act (dt). The velocities and thickness are taken as inputs and modified within the subroutine. There is no limit on the time step.
Type Documentation¶
-
type
mom_diabatic_driver/
diabatic_cs
¶ Control structure for this module.
- Type fields:
%
id_ea
[integer] :: Diagnostic IDs.%
id_eb
[integer] :: Diagnostic IDs.%
id_ea_t
[integer] :: Diagnostic IDs.%
id_eb_t
[integer] :: Diagnostic IDs.%
id_ea_s
[integer] :: Diagnostic IDs.%
id_eb_s
[integer] :: Diagnostic IDs.%
id_kd_heat
[integer] :: Diagnostic IDs.%
id_kd_salt
[integer] :: Diagnostic IDs.%
id_kd_int
[integer] :: Diagnostic IDs.%
id_kd_epbl
[integer] :: Diagnostic IDs.%
id_tdif
[integer] :: Diagnostic IDs.%
id_sdif
[integer] :: Diagnostic IDs.%
id_tadv
[integer] :: Diagnostic IDs.%
id_sadv
[integer] :: Diagnostic IDs.%
id_mld_003
[integer] :: Diagnostic IDs.%
id_mld_0125
[integer] :: Diagnostic IDs.%
id_mld_user
[integer] :: Diagnostic IDs.%
id_mlotstsq
[integer] :: Diagnostic IDs.%
id_mld_en1
[integer] :: Diagnostic IDs.%
id_mld_en2
[integer] :: Diagnostic IDs.%
id_mld_en3
[integer] :: Diagnostic IDs.%
id_submln2
[integer] :: Diagnostic IDs.%
id_wd
[integer] :: Diagnostic IDs.%
id_dudt_dia
[integer] :: Diagnostic IDs.%
id_dvdt_dia
[integer] :: Diagnostic IDs.%
id_hf_dudt_dia_2d
[integer] :: Diagnostic IDs.%
id_hf_dvdt_dia_2d
[integer] :: Diagnostic IDs.%
id_u_predia
[integer] :: Diagnostic IDs.%
id_v_predia
[integer] :: Diagnostic IDs.%
id_h_predia
[integer] :: Diagnostic IDs.%
id_t_predia
[integer] :: Diagnostic IDs.%
id_s_predia
[integer] :: Diagnostic IDs.%
id_e_predia
[integer] :: Diagnostic IDs.%
id_diabatic_diff_temp_tend
[integer] :: Diagnostic IDs.%
id_diabatic_diff_saln_tend
[integer] :: Diagnostic IDs.%
id_diabatic_diff_heat_tend
[integer] :: Diagnostic IDs.%
id_diabatic_diff_salt_tend
[integer] :: Diagnostic IDs.%
id_diabatic_diff_heat_tend_2d
[integer] :: Diagnostic IDs.%
id_diabatic_diff_salt_tend_2d
[integer] :: Diagnostic IDs.%
id_diabatic_diff_h
[integer] :: Diagnostic IDs.%
id_boundary_forcing_h
[integer] :: Diagnostic IDs.%
id_boundary_forcing_h_tendency
[integer] :: Diagnostic IDs.%
id_boundary_forcing_temp_tend
[integer] :: Diagnostic IDs.%
id_boundary_forcing_saln_tend
[integer] :: Diagnostic IDs.%
id_boundary_forcing_heat_tend
[integer] :: Diagnostic IDs.%
id_boundary_forcing_salt_tend
[integer] :: Diagnostic IDs.%
id_boundary_forcing_heat_tend_2d
[integer] :: Diagnostic IDs.%
id_boundary_forcing_salt_tend_2d
[integer] :: Diagnostic IDs.%
id_frazil_h
[integer] :: Diagnostic IDs.%
id_frazil_temp_tend
[integer] :: Diagnostic IDs.%
id_frazil_heat_tend
[integer] :: Diagnostic IDs.%
id_frazil_heat_tend_2d
[integer] :: Diagnostic IDs.%
initialized
[logical] :: True if this control structure has been initialized.%
use_legacy_diabatic
[logical] :: If true (default), use a legacy version of the diabatic algorithm. This is temporary and is needed to avoid change in answers.%
use_bulkmixedlayer
[logical] :: If true, a refined bulk mixed layer is used with nkml sublayers (and additional buffer layers).%
use_energetic_pbl
[logical] :: If true, use the implicit energetics planetary boundary layer scheme to determine the diffusivity in the surface boundary layer.%
use_kpp
[logical] :: If true, use CVMix/KPP boundary layer scheme to determine the OBLD and the diffusivities within this layer.%
use_kappa_shear
[logical] :: If true, use the kappa_shear module to find the shear-driven diapycnal diffusivity.%
use_cvmix_shear
[logical] :: If true, use the CVMix module to find the shear-driven diapycnal diffusivity.%
use_cvmix_ddiff
[logical] :: If true, use the CVMix double diffusion module.%
use_cvmix_conv
[logical] :: If true, use the CVMix module to get enhanced mixing due to convection.%
double_diffuse
[logical] :: If true, some form of double-diffusive mixing is used.%
use_sponge
[logical] :: If true, sponges may be applied anywhere in the domain. The exact location and properties of those sponges are set by calls to initialize_sponge and set_up_sponge_field.%
use_oda_incupd
[logical] :: If True, DA incremental update is applied everywhere.%
use_geothermal
[logical] :: If true, apply geothermal heating.%
use_int_tides
[logical] :: If true, use the code that advances a separate set of equations for the internal tide energy density.%
epbl_is_additive
[logical] :: If true, the diffusivity from ePBL is added to all other diffusivities. Otherwise, the larger of kappa- shear and ePBL diffusivities are used.%
epbl_prandtl
[real] :: The Prandtl number used by ePBL to convert vertical diffusivities into viscosities [nondim].%
usealealgorithm
[logical] :: If true, use the ALE algorithm rather than layered isopycnal/stacked shallow water mode. This logical passed by argument to diabatic_driver_init.%
aggregate_fw_forcing
[logical] :: Determines whether net incoming/outgoing surface FW fluxes are applied separately or combined before being applied.%
ml_mix_first
[real] :: The nondimensional fraction of the mixed layer algorithm that is applied before diffusive mixing [nondim]. The default is 0, while 0.5 gives Strang splitting and 1 is a sensible value too. Note that if there are convective instabilities in the initial state, the first call may do much more than the second.%
nkbl
[integer] :: The number of buffer layers (if bulk_mixed_layer)%
massless_match_targets
[logical] :: If true (the default), keep the T & S consistent with the target values.%
mix_boundary_tracers
[logical] :: If true, mix the passive tracers in massless layers at the bottom into the interior as though a diffusivity of Kd_min_tr (see below) were operating.%
mix_boundary_tracer_ale
[logical] :: If true, in ALE mode mix the passive tracers in massless layers at the bottom into the interior as though a diffusivity of Kd_min_tr (see below) were operating.%
kd_bbl_tr
[real] :: A bottom boundary layer tracer diffusivity that will allow for explicitly specified bottom fluxes [H2 T-1 ~> m2 s-1 or kg2 m-4 s-2]. The entrainment at the bottom is at least sqrt(Kd_BBL_tr*dt) over the same distance.%
kd_min_tr
[real] :: A minimal diffusivity that should always be applied to tracers, especially in massless layers near the bottom [H Z T-1 ~> m2 s-1 or kg m-1 s-1].%
minimum_forcing_depth
[real] :: The smallest depth over which heat and freshwater fluxes are applied [H ~> m or kg m-2].%
evap_cfl_limit
[real] :: The largest fraction of a layer that can be evaporated in one time-step [nondim].%
halo_ts_diff
[integer] :: The temperature, salinity and thickness halo size that must be valid for the diffusivity calculations.%
halo_diabatic
[integer] :: The temperature, salinity, specific volume and thickness halo size that must be valid for the diabatic calculations, including vertical mixing and internal tide propagation.%
usekpp
[logical] :: use CVMix/KPP diffusivities and non-local transport%
kppispassive
[logical] :: If true, KPP is in passive mode, not changing answers.%
debug
[logical] :: If true, write verbose checksums for debugging purposes.%
debugconservation
[logical] :: If true, monitor conservation and extrema.%
tracer_tridiag
[logical] :: If true, use tracer_vertdiff instead of tridiagTS for vertical diffusion of T and S.%
debug_energy_req
[logical] :: If true, test the mixing energy requirement code.%
diag
[type( diag_ctrl ),pointer] :: structure used to regulate timing of diagnostic output%
mlddensitydifference
[real] :: Density difference used to determine MLD_user [R ~> kg m-3].%
dz_subml_n2
[real] :: The distance over which to calculate a diagnostic of the average stratification at the base of the mixed layer [Z ~> m].%
mld_en_vals
[real(3)] :: Energy values for energy mixed layer diagnostics [R Z3 T-2 ~> J m-2].%
diabatic_diff_tendency_diag
[logical] :: If true calculate diffusive tendency diagnostics.%
boundary_forcing_tendency_diag
[logical] :: If true calculate frazil diagnostics.%
frazil_tendency_diag
[logical] :: If true calculate frazil tendency diagnostics.%
diabatic_aux_csp
[type( diabatic_aux_cs ),pointer] :: Control structure for a child module.%
int_tide_input_csp
[type( int_tide_input_cs ),pointer] :: Control structure for a child module.%
int_tide_input
[type( int_tide_input_type ),pointer] :: Control structure for a child module.%
set_diff_csp
[type( set_diffusivity_cs ),pointer] :: Control structure for a child module.%
sponge_csp
[type( sponge_cs ),pointer] :: Control structure for a child module.%
ale_sponge_csp
[type( ale_sponge_cs ),pointer] :: Control structure for a child module.%
tracer_flow_csp
[type( tracer_flow_control_cs ),pointer] :: Control structure for a child module.%
optics
[type( optics_type ),pointer] :: Control structure for a child module.%
kpp_csp
[type( kpp_cs ),pointer] :: Control structure for a child module.%
diapyc_en_rec_csp
[type( diapyc_energy_req_cs ),pointer] :: Control structure for a child module.%
oda_incupd_csp
[type( oda_incupd_cs ),pointer] :: Control structure for a child module.%
int_tide_csp
[type( int_tide_cs ),pointer] :: Control structure for a child module.%
bulkmixedlayer
[type( bulkmixedlayer_cs )] :: Bulk mixed layer control structure.%
cvmix_conv
[type( cvmix_conv_cs )] :: CVMix convection control structure.%
epbl
[type( energetic_pbl_cs )] :: Energetic PBL control structure.%
entrain_diffusive
[type( entrain_diffusive_cs )] :: Diffusive entrainment control structure.%
geothermal
[type( geothermal_cs )] :: Geothermal control structure.%
opacity
[type( opacity_cs )] :: Opacity control structure.%
regularize_layers
[type( regularize_layers_cs )] :: Regularize layer control structure.%
pass_hold_eb_ea
[type(group_pass_type)] :: For group halo pass.%
pass_kv
[type(group_pass_type)] :: For group halo pass.%
diag_grids_prev
[type( diag_grid_storage )] :: Stores diagnostic grids at some previous point in the algorithm.%
kpp_nltheat
[real(:,:,:),allocatable] :: KPP non-local transport for heat [nondim].%
kpp_nltscalar
[real(:,:,:),allocatable] :: KPP non-local transport for scalars [nondim].%
kpp_buoy_flux
[real(:,:,:),allocatable] :: KPP forcing buoyancy flux [L2 T-3 ~> m2 s-3].%
kpp_temp_flux
[real(:,:),allocatable] :: KPP effective temperature flux [C H T-1 ~> degC m s-1 or degC kg m-2 s-1].%
kpp_salt_flux
[real(:,:),allocatable] :: KPP effective salt flux [S H T-1 ~> ppt m s-1 or ppt kg m-2 s-1].%
time
[type(time_type),pointer] :: Pointer to model time (needed for sponges)
Function/Subroutine Documentation¶
-
subroutine
mom_diabatic_driver/
diabatic
(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, G, GV, US, CS, stoch_CS, OBC, Waves)¶ This subroutine imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
u :: [inout] zonal velocity [L T-1 ~> m s-1]
v :: [inout] meridional velocity [L T-1 ~> m s-1]
h :: [inout] thickness [H ~> m or kg m-2]
tv :: [inout] points to thermodynamic fields unused have NULL ptrs
hml :: Active mixed layer depth [Z ~> m]
fluxes :: [inout] points to forcing fields unused fields have NULL ptrs
visc :: [inout] Structure with vertical viscosities, BBL properties and related fields
adp :: [inout] Points to accelerations in momentum equations, to enable the later derived diagnostics, like energy budgets
cdp :: [inout] points to terms in continuity equations
dt :: [in] time increment [T ~> s]
time_end :: [in] Time at the end of the interval
us :: [in] A dimensional unit scaling type
cs :: module control structure
stoch_cs :: stochastic control structure
obc :: Open boundaries control structure.
waves :: Surface gravity waves
- Call to:
mom_error_handler::calltree_waypoint
diabatic_ale
diabatic_ale_legacy
diagnose_frazil_tendency
mom_diabatic_aux::diagnosemldbydensitydifference
mom_diabatic_aux::diagnosemldbyenergy
mom_diapyc_energy_req::diapyc_energy_req_test
id_clock_pass
id_clock_set_diffusivity
layered_diabatic
mom_checksum_packages::mom_state_stats
-
subroutine
mom_diabatic_driver/
diabatic_ale_legacy
(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, G, GV, US, CS, stoch_CS, Waves)¶ Applies diabatic forcing and diapycnal mixing of temperature, salinity and other tracers for use with an ALE algorithm. This version uses an older set of algorithms compared with diabatic_ALE.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
u :: [inout] zonal velocity [L T-1 ~> m s-1]
v :: [inout] meridional velocity [L T-1 ~> m s-1]
h :: [inout] thickness [H ~> m or kg m-2]
tv :: [inout] points to thermodynamic fields unused have NULL ptrs
hml :: Active mixed layer depth [Z ~> m]
fluxes :: [inout] points to forcing fields unused fields have NULL ptrs
visc :: [inout] Structure with vertical viscosities, BBL properties and related fields
adp :: [inout] Points to accelerations in momentum equations, to enable the later derived diagnostics, like energy budgets
cdp :: [inout] points to terms in continuity equations
dt :: [in] time increment [T ~> s]
time_end :: [in] Time at the end of the interval
cs :: module control structure
stoch_cs :: stochastic control structure
waves :: Surface gravity waves
- Call to:
mom_ale_sponge::apply_ale_sponge
mom_oda_incupd::apply_oda_incupd
mom_cvmix_conv::calculate_cvmix_conv
mom_forcing_type::calculatebuoyancyflux2d
mom_tracer_flow_control::call_tracer_column_fns
mom_error_handler::calltree_enter
mom_error_handler::calltree_leave
mom_error_handler::calltree_waypoint
diagnose_boundary_forcing_tendency
diagnose_diabatic_diff_tendency
mom_energetic_pbl::energetic_pbl_get_mld
id_clock_differential_diff
id_clock_geothermal
id_clock_kpp
id_clock_oda_incupd
id_clock_remap
id_clock_set_diffusivity
id_clock_sponge
id_clock_tracers
id_clock_tridiag
mom_cvmix_kpp::kpp_nonlocaltransport_saln
mom_cvmix_kpp::kpp_nonlocaltransport_temp
mom_checksum_packages::mom_state_stats
mom_variables::mom_thermovar_chksum
mom_opacity::optics_nbands
mom_tracer_diabatic::tracer_vertdiff_eulerian
- Called from:
-
subroutine
mom_diabatic_driver/
diabatic_ale
(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, G, GV, US, CS, stoch_CS, Waves)¶ This subroutine imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
u :: [inout] zonal velocity [L T-1 ~> m s-1]
v :: [inout] meridional velocity [L T-1 ~> m s-1]
h :: [inout] thickness [H ~> m or kg m-2]
tv :: [inout] points to thermodynamic fields unused have NULL ptrs
hml :: Active mixed layer depth [Z ~> m]
fluxes :: [inout] points to forcing fields unused fields have NULL ptrs
visc :: [inout] Structure with vertical viscosities, BBL properties and related fields
adp :: [inout] Points to accelerations in momentum equations, to enable the later derived diagnostics, like energy budgets
cdp :: [inout] points to terms in continuity equations
dt :: [in] time increment [T ~> s]
time_end :: [in] Time at the end of the interval
cs :: module control structure
stoch_cs :: stochastic control structure
waves :: Surface gravity waves
- Call to:
mom_ale_sponge::apply_ale_sponge
mom_oda_incupd::apply_oda_incupd
mom_cvmix_conv::calculate_cvmix_conv
mom_forcing_type::calculatebuoyancyflux2d
mom_tracer_flow_control::call_tracer_column_fns
mom_error_handler::calltree_enter
mom_error_handler::calltree_leave
mom_error_handler::calltree_waypoint
diagnose_boundary_forcing_tendency
diagnose_diabatic_diff_tendency
mom_energetic_pbl::energetic_pbl_get_mld
id_clock_geothermal
id_clock_kpp
id_clock_oda_incupd
id_clock_pass
id_clock_remap
id_clock_set_diffusivity
id_clock_sponge
id_clock_tracers
id_clock_tridiag
mom_cvmix_kpp::kpp_nonlocaltransport_saln
mom_cvmix_kpp::kpp_nonlocaltransport_temp
mom_checksum_packages::mom_state_stats
mom_variables::mom_thermovar_chksum
mom_opacity::optics_nbands
mom_tracer_diabatic::tracer_vertdiff_eulerian
- Called from:
-
subroutine
mom_diabatic_driver/
layered_diabatic
(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, G, GV, US, CS, Waves)¶ Imposes the diapycnal mass fluxes and the accompanying diapycnal advection of momentum and tracers using the original MOM6 algorithms.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
u :: [inout] zonal velocity [L T-1 ~> m s-1]
v :: [inout] meridional velocity [L T-1 ~> m s-1]
h :: [inout] thickness [H ~> m or kg m-2]
tv :: [inout] points to thermodynamic fields unused have NULL ptrs
hml :: Active mixed layer depth [Z ~> m]
fluxes :: [inout] points to forcing fields unused fields have NULL ptrs
visc :: [inout] Structure with vertical viscosities, BBL properties and related fields
adp :: [inout] Points to accelerations in momentum equations, to enable the later derived diagnostics, like energy budgets
cdp :: [inout] points to terms in continuity equations
dt :: [in] time increment [T ~> s]
time_end :: [in] Time at the end of the interval
cs :: module control structure
waves :: Surface gravity waves
- Call to:
mom_oda_incupd::apply_oda_incupd
mom_sponge::apply_sponge
mom_bulk_mixed_layer::bulkmixedlayer
mom_interface_heights::calc_derived_thermo
mom_cvmix_conv::calculate_cvmix_conv
mom_forcing_type::calculatebuoyancyflux2d
mom_tracer_flow_control::call_tracer_column_fns
mom_error_handler::calltree_enter
mom_error_handler::calltree_leave
mom_error_handler::calltree_waypoint
diagnose_diabatic_diff_tendency
mom_eos::eos_domain
id_clock_differential_diff
id_clock_entrain
id_clock_geothermal
id_clock_kpp
id_clock_mixedlayer
id_clock_oda_incupd
id_clock_pass
id_clock_remap
id_clock_set_diffusivity
id_clock_sponge
id_clock_tracers
id_clock_tridiag
mom_cvmix_kpp::kpp_nonlocaltransport_saln
mom_cvmix_kpp::kpp_nonlocaltransport_temp
mom_checksum_packages::mom_state_stats
mom_variables::mom_thermovar_chksum
mom_regularize_layers::regularize_layers
mom_tracer_diabatic::tracer_vertdiff
- Called from:
-
subroutine
mom_diabatic_driver/
extract_diabatic_member
(CS, opacity_CSp, optics_CSp, evap_CFL_limit, minimum_forcing_depth, KPP_CSp, energetic_PBL_CSp, diabatic_aux_CSp, diabatic_halo, use_KPP)¶ Returns pointers or values of members within the diabatic_CS type. For extensibility, each returned argument is an optional argument.
- Parameters:
cs :: [in] module control structure
opacity_csp :: A pointer to be set to the opacity control structure
optics_csp :: A pointer to be set to the optics control structure
kpp_csp :: A pointer to be set to the KPP CS
energetic_pbl_csp :: A pointer to be set to the ePBL CS
evap_cfl_limit :: [out] The largest fraction of a layer that can be evaporated in one time-step [nondim].
minimum_forcing_depth :: [out] The smallest depth over which heat and freshwater fluxes are applied [H ~> m or kg m-2].
diabatic_aux_csp :: A pointer to be set to the diabatic_aux control structure
diabatic_halo :: [out] The halo size where the diabatic algorithms assume thermodynamics properties are valid.
use_kpp :: [out] If true, diabatic is using KPP vertical mixing
- Called from:
mom_hor_bnd_diffusion::hor_bnd_diffusion_init
mom_neutral_diffusion::neutral_diffusion_init
mom_offline_main::offline_transport_init
-
subroutine
mom_diabatic_driver/
adiabatic
(h, tv, fluxes, dt, G, GV, US, CS)¶ Routine called for adiabatic physics.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
h :: [inout] thickness [H ~> m or kg m-2]
tv :: [inout] points to thermodynamic fields
fluxes :: [inout] boundary fluxes
dt :: [in] time step [T ~> s]
us :: [in] A dimensional unit scaling type
cs :: module control structure
- Call to:
-
subroutine
mom_diabatic_driver/
diagnose_diabatic_diff_tendency
(tv, h, temp_old, saln_old, dt, G, GV, US, CS)¶ This routine diagnoses tendencies from application of diabatic diffusion using ALE algorithm. Note that layer thickness is not altered by diabatic diffusion.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
tv :: [in] points to updated thermodynamic fields
h :: [in] thickness [H ~> m or kg m-2]
temp_old :: [in] temperature prior to diabatic physics [C ~> degC]
saln_old :: [in] salinity prior to diabatic physics [S ~> ppt]
dt :: [in] time step [T ~> s]
us :: [in] A dimensional unit scaling type
cs :: module control structure
- Called from:
-
subroutine
mom_diabatic_driver/
diagnose_boundary_forcing_tendency
(tv, h, temp_old, saln_old, h_old, dt, G, GV, US, CS)¶ This routine diagnoses tendencies from application of boundary fluxes. These impacts are generally 3d, in particular for penetrative shortwave. Other fluxes contribute 3d in cases when the layers vanish or are very thin, in which case we distribute the flux into k > 1 layers.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
tv :: [in] points to updated thermodynamic fields
h :: [in] thickness after boundary flux application [H ~> m or kg m-2]
temp_old :: [in] temperature prior to boundary flux application [C ~> degC]
saln_old :: [in] salinity prior to boundary flux application [S ~> ppt]
h_old :: [in] thickness prior to boundary flux application [H ~> m or kg m-2]
dt :: [in] time step [T ~> s]
us :: [in] A dimensional unit scaling type
cs :: module control structure
- Called from:
-
subroutine
mom_diabatic_driver/
diagnose_frazil_tendency
(tv, h, temp_old, dt, G, GV, US, CS)¶ This routine diagnoses tendencies for temperature and heat from frazil formation. This routine is called twice from within subroutine diabatic; at start and at end of the diabatic processes. The impacts from frazil are generally a function of depth. Hence, when checking heat budget, be sure to remove HFSIFRAZIL from HFDS in k=1.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
tv :: [in] points to updated thermodynamic fields
h :: [in] thickness [H ~> m or kg m-2]
temp_old :: [in] temperature prior to frazil formation [C ~> degC]
dt :: [in] time step [T ~> s]
us :: [in] A dimensional unit scaling type
cs :: module control structure
- Called from:
-
subroutine
mom_diabatic_driver/
adiabatic_driver_init
(Time, G, param_file, diag, CS, tracer_flow_CSp)¶ A simplified version of diabatic_driver_init that will allow tracer column functions to be called without allowing any of the diabatic processes to be used.
- Parameters:
time :: [in] current model time
g :: [in] model grid structure
param_file :: [in] the file to parse for parameter values
diag :: [inout] regulates diagnostic output
cs :: module control structure
tracer_flow_csp :: pointer to control structure of the tracer flow control module
-
subroutine
mom_diabatic_driver/
diabatic_driver_init
(Time, G, GV, US, param_file, useALEalgorithm, diag, ADp, CDp, CS, tracer_flow_CSp, sponge_CSp, ALE_sponge_CSp, oda_incupd_CSp, int_tide_CSp)¶ This routine initializes the diabatic driver module.
- Parameters:
time :: model time
g :: [inout] model grid structure
gv :: [in] model vertical grid structure
us :: [in] A dimensional unit scaling type
param_file :: [in] file to parse for parameter values
usealealgorithm :: [in] logical for whether to use ALE remapping
diag :: [inout] structure to regulate diagnostic output
adp :: [inout] pointers to accelerations in momentum equations, to enable diagnostics, like energy budgets
cdp :: [inout] pointers to terms in continuity equations
cs :: module control structure
tracer_flow_csp :: pointer to control structure of the tracer flow control module
sponge_csp :: pointer to the sponge module control structure
ale_sponge_csp :: pointer to the ALE sponge module control structure
oda_incupd_csp :: pointer to the ocean data assimilation incremental update module control structure
int_tide_csp :: pointer to the internal tide structure
- Call to:
mom_bulk_mixed_layer::bulkmixedlayer_init
mom_cvmix_ddiff::cvmix_ddiff_is_used
mom_cvmix_shear::cvmix_shear_is_used
mom_geothermal::geothermal_init
mom_verticalgrid::get_thickness_units
id_clock_differential_diff
id_clock_entrain
id_clock_geothermal
id_clock_kpp
id_clock_mixedlayer
id_clock_oda_incupd
id_clock_pass
id_clock_remap
id_clock_set_diffusivity
id_clock_sponge
id_clock_tracers
id_clock_tridiag
mom_internal_tides::internal_tides_init
mom_kappa_shear::kappa_shear_is_used
mom_regularize_layers::regularize_layers_init
-
subroutine
mom_diabatic_driver/
register_diabatic_restarts
(G, US, param_file, int_tide_CSp, restart_CSp)¶ Routine to register restarts, pass-through to children modules.
- Parameters:
g :: [in] The ocean’s grid structure
us :: [in] A dimensional unit scaling type
param_file :: [in] A structure to parse for run-time parameters
int_tide_csp :: Internal tide control structure
restart_csp :: MOM restart control structure
- Called from:
-
subroutine
mom_diabatic_driver/
diabatic_driver_end
(CS)¶ Routine to close the diabatic driver module.
- Parameters:
cs :: [inout] module control structure
- Call to: