mom_dynamics_unsplit module reference

Time steps the ocean dynamics with an unsplit quasi 3rd order scheme.

More…

Data Types

mom_dyn_unsplit_cs

MOM_dynamics_unsplit module control structure.

Functions/Subroutines

step_mom_dyn_unsplit()

Step the MOM6 dynamics using an unsplit mixed 2nd order (for continuity) and 3rd order (for the inviscid momentum equations) order scheme.

register_restarts_dyn_unsplit()

Allocate the control structure for this module, allocates memory in it, and registers any auxiliary restart variables that are specific to the unsplit time stepping scheme.

initialize_dyn_unsplit()

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

end_dyn_unsplit()

Clean up and deallocate memory associated with the unsplit dynamics module.

Detailed Description

Time steps the ocean dynamics with an unsplit quasi 3rd order scheme.

Type Documentation

type mom_dynamics_unsplit/mom_dyn_unsplit_cs

MOM_dynamics_unsplit 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]

  • % dt_visc_bug [logical] :: If false, use the correct timestep in viscous terms applied in the first predictor step and in the calculation of the turbulent mixed layer properties for viscosity. 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 )] :: A pointer to 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.

  • % update_obc_csp [type( update_obc_cs ),pointer] :: A pointer to the update_OBC control structure.

Function/Subroutine Documentation

subroutine mom_dynamics_unsplit/step_mom_dyn_unsplit(u, v, h, 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, Waves)

Step the MOM6 dynamics using an unsplit mixed 2nd order (for continuity) and 3rd order (for the inviscid momentum equations) order 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 :: [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].

  • 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 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 start 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.

  • varmix :: [inout] Variable mixing control structure

  • meke :: [inout] MEKE fields

  • pbv :: [in] porous barrier fractional cell metrics

  • waves :: A pointer to a structure containing fields related to the surface wave conditions

Call to:

mom_coriolisadv::coradcalc mom_diag_mediator::diag_update_remap_grids 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/register_restarts_dyn_unsplit(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 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.

Call to:

mom_verticalgrid::get_flux_units mom_error_handler::mom_error

subroutine mom_dynamics_unsplit/initialize_dyn_unsplit(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 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.

  • 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_error_handler::mom_error 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/end_dyn_unsplit(CS)

Clean up and deallocate memory associated with the unsplit dynamics module.

Parameters:

cs :: unsplit dynamics control structure that will be deallocated in this subroutine.

Call to:

mom_self_attr_load::sal_end mom_tidal_forcing::tidal_forcing_end