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