mom_dynamics_unsplit_rk2 module reference

Time steps the ocean dynamics with an unsplit quasi 2nd order Runge-Kutta scheme.

More…

Data Types

mom_dyn_unsplit_rk2_cs

MOM_dynamics_unsplit_RK2 module control structure.

Functions/Subroutines

step_mom_dyn_unsplit_rk2()

Step the MOM6 dynamics using an unsplit quasi-2nd order Runge-Kutta scheme.

register_restarts_dyn_unsplit_rk2()

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_dyn_unsplit_rk2()

Initialize parameters and allocate memory associated with the unsplit RK2 dynamics module.

end_dyn_unsplit_rk2()

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:

mom_verticalgrid::get_flux_units

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