MOM6
|
Time steps the ocean dynamics with an unsplit quasi 2nd order Runge-Kutta scheme.
Data Types | |
type | mom_dyn_unsplit_rk2_cs |
MOM_dynamics_unsplit_RK2 module control structure. More... | |
integer | id_clock_cor |
CPU time clock IDs. More... | |
integer | id_clock_pres |
CPU time clock IDs. More... | |
integer | id_clock_vertvisc |
CPU time clock IDs. More... | |
integer | id_clock_horvisc |
CPU time clock IDs. More... | |
integer | id_clock_continuity |
CPU time clock IDs. More... | |
integer | id_clock_mom_update |
CPU time clock IDs. More... | |
integer | id_clock_pass |
CPU time clock IDs. More... | |
integer | id_clock_pass_init |
CPU time clock IDs. More... | |
subroutine, public | 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) |
Step the MOM6 dynamics using an unsplit quasi-2nd order Runge-Kutta scheme. More... | |
subroutine, public | register_restarts_dyn_unsplit_rk2 (HI, GV, param_file, CS, restart_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. More... | |
subroutine, public | initialize_dyn_unsplit_rk2 (u, v, h, Time, G, GV, US, param_file, diag, CS, restart_CS, Accel_diag, Cont_diag, MIS, MEKE, OBC, update_OBC_CSp, ALE_CSp, setVisc_CSp, visc, dirs, ntrunc) |
Initialize parameters and allocate memory associated with the unsplit RK2 dynamics module. More... | |
subroutine, public | end_dyn_unsplit_rk2 (CS) |
Clean up and deallocate memory associated with the dyn_unsplit_RK2 module. More... | |
subroutine, public mom_dynamics_unsplit_rk2::end_dyn_unsplit_rk2 | ( | type(mom_dyn_unsplit_rk2_cs), pointer | CS | ) |
Clean up and deallocate memory associated with the dyn_unsplit_RK2 module.
cs | dyn_unsplit_RK2 control structure that will be deallocated in this subroutine. |
Definition at line 657 of file MOM_dynamics_unsplit_RK2.F90.
subroutine, public mom_dynamics_unsplit_rk2::initialize_dyn_unsplit_rk2 | ( | real, dimension( g %isdb: g %iedb, g %jsd: g %jed, g %ke), intent(inout) | u, |
real, dimension( g %isd: g %ied, g %jsdb: g %jedb, g %ke), intent(inout) | v, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(inout) | h, | ||
type(time_type), intent(in), target | Time, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(mom_dyn_unsplit_rk2_cs), pointer | CS, | ||
type(mom_restart_cs), pointer | restart_CS, | ||
type(accel_diag_ptrs), intent(inout), target | Accel_diag, | ||
type(cont_diag_ptrs), intent(inout), target | Cont_diag, | ||
type(ocean_internal_state), intent(inout) | MIS, | ||
type(meke_type), pointer | MEKE, | ||
type(ocean_obc_type), pointer | OBC, | ||
type(update_obc_cs), pointer | update_OBC_CSp, | ||
type(ale_cs), pointer | ALE_CSp, | ||
type(set_visc_cs), pointer | setVisc_CSp, | ||
type(vertvisc_type), intent(inout) | visc, | ||
type(directories), intent(in) | dirs, | ||
integer, intent(inout), target | ntrunc | ||
) |
Initialize parameters and allocate memory associated with the unsplit RK2 dynamics module.
[in,out] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in,out] | u | The zonal velocity [L T-1 ~> m s-1]. |
[in,out] | v | The meridional velocity [L T-1 ~> m s-1]. |
[in,out] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | time | The current model time. |
[in] | param_file | A structure to parse for run-time parameters. |
[in,out] | diag | A structure that is used to regulate diagnostic output. |
cs | The control structure set up by initialize_dyn_unsplit_RK2. | |
restart_cs | A pointer to the restart control structure. | |
[in,out] | accel_diag | A set of pointers to the various accelerations in the momentum equations, which can be used for later derived diagnostics, like energy budgets. |
[in,out] | cont_diag | A structure with pointers to various terms in the continuity equations. |
[in,out] | mis | The "MOM6 Internal State" structure, used to pass around pointers to various arrays for diagnostic purposes. |
meke | MEKE data | |
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. | |
setvisc_csp | This points to the set_visc control structure. | |
[in,out] | visc | A structure containing vertical viscosities, bottom drag viscosities, and related fields. |
[in] | dirs | A structure containing several relevant directory paths. |
[in,out] | ntrunc | A target for the variable that records the number of times the velocity is truncated (this should be 0). |
Definition at line 510 of file MOM_dynamics_unsplit_RK2.F90.
References mom_continuity::continuity_init(), 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_tidal_forcing::tidal_forcing_init(), and mom_vert_friction::vertvisc_init().
subroutine, public mom_dynamics_unsplit_rk2::register_restarts_dyn_unsplit_rk2 | ( | type(hor_index_type), intent(in) | HI, |
type(verticalgrid_type), intent(in) | GV, | ||
type(param_file_type), intent(in) | param_file, | ||
type(mom_dyn_unsplit_rk2_cs), pointer | CS, | ||
type(mom_restart_cs), pointer | restart_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.
[in] | hi | A horizontal index type structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | param_file | A structure to parse for run-time parameters. |
cs | The control structure set up by initialize_dyn_unsplit_RK2. | |
restart_cs | A pointer to the restart control structure. |
Definition at line 465 of file MOM_dynamics_unsplit_RK2.F90.
References mom_verticalgrid::get_flux_units().
subroutine, public mom_dynamics_unsplit_rk2::step_mom_dyn_unsplit_rk2 | ( | real, dimension(szib_(g),szj_(g),szk_(g)), intent(inout) | u_in, |
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(inout) | v_in, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(inout) | h_in, | ||
type(thermo_var_ptrs), intent(in) | tv, | ||
type(vertvisc_type), intent(inout) | visc, | ||
type(time_type), intent(in) | Time_local, | ||
real, intent(in) | dt, | ||
type(mech_forcing), intent(in) | forces, | ||
real, dimension(:,:), pointer | p_surf_begin, | ||
real, dimension(:,:), pointer | p_surf_end, | ||
real, dimension(szib_(g),szj_(g),szk_(g)), intent(inout) | uh, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(inout) | vh, | ||
real, dimension(szib_(g),szj_(g),szk_(g)), intent(inout) | uhtr, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(inout) | vhtr, | ||
real, dimension(szi_(g),szj_(g)), intent(out) | eta_av, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(mom_dyn_unsplit_rk2_cs), pointer | CS, | ||
type(varmix_cs), pointer | VarMix, | ||
type(meke_type), pointer | MEKE | ||
) |
Step the MOM6 dynamics using an unsplit quasi-2nd order Runge-Kutta scheme.
[in,out] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in,out] | u_in | The input and output zonal velocity [L T-1 ~> m s-1]. |
[in,out] | v_in | The input and output meridional velocity [L T-1 ~> m s-1]. |
[in,out] | h_in | The input and output layer thicknesses, [H ~> m or kg m-2], depending on whether the Boussinesq approximation is made. |
[in] | tv | A structure pointing to various thermodynamic variables. |
[in,out] | visc | A structure containing vertical viscosities, bottom drag viscosities, and related fields. |
[in] | time_local | The model time at the end of the time step. |
[in] | dt | The baroclinic dynamics time step [T ~> s]. |
[in] | forces | 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 [Pa]. | |
p_surf_end | A pointer (perhaps NULL) to the surface pressure at the end of this dynamic step [Pa]. | |
[in,out] | uh | The zonal volume or mass transport [H L2 T-1 ~> m3 s-1 or kg s-1]. |
[in,out] | vh | The meridional volume or mass transport [H L2 T-1 ~> m3 s-1 or kg s-1]. |
[in,out] | uhtr | The accumulated zonal volume or mass transport since the last tracer advection [H L2 ~> m3 or kg]. |
[in,out] | vhtr | The accumulated meridional volume or mass transport since the last tracer advection [H L2 ~> m3 or kg]. |
[out] | eta_av | 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 | A pointer to a structure with fields that specify the spatially variable viscosities. | |
meke | A pointer to a structure containing fields related to the Mesoscale Eddy Kinetic Energy. |
Definition at line 191 of file MOM_dynamics_unsplit_RK2.F90.
References mom_continuity::continuity(), 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(), and mom_vert_friction::vertvisc_coef().
|
private |
CPU time clock IDs.
Definition at line 179 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
integer mom_dynamics_unsplit_rk2::id_clock_cor |
CPU time clock IDs.
Definition at line 178 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 179 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 179 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 180 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 180 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 178 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().
|
private |
CPU time clock IDs.
Definition at line 178 of file MOM_dynamics_unsplit_RK2.F90.
Referenced by initialize_dyn_unsplit_rk2(), and step_mom_dyn_unsplit_rk2().