MOM6
|
Control structure for the MOM module, including the variables that describe the state of the ocean.
Public variables and constants | |
real, dimension(:, :, :), allocatable | h |
layer thickness [H ~> m or kg m-2] | |
real, dimension(:, :, :), allocatable | t |
potential temperature [degC] | |
real, dimension(:, :, :), allocatable | s |
salinity [ppt] | |
real, dimension(:, :, :), allocatable | u |
zonal velocity component [m s-1] | |
real, dimension(:, :, :), allocatable | uh |
uh = u * h * dy at u grid points [H m2 s-1 ~> m3 s-1 or kg s-1] | |
real, dimension(:, :, :), allocatable | uhtr |
accumulated zonal thickness fluxes to advect tracers [H m2 ~> m3 or kg] | |
real, dimension(:, :, :), allocatable | v |
meridional velocity [m s-1] | |
real, dimension(:, :, :), allocatable | vh |
vh = v * h * dx at v grid points [H m2 s-1 ~> m3 s-1 or kg s-1] | |
real, dimension(:, :, :), allocatable | vhtr |
accumulated meridional thickness fluxes to advect tracers [H m2 ~> m3 or kg] | |
real, dimension(:, :), allocatable | ssh_rint |
A running time integral of the sea surface height [s m]. | |
real, dimension(:, :), allocatable | ave_ssh_ibc |
time-averaged (over a forcing time step) sea surface height with a correction for the inverse barometer [m] | |
real, dimension(:, :), allocatable | eta_av_bc |
free surface height or column mass time averaged over the last baroclinic dynamics time step [H ~> m or kg m-2] | |
real, dimension(:,:), pointer | hml => NULL() |
active mixed layer depth [m] | |
real | time_in_cycle |
The running time of the current time-stepping cycle in calls that step the dynamics, and also the length of the time integral of ssh_rint [s]. | |
real | time_in_thermo_cycle |
The running time of the current time-stepping cycle in calls that step the thermodynamics [s]. | |
type(ocean_grid_type) | g |
structure containing metrics and grid info | |
type(verticalgrid_type), pointer | gv => NULL() |
structure containing vertical grid info | |
type(unit_scale_type), pointer | us => NULL() |
structure containing various unit conversion factors | |
type(thermo_var_ptrs) | tv |
structure containing pointers to available thermodynamic fields | |
real | t_dyn_rel_adv |
The time of the dynamics relative to tracer advection and lateral mixing (in seconds), or equivalently the elapsed time since advectively updating the tracers. t_dyn_rel_adv is invariably positive and may span multiple coupling timesteps. | |
real | t_dyn_rel_thermo |
The time of the dynamics relative to diabatic processes and remapping (in seconds). t_dyn_rel_thermo can be negative or positive depending on whether the diabatic processes are applied before or after the dynamics and may span multiple coupling timesteps. | |
real | t_dyn_rel_diag |
The time of the diagnostics relative to diabatic processes and remapping (in seconds). t_dyn_rel_diag is always positive, since the diagnostics must lag. | |
integer | ndyn_per_adv = 0 |
Number of calls to dynamics since the last call to advection. | |
type(diag_ctrl) | diag |
structure to regulate diagnostic output timing | |
type(vertvisc_type) | visc |
structure containing vertical viscosities, bottom drag viscosities, and related fields | |
type(meke_type), pointer | meke => NULL() |
structure containing fields related to the Mesoscale Eddy Kinetic Energy | |
logical | adiabatic |
If true, there are no diapycnal mass fluxes, and no calls to routines to calculate or apply diapycnal fluxes. | |
logical | diabatic_first |
If true, apply diabatic and thermodynamic processes before time stepping the dynamics. | |
logical | use_ale_algorithm |
If true, use the ALE algorithm rather than layered isopycnal/stacked shallow water mode. This logical is set by calling the function useRegridding() from the MOM_regridding module. | |
logical | offline_tracer_mode = .false. |
If true, step_offline() is called instead of step_MOM(). This is intended for running MOM6 in offline tracer mode. | |
type(time_type), pointer | time |
pointer to the ocean clock | |
real | dt |
(baroclinic) dynamics time step [s] | |
real | dt_therm |
thermodynamics time step [s] | |
logical | thermo_spans_coupling |
If true, thermodynamic and tracer time steps can span multiple coupled time steps. | |
integer | nstep_tot = 0 |
The total number of dynamic timesteps tcaaken so far in this run segment. | |
logical | count_calls = .false. |
If true, count the calls to step_MOM, rather than the number of dynamics steps in nstep_tot. | |
logical | debug |
If true, write verbose checksums for debugging purposes. | |
integer | ntrunc |
number u,v truncations since last call to write_energy | |
logical | do_dynamics |
If false, does not call step_MOM_dyn_*. This is an undocumented run-time flag that is fragile. | |
logical | split |
If true, use the split time stepping scheme. | |
logical | use_rk2 |
If true, use RK2 instead of RK3 in unsplit mode (i.e., no split between barotropic and baroclinic). | |
logical | thickness_diffuse |
If true, diffuse interface height w/ a diffusivity KHTH. | |
logical | thickness_diffuse_first |
If true, diffuse thickness before dynamics. | |
logical | mixedlayer_restrat |
If true, use submesoscale mixed layer restratifying scheme. | |
logical | usemeke |
If true, call the MEKE parameterization. | |
logical | usewaves |
If true, update Stokes drift. | |
real | dtbt_reset_period |
The time interval between dynamic recalculation of the barotropic time step [s]. If this is negative dtbt is never calculated, and if it is 0, dtbt is calculated every step. | |
type(time_type) | dtbt_reset_interval |
A time_time representation of dtbt_reset_period. | |
type(time_type) | dtbt_reset_time |
The next time DTBT should be calculated. | |
real, dimension(:,:,:), pointer | h_pre_dyn => NULL() |
The thickness before the transports [H ~> m or kg m-2]. | |
real, dimension(:,:,:), pointer | t_pre_dyn => NULL() |
Temperature before the transports [degC]. | |
real, dimension(:,:,:), pointer | s_pre_dyn => NULL() |
Salinity before the transports [ppt]. | |
type(accel_diag_ptrs) | adp |
structure containing pointers to accelerations, for derived diagnostics (e.g., energy budgets) | |
type(cont_diag_ptrs) | cdp |
structure containing pointers to continuity equation terms, for derived diagnostics (e.g., energy budgets) | |
real, dimension(:,:,:), pointer | u_prev => NULL() |
previous value of u stored for diagnostics [m s-1] | |
real, dimension(:,:,:), pointer | v_prev => NULL() |
previous value of v stored for diagnostics [m s-1] | |
logical | interp_p_surf |
If true, linearly interpolate surface pressure over the coupling time step, using specified value at the end of the coupling step. False by default. | |
logical | p_surf_prev_set |
If true, p_surf_prev has been properly set from a previous time-step or the ocean restart file. This is only valid when interp_p_surf is true. | |
real, dimension(:,:), pointer | p_surf_prev => NULL() |
surface pressure [Pa] at end previous call to step_MOM | |
real, dimension(:,:), pointer | p_surf_begin => NULL() |
surface pressure [Pa] at start of step_MOM_dyn_... | |
real, dimension(:,:), pointer | p_surf_end => NULL() |
surface pressure [Pa] at end of step_MOM_dyn_... | |
logical | write_ic |
If true, then the initial conditions will be written to file. | |
character(len=120) | ic_file |
A file into which the initial conditions are written in a new run if SAVE_INITIAL_CONDS is true. | |
logical | calc_rho_for_sea_lev |
If true, calculate rho to convert pressure to sea level. | |
real | hmix |
Diagnostic mixed layer thickness over which to average surface tracer properties when a bulk mixed layer is not used [Z ~> m], or a negative value if a bulk mixed layer is being used. | |
real | hfrz |
If HFrz > 0, melt potential will be computed. The actual depth over which melt potential is computed will min(HFrz, OBLD), where OBLD is the boundary layer depth. If HFrz <= 0 (default), melt potential will not be computed. | |
real | hmix_uv |
Depth scale over which to average surface flow to feedback to the coupler/driver [Z ~> m] when bulk mixed layer is not used, or a negative value if a bulk mixed layer is being used. | |
logical | check_bad_sfc_vals |
If true, scan surface state for ridiculous values. | |
real | bad_val_ssh_max |
Maximum SSH before triggering bad value message [m]. | |
real | bad_val_sst_max |
Maximum SST before triggering bad value message [degC]. | |
real | bad_val_sst_min |
Minimum SST before triggering bad value message [degC]. | |
real | bad_val_sss_max |
Maximum SSS before triggering bad value message [ppt]. | |
real | bad_val_col_thick |
Minimum column thickness before triggering bad value message [m]. | |
type(mom_diag_ids) | ids |
Handles used for diagnostics. | |
type(transport_diag_ids) | transport_ids |
Handles used for transport diagnostics. | |
type(surface_diag_ids) | sfc_ids |
Handles used for surface diagnostics. | |
type(diag_grid_storage) | diag_pre_sync |
The grid (thicknesses) before remapping. | |
type(diag_grid_storage) | diag_pre_dyn |
The grid (thicknesses) before dynamics. | |
type(mom_dyn_unsplit_cs), pointer | dyn_unsplit_csp => NULL() |
Pointer to the control structure used for the unsplit dynamics. | |
type(mom_dyn_unsplit_rk2_cs), pointer | dyn_unsplit_rk2_csp => NULL() |
Pointer to the control structure used for the unsplit RK2 dynamics. | |
type(mom_dyn_split_rk2_cs), pointer | dyn_split_rk2_csp => NULL() |
Pointer to the control structure used for the mode-split RK2 dynamics. | |
type(thickness_diffuse_cs), pointer | thickness_diffuse_csp => NULL() |
Pointer to the control structure used for the isopycnal height diffusive transport. This is also common referred to as Gent-McWilliams diffusion. | |
type(mixedlayer_restrat_cs), pointer | mixedlayer_restrat_csp => NULL() |
Pointer to the control structure used for the mixed layer restratification. | |
type(set_visc_cs), pointer | set_visc_csp => NULL() |
Pointer to the control structure used to set viscosities. | |
type(diabatic_cs), pointer | diabatic_csp => NULL() |
Pointer to the control structure for the diabatic driver. | |
type(meke_cs), pointer | meke_csp => NULL() |
Pointer to the control structure for the MEKE updates. | |
type(varmix_cs), pointer | varmix => NULL() |
Pointer to the control structure for the variable mixing module. | |
type(barotropic_cs), pointer | barotropic_csp => NULL() |
Pointer to the control structure for the barotropic module. | |
type(tracer_registry_type), pointer | tracer_reg => NULL() |
Pointer to the MOM tracer registry. | |
type(tracer_advect_cs), pointer | tracer_adv_csp => NULL() |
Pointer to the MOM tracer advection control structure. | |
type(tracer_hor_diff_cs), pointer | tracer_diff_csp => NULL() |
Pointer to the MOM along-isopycnal tracer diffusion control structure. | |
type(tracer_flow_control_cs), pointer | tracer_flow_csp => NULL() |
Pointer to the control structure that orchestrates the calling of tracer packages. | |
type(update_obc_cs), pointer | update_obc_csp => NULL() |
Pointer to the control structure for updating open boundary condition properties. | |
type(ocean_obc_type), pointer | obc => NULL() |
Pointer to the MOM open boundary condition type. | |
type(sponge_cs), pointer | sponge_csp => NULL() |
Pointer to the layered-mode sponge control structure. | |
type(ale_sponge_cs), pointer | ale_sponge_csp => NULL() |
Pointer to the ALE-mode sponge control structure. | |
type(ale_cs), pointer | ale_csp => NULL() |
Pointer to the Arbitrary Lagrangian Eulerian (ALE) vertical coordinate control structure. | |
type(sum_output_cs), pointer | sum_output_csp => NULL() |
Pointer to the globally summed output control structure. | |
type(diagnostics_cs), pointer | diagnostics_csp => NULL() |
Pointer to the MOM diagnostics control structure. | |
type(offline_transport_cs), pointer | offline_csp => NULL() |
Pointer to the offline tracer transport control structure. | |
logical | ensemble_ocean |
if true, this run is part of a larger ensemble for the purpose of data assimilation or statistical analysis. | |
type(oda_cs), pointer | odacs => NULL() |
a pointer to the control structure for handling ensemble model state vectors and data assimilation increments and priors | |