mom_dynamics_unsplit_rk2 module reference¶
Time steps the ocean dynamics with an unsplit quasi 2nd order Runge-Kutta scheme.
Data Types¶
MOM_dynamics_unsplit_RK2 module control structure. |
Functions/Subroutines¶
Step the MOM6 dynamics using an unsplit quasi-2nd order Runge-Kutta scheme. |
|
Allocate the control structure for this module, allocates memory in it, and registers any auxiliary restart variables that are specific to the unsplit RK2 time stepping scheme. |
|
Initialize parameters and allocate memory associated with the unsplit RK2 dynamics module. |
|
Clean up and deallocate memory associated with the dyn_unsplit_RK2 module. |
Detailed Description¶
Time steps the ocean dynamics with an unsplit quasi 2nd order Runge-Kutta scheme.
Type Documentation¶
-
type
mom_dynamics_unsplit_rk2/
mom_dyn_unsplit_rk2_cs
¶ MOM_dynamics_unsplit_RK2 module control structure.
- Type fields:
%
id_uh
[integer] :: Diagnostic IDs.%
id_vh
[integer] :: Diagnostic IDs.%
id_ueffa
[integer] :: Diagnostic IDs.%
id_veffa
[integer] :: Diagnostic IDs.%
id_pfu
[integer] :: Diagnostic IDs.%
id_pfv
[integer] :: Diagnostic IDs.%
id_cau
[integer] :: Diagnostic IDs.%
id_cav
[integer] :: Diagnostic IDs.%
real
(* diffv [*, *) :: CAu = f*v - u.grad(u) [L T-2 ~> m s-2].%
real
:: PFu = -dM/dx [L T-2 ~> m s-2].%
real
:: Zonal acceleration due to convergence of the along-isopycnal stress tensor [L T-2 ~> m s-2].%
real
:: CAv = -f*u - u.grad(v) [L T-2 ~> m s-2].%
real
:: PFv = -dM/dy [L T-2 ~> m s-2].%
real
:: Meridional acceleration due to convergence of the along-isopycnal stress tensor [L T-2 ~> m s-2].%
taux_bot
[real(:,:),pointer] :: frictional x-bottom stress from the ocean to the seafloor [R L Z T-2 ~> Pa]%
tauy_bot
[real(:,:),pointer] :: frictional y-bottom stress from the ocean to the seafloor [R L Z T-2 ~> Pa]%
be
[real] :: A nondimensional number from 0.5 to 1 that controls the backward weighting of the time stepping scheme [nondim].%
begw
[real] :: A nondimensional number from 0 to 1 that controls the extent to which the treatment of gravity waves is forward-backward (0) or simulated backward Euler (1) [nondim]. 0 is often used.%
dt_visc_bug
[logical] :: If false, use the correct timestep in the calculation of the turbulent mixed layer properties for viscosity. Otherwise if this is true, an older incorrect setting is used.%
debug
[logical] :: If true, write verbose checksums for debugging purposes.%
calculate_sal
[logical] :: If true, calculate self-attraction and loading.%
use_tides
[logical] :: If true, tidal forcing is enabled.%
module_is_initialized
[logical] :: Record whether this module has been initialized.%
diag
[type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.%
adp
[type( accel_diag_ptrs ),pointer] :: A structure pointing to the accelerations in the momentum equations, which can later be used to calculate derived diagnostics like energy budgets.%
cdp
[type( cont_diag_ptrs ),pointer] :: A structure with pointers to various terms in the continuity equations, which can later be used to calculate derived diagnostics like energy budgets.%
hor_visc
[type( hor_visc_cs )] :: A pointer to the horizontal viscosity control structure.%
continuity_csp
[type(continuity_cs)] :: A pointer to the continuity control structure.%
coriolisadv
[type( coriolisadv_cs )] :: The CoriolisAdv control structure.%
pressureforce_csp
[type( pressureforce_cs )] :: A pointer to the PressureForce control structure.%
vertvisc_csp
[type( vertvisc_cs ),pointer] :: A pointer to the vertvisc control structure.%
set_visc_csp
[type( set_visc_cs ),pointer] :: A pointer to the set_visc control structure.%
sal_csp
[type( sal_cs )] :: A pointer to the SAL control structure.%
tides_csp
[type( tidal_forcing_cs )] :: A pointer to the tidal forcing control structure.%
ale_csp
[type( ale_cs ),pointer] :: A pointer to the ALE control structure.%
obc
[type( ocean_obc_type ),pointer] :: A pointer to an open boundary condition type that specifies whether, where, and what open boundary conditions are used. If no open BCs are used, this pointer stays nullified. Flather OBCs use open boundary_CS as well.%
update_obc_csp
[type( update_obc_cs ),pointer] :: A pointer to the update_OBC control structure.
Function/Subroutine Documentation¶
-
subroutine
mom_dynamics_unsplit_rk2/
step_mom_dyn_unsplit_rk2
(u_in, v_in, h_in, tv, visc, Time_local, dt, forces, p_surf_begin, p_surf_end, uh, vh, uhtr, vhtr, eta_av, G, GV, US, CS, VarMix, MEKE, pbv)¶ Step the MOM6 dynamics using an unsplit quasi-2nd order Runge-Kutta scheme.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
u_in :: [inout] The input and output zonal velocity [L T-1 ~> m s-1].
v_in :: [inout] The input and output meridional velocity [L T-1 ~> m s-1].
h_in :: [inout] The input and output layer thicknesses, [H ~> m or kg m-2], depending on whether the Boussinesq approximation is made.
tv :: [in] A structure pointing to various thermodynamic variables.
visc :: [inout] A structure containing vertical viscosities, bottom drag viscosities, and related fields.
time_local :: [in] The model time at the end of the time step.
dt :: [in] The baroclinic dynamics time step [T ~> s].
forces :: [in] A structure with the driving mechanical forces
p_surf_begin :: A pointer (perhaps NULL) to the surface pressure at the beginning of this dynamic step [R L2 T-2 ~> Pa].
p_surf_end :: A pointer (perhaps NULL) to the surface pressure at the end of this dynamic step [R L2 T-2 ~> Pa].
uh :: [inout] The zonal volume or mass transport [H L2 T-1 ~> m3 s-1 or kg s-1].
vh :: [inout] The meridional volume or mass transport [H L2 T-1 ~> m3 s-1 or kg s-1].
uhtr :: [inout] The accumulated zonal volume or mass transport since the last tracer advection [H L2 ~> m3 or kg].
vhtr :: [inout] The accumulated meridional volume or mass transport since the last tracer advection [H L2 ~> m3 or kg].
eta_av :: [out] The time-mean free surface height or column mass [H ~> m or kg m-2].
cs :: The control structure set up by initialize_dyn_unsplit_RK2.
varmix :: [inout] Variable mixing control structure
meke :: [inout] MEKE fields fields related to the Mesoscale Eddy Kinetic Energy.
pbv :: [in] porous barrier fractional cell metrics
- Call to:
mom_coriolisadv::coradcalc
mom_hor_visc::horizontal_viscosity
id_clock_continuity
id_clock_cor
id_clock_horvisc
id_clock_mom_update
id_clock_pass
id_clock_pres
id_clock_vertvisc
mom_checksum_packages::mom_accel_chksum
mom_open_boundary::open_boundary_zero_normal_flow
mom_pressureforce::pressureforce
mom_set_visc::set_viscous_ml
mom_boundary_update::update_obc_data
mom_vert_friction::vertvisc
mom_vert_friction::vertvisc_coef
-
subroutine
mom_dynamics_unsplit_rk2/
register_restarts_dyn_unsplit_rk2
(HI, GV, param_file, CS)¶ Allocate the control structure for this module, allocates memory in it, and registers any auxiliary restart variables that are specific to the unsplit RK2 time stepping scheme.
All variables registered here should have the ability to be recreated if they are not present in a restart file.
- Parameters:
hi :: [in] A horizontal index type structure.
gv :: [in] The ocean’s vertical grid structure.
param_file :: [in] A structure to parse for run-time parameters.
cs :: The control structure set up by initialize_dyn_unsplit_RK2.
- Call to:
-
subroutine
mom_dynamics_unsplit_rk2/
initialize_dyn_unsplit_rk2
(u, v, h, Time, G, GV, US, param_file, diag, CS, Accel_diag, Cont_diag, MIS, OBC, update_OBC_CSp, ALE_CSp, set_visc, visc, dirs, ntrunc, cont_stencil)¶ Initialize parameters and allocate memory associated with the unsplit RK2 dynamics module.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
u :: [inout] The zonal velocity [L T-1 ~> m s-1].
v :: [inout] The meridional velocity [L T-1 ~> m s-1].
h :: [inout] Layer thicknesses [H ~> m or kg m-2]
time :: [in] The current model time.
param_file :: [in] A structure to parse for run-time parameters.
diag :: [inout] A structure that is used to regulate diagnostic output.
cs :: The control structure set up by initialize_dyn_unsplit_RK2.
accel_diag :: [inout] A set of pointers to the various accelerations in the momentum equations, which can be used for later derived diagnostics, like energy budgets.
cont_diag :: [inout] A structure with pointers to various terms in the continuity equations.
mis :: [inout] The “MOM6 Internal State” structure, used to pass around pointers to various arrays for diagnostic purposes.
obc :: If open boundary conditions are used, this points to the ocean_OBC_type that was set up in MOM_initialization.
update_obc_csp :: If open boundary condition updates are used, this points to the appropriate control structure.
ale_csp :: This points to the ALE control structure.
set_visc :: [in] set visc control structure
visc :: [inout] A structure containing vertical viscosities, bottom drag viscosities, and related fields.
dirs :: [in] A structure containing several relevant directory paths.
ntrunc :: [inout] A target for the variable that records the number of times the velocity is truncated (this should be 0).
cont_stencil :: [out] The stencil for thickness from the continuity solver.
- Call to:
mom_coriolisadv::coriolisadv_init
mom_verticalgrid::get_flux_units
mom_hor_visc::hor_visc_init
id_clock_continuity
id_clock_cor
id_clock_horvisc
id_clock_mom_update
id_clock_pass
id_clock_pass_init
id_clock_pres
id_clock_vertvisc
mom_pressureforce::pressureforce_init
mom_self_attr_load::sal_init
mom_tidal_forcing::tidal_forcing_init
mom_vert_friction::vertvisc_init
-
subroutine
mom_dynamics_unsplit_rk2/
end_dyn_unsplit_rk2
(CS)¶ Clean up and deallocate memory associated with the dyn_unsplit_RK2 module.
- Parameters:
cs :: dyn_unsplit_RK2 control structure that will be deallocated in this subroutine.
- Call to:
mom_self_attr_load::sal_end
mom_tidal_forcing::tidal_forcing_end