MOM6
|
This is the main routine for MOM.
Modular Ocean Model (MOM) Version 6.0 (MOM6)
Additional contributions from:
MOM ice-shelf code was developed by
This program (MOM) simulates the ocean by numerically solving the hydrostatic primitive equations in generalized Lagrangian vertical coordinates, typically tracking stretched pressure (p*) surfaces or following isopycnals in the ocean's interior, and general orthogonal horizontal coordinates. Unlike earlier versions of MOM, in MOM6 these equations are horizontally discretized on an Arakawa C-grid. (It remains to be seen whether a B-grid dynamic core will be revived in MOM6 at a later date; for now applications requiring a B-grid discretization should use MOM5.1.) MOM6 offers a range of options for the physical parameterizations, from those most appropriate to highly idealized models for geophysical fluid dynamics studies to a rich suite of processes appropriate for realistic ocean simulations. The thermodynamic options typically use conservative temperature and preformed salinity as conservative state variables and a full nonlinear equation of state, but there are also idealized adiabatic configurations of the model that use fixed density layers. Version 6.0 of MOM continues in the long tradition of a commitment to climate-quality ocean simulations embodied in previous versions of MOM, even as it draws extensively on the lessons learned in the development of the Generalized Ocean Layered Dynamics (GOLD) ocean model, which was also primarily developed at NOAA/GFDL. MOM has also benefited tremendously from the FMS infrastructure, which it utilizes and shares with other component models developed at NOAA/GFDL.
When run is isopycnal-coordinate mode, the uppermost few layers are often used to describe a bulk mixed layer, including the effects of penetrating shortwave radiation. Either a split- explicit time stepping scheme or a non-split scheme may be used for the dynamics, while the time stepping may be split (and use different numbers of steps to cover the same interval) for the forcing, the thermodynamics, and for the dynamics. Most of the numerics are second order accurate in space. MOM can run with an absurdly thin minimum layer thickness. A variety of non-isopycnal vertical coordinate options are under development, but all exploit the advantages of a Lagrangian vertical coordinate, as discussed in detail by Adcroft and Hallberg (Ocean Modelling, 2006).
Details of the numerics and physical parameterizations are provided in the appropriate source files. All of the available options are selected at run-time by parsing the input files, usually MOM_input and MOM_override, and the options choices are then documented for each run in MOM_param_docs.
MOM6 integrates the equations forward in time in three distinct phases. In one phase, the dynamic equations for the velocities and layer thicknesses are advanced, capturing the propagation of external and internal inertia-gravity waves, Rossby waves, and other strictly adiabatic processes, including lateral stresses, vertical viscosity and momentum forcing, and interface height diffusion (commonly called Gent-McWilliams diffusion in depth- coordinate models). In the second phase, all tracers are advected and diffused along the layers. The third phase applies diabatic processes, vertical mixing of water properties, and perhaps vertical remapping to cause the layers to track the desired vertical coordinate.
The present file (MOM.F90) orchestrates the main time stepping loops. One time integration option for the dynamics uses a split explicit time stepping scheme to rapidly step the barotropic pressure and velocity fields. The barotropic velocities are averaged over the baroclinic time step before they are used to advect thickness and determine the baroclinic accelerations. As described in Hallberg and Adcroft (2009), a barotropic correction is applied to the time-mean layer velocities to ensure that the sum of the layer transports agrees with the time-mean barotropic transport, thereby ensuring that the estimates of the free surface from the sum of the layer thicknesses agrees with the final free surface height as calculated by the barotropic solver. The barotropic and baroclinic velocities are kept consistent by recalculating the barotropic velocities from the baroclinic transports each time step. This scheme is described in Hallberg, 1997, J. Comp. Phys. 135, 54-65 and in Hallberg and Adcroft, 2009, Ocean Modelling, 29, 15-26.
The other time integration options use non-split time stepping schemes based on the 3-step third order Runge-Kutta scheme described in Matsuno, 1966, J. Met. Soc. Japan, 44, 85-88, or on a two-step quasi-2nd order Runge-Kutta scheme. These are much slower than the split time-stepping scheme, but they are useful for providing a more robust solution for debugging cases where the more complicated split time-stepping scheme may be giving suspect solutions.
There are a range of closure options available. Horizontal velocities are subject to a combination of horizontal biharmonic and Laplacian friction (based on a stress tensor formalism) and a vertical Fickian viscosity (perhaps using the kinematic viscosity of water). The horizontal viscosities may be constant, spatially varying or may be dynamically calculated using Smagorinsky's approach. A diapycnal diffusion of density and thermodynamic quantities is also allowed, but not required, as is horizontal diffusion of interface heights (akin to the Gent-McWilliams closure of geopotential coordinate models). The diapycnal mixing may use a fixed diffusivity or it may use the shear Richardson number dependent closure, like that described in Jackson et al. (JPO, 2008). When there is diapycnal diffusion, it applies to momentum as well. As this is in addition to the vertical viscosity, the vertical Prandtl always exceeds 1. A refined bulk-mixed layer is often used to describe the planetary boundary layer in realistic ocean simulations.
MOM has a number of noteworthy debugging capabilities. Excessively large velocities are truncated and MOM will stop itself after a number of such instances to keep the model from crashing altogether. This is useful in diagnosing failures, or (by accepting some truncations) it may be useful for getting the model past the adjustment from an ill-balanced initial condition. In addition, all of the accelerations in the columns with excessively large velocities may be directed to a text file. Parallelization errors may be diagnosed using the DEBUG option, which causes extensive checksums to be written out along with comments indicating where in the algorithm the sums originate and what variable is being summed. The point where these checksums differ between runs is usually a good indication of where in the code the problem lies. All of the test cases provided with MOM are routinely tested to ensure that they give bitwise identical results regardless of the domain decomposition, or whether they use static or dynamic memory allocation.
About 115 other files of source code and 4 header files comprise the MOM code, although there are several hundred more files that make up the FMS infrastructure upon which MOM is built. Each of the MOM files contains comments documenting what it does, and most of the file names are fairly self-evident. In addition, all subroutines and data types are referenced via a module use, only statement, and the module names are consistent with the file names, so it is not too hard to find the source file for a subroutine.
The typical MOM directory tree is as follows:
../MOM |-- config_src | |-- coupled_driver | |-- dynamic | `-- solo_driver |-- examples | |-- CM2G | |-- ... | `-- torus_advection_test `-- src |-- core |-- diagnostics |-- equation_of_state |-- framework |-- ice_shelf |-- initialization |-- parameterizations | |-- lateral | `-- vertical |-- tracer `-- user
Rather than describing each file here, each directory contents will be described to give a broad overview of the MOM code structure.
The directories under config_src contain files that are used for configuring the code, for instance for coupled or ocean-only runs. Only one or two of these directories are used in compiling any, particular run.
config_src/solo_driver: The files here are include the _main driver that is used when MOM is configured as an ocean-only model, as well as the files that specify the surface forcing in this configuration.
The directories under examples provide a large number of working configurations of MOM, along with reference solutions for several different compilers on GFDL's latest large computer. The versions of MOM_memory.h in these directories need not be used if dynamic memory allocation is desired, and the answers should be unchanged.
The directories under src contain most of the MOM files. These files are used in every configuration using MOM.
Most simulations can be set up by modifying only the files MOM_input, and possibly one or two of the files in src/user. In addition, the diag_table (MOM_diag_table) will commonly be modified to tailor the output to the needs of the question at hand. The FMS utility mkmf works with a file called path_names to build an appropriate makefile, and path_names should be edited to reflect the actual location of the desired source code.
There are 3 publicly visible subroutines in this file (MOM.F90).
calculate_surface_state determines the surface (bulk mixed layer if traditional isoycnal vertical coordinate) properties of the current model state and packages pointers to these fields into an exported structure.
The remaining subroutines in this file (src/core/MOM.F90) are:
Here are some example heat budgets for the ALE version of MOM6.
Depth integrated heat budget diagnostic for MOM.
Here is an example 3d heat budget diagnostic for MOM.
HFDS = FRAZIL_HEAT_TENDENCY[k=@sum] + BOUNDARY_FORCING_HEAT_TENDENCY[k=@sum]
Here is an example 2d heat budget (depth summed) diagnostic for MOM.
OPOTTEMPTEND_2d = T_ADVECTION_XY_2d + OPOTTEMPPMDIFF_2d + HFDS
Here is an example 3d salt budget diagnostic for MOM.
SFDSI = BOUNDARY_FORCING_SALT_TENDENCY[k=@sum]
Here is an example 2d salt budget (depth summed) diagnostic for MOM.
Data Types | |
type | mom_control_struct |
Control structure for this module. More... | |
Functions/Subroutines | |
subroutine, public | step_mom (fluxes, state, Time_start, time_interval, CS) |
This subroutine orchestrates the time stepping of MOM. The adiabatic dynamics are stepped by calls to one of the step_MOM_dyn_...routines. The action of lateral processes on tracers occur in calls to advect_tracer and tracer_hordiff. Vertical mixing and possibly remapping occur inside of diabatic. More... | |
subroutine | step_mom_thermo (CS, G, GV, u, v, h, tv, fluxes, dtdia) |
MOM_step_thermo orchestrates the thermodynamic time stepping and vertical remapping, via calls to diabatic (or adiabatic) and ALE_main. More... | |
subroutine, public | step_offline (fluxes, state, Time_start, time_interval, CS) |
step_offline is the main driver for running tracers offline in MOM6. This has been primarily developed with ALE configurations in mind. Some work has been done in isopycnal configuration, but the work is very preliminary. Some more detail about this capability along with some of the subroutines called here can be found in tracers/MOM_offline_control.F90 More... | |
subroutine, public | initialize_mom (Time, param_file, dirs, CS, Time_in, offline_tracer_mode) |
This subroutine initializes MOM. More... | |
subroutine, public | finish_mom_initialization (Time, dirs, CS, fluxes) |
This subroutine finishes initializing MOM and writes out the initial conditions. More... | |
subroutine | register_diags (Time, G, GV, CS, ADp) |
Register the diagnostics. More... | |
subroutine | register_diags_ts_tendency (Time, G, CS) |
Initialize diagnostics for temp/heat and saln/salt tendencies. More... | |
subroutine | register_diags_ts_vardec (Time, HI, GV, param_file, CS) |
Initialize diagnostics for the variance decay of temp/salt across regridding/remapping. More... | |
subroutine | mom_timing_init (CS) |
This subroutine sets up clock IDs for timing various subroutines. More... | |
subroutine | post_transport_diagnostics (G, GV, CS, diag, dt_trans, h, h_pre_dyn) |
This routine posts diagnostics of the transports, including the subgridscale contributions. More... | |
subroutine | post_ts_diagnostics (CS, G, GV, tv, diag, dt) |
Post diagnostics of temperatures and salinities, their fluxes, and tendencies. More... | |
subroutine | post_diags_ts_vardec (G, CS, dt) |
Calculate and post variance decay diagnostics for temp/salt. More... | |
subroutine | post_integrated_diagnostics (CS, G, GV, diag, dt_int, tv, fluxes) |
This routine posts diagnostics of various integrated quantities. More... | |
subroutine | post_surface_diagnostics (CS, G, diag, state) |
This routine posts diagnostics of various ocean surface quantities. More... | |
subroutine | write_static_fields (G, diag) |
Offers the static fields in the ocean grid type for output via the diag_manager. More... | |
subroutine | set_restart_fields (GV, param_file, CS) |
Set the fields that are needed for bitwise identical restarting the time stepping scheme. In addition to those specified here directly, there may be fields related to the forcing or to the barotropic solver that are needed; these are specified in sub- routines that are called from this one. More... | |
subroutine | adjust_ssh_for_p_atm (CS, G, GV, ssh, p_atm) |
This subroutine applies a correction to the sea surface height to compensate for the atmospheric pressure (the inverse barometer). More... | |
subroutine, public | calculate_surface_state (state, u, v, h, ssh, G, GV, CS) |
This subroutine sets the surface (return) properties of the ocean model by setting the appropriate fields in state. Unused fields are set to NULL or are unallocated. More... | |
subroutine, public | mom_end (CS) |
End of model. More... | |
Variables | |
integer | id_clock_ocean |
integer | id_clock_dynamics |
integer | id_clock_thermo |
integer | id_clock_tracer |
integer | id_clock_diabatic |
integer | id_clock_continuity |
integer | id_clock_thick_diff |
integer | id_clock_bbl_visc |
integer | id_clock_ml_restrat |
integer | id_clock_diagnostics |
integer | id_clock_z_diag |
integer | id_clock_init |
integer | id_clock_mom_init |
integer | id_clock_pass |
integer | id_clock_pass_init |
integer | id_clock_ale |
integer | id_clock_other |
integer | id_clock_offline_tracer |
|
private |
This subroutine applies a correction to the sea surface height to compensate for the atmospheric pressure (the inverse barometer).
[in] | cs | control structure |
[in] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in,out] | ssh | time mean surface height (m) |
p_atm | atmospheric pressure (Pascal) |
Definition at line 3408 of file MOM.F90.
Referenced by step_mom(), and step_offline().
subroutine, public mom::calculate_surface_state | ( | type(surface), intent(inout) | state, |
real, dimension(szib_(g),szj_(g),szk_(g)), intent(in) | u, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(in) | v, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
real, dimension(szi_(g),szj_(g)), intent(in) | ssh, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(inout) | GV, | ||
type(mom_control_struct), intent(inout) | CS | ||
) |
This subroutine sets the surface (return) properties of the ocean model by setting the appropriate fields in state. Unused fields are set to NULL or are unallocated.
[in,out] | g | ocean grid structure |
[in,out] | gv | ocean vertical grid structure |
[in,out] | state | ocean surface state |
[in] | u | zonal velocity (m/s) |
[in] | v | meridional velocity (m/s) |
[in] | h | layer thickness (m or kg/m2) |
[in] | ssh | time mean surface height (m) |
[in,out] | cs | control structure |
Definition at line 3441 of file MOM.F90.
Referenced by mom_main(), step_mom(), and step_offline().
subroutine, public mom::finish_mom_initialization | ( | type(time_type), intent(in) | Time, |
type(directories), intent(in) | dirs, | ||
type(mom_control_struct), pointer | CS, | ||
type(forcing), intent(inout) | fluxes | ||
) |
This subroutine finishes initializing MOM and writes out the initial conditions.
[in] | time | model time, used in this routine |
[in] | dirs | structure with directory paths |
cs | pointer set in this routine to MOM control structure | |
[in,out] | fluxes | pointers to forcing fields |
Definition at line 2345 of file MOM.F90.
References mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), and id_clock_init.
Referenced by mom_main().
subroutine, public mom::initialize_mom | ( | type(time_type), intent(inout), target | Time, |
type(param_file_type), intent(out) | param_file, | ||
type(directories), intent(out) | dirs, | ||
type(mom_control_struct), pointer | CS, | ||
type(time_type), intent(in), optional | Time_in, | ||
logical, intent(out), optional | offline_tracer_mode | ||
) |
This subroutine initializes MOM.
[in,out] | time | model time, set in this routine |
[out] | param_file | structure indicating paramater file to parse |
[out] | dirs | structure with directory paths |
cs | pointer set in this routine to MOM control structure | |
[in] | time_in | time passed to MOM_initialize_state when model is not being started from a restart file |
[out] | offline_tracer_mode | True if tracers are being run offline |
Definition at line 1480 of file MOM.F90.
References mom_diabatic_driver::adiabatic_driver_init(), mom_boundary_update::call_obc_register(), mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), mom_error_handler::calltree_waypoint(), mom_transcribe_grid::copy_dyngrid_to_mom_grid(), mom_transcribe_grid::copy_mom_grid_to_dyngrid(), mom_dyn_horgrid::create_dyn_horgrid(), mom_dyn_horgrid::destroy_dyn_horgrid(), mom_diag_mediator::diag_masks_set(), mom_obsolete_params::find_obsolete_params(), mom_get_input::get_mom_input(), mom_hor_index::hor_index_init(), id_clock_init, id_clock_mom_init, id_clock_pass_init, mom_ale_sponge::init_ale_sponge_diags(), mom_sponge::init_sponge_diags(), mom_tracer_registry::lock_tracer_registry(), mom_meke::meke_alloc_register_restart(), mom_meke::meke_init(), mom_mixed_layer_restrat::mixedlayer_restrat_register_restarts(), mom_grid::mom_grid_end(), mom_grid::mom_grid_init(), mom_coord_initialization::mom_initialize_coord(), mom_fixed_initialization::mom_initialize_fixed(), mom_state_initialization::mom_initialize_state(), mom_timing_init(), mom_neutral_diffusion::neutral_diffusion_diag_init(), register_diags(), register_diags_ts_tendency(), register_diags_ts_vardec(), mom_obsolete_diagnostics::register_obsolete_diagnostics(), mom_restart::restart_init(), mom_diag_mediator::set_axes_info(), set_restart_fields(), mom_set_visc::set_visc_register_restarts(), mom_thickness_diffuse::thickness_diffuse_init(), mom_unit_tests::unit_tests(), and write_static_fields().
Referenced by mom_main().
subroutine, public mom::mom_end | ( | type(mom_control_struct), pointer | CS | ) |
End of model.
cs | MOM control structure |
Definition at line 3746 of file MOM.F90.
Referenced by mom_main().
|
private |
This subroutine sets up clock IDs for timing various subroutines.
[in] | cs | control structure set up by initialize_MOM. |
Definition at line 2763 of file MOM.F90.
References id_clock_ale, id_clock_bbl_visc, id_clock_continuity, id_clock_diabatic, id_clock_diagnostics, id_clock_dynamics, id_clock_ml_restrat, id_clock_mom_init, id_clock_ocean, id_clock_offline_tracer, id_clock_other, id_clock_pass, id_clock_pass_init, id_clock_thermo, id_clock_thick_diff, id_clock_tracer, and id_clock_z_diag.
Referenced by initialize_mom().
|
private |
Calculate and post variance decay diagnostics for temp/salt.
[in] | g | ocean grid structure |
[in] | cs | control structure |
[in] | dt | total time step |
Definition at line 3017 of file MOM.F90.
Referenced by step_mom_thermo().
|
private |
This routine posts diagnostics of various integrated quantities.
[in] | cs | control structure |
[in] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | diag | regulates diagnostic output |
[in] | dt_int | total time step associated with these diagnostics, in s. |
[in] | tv | A structure pointing to various thermodynamic variables type(forcing), intent(inout) :: fluxes !< pointers to forcing fields |
[in] | fluxes | pointers to forcing fields |
Definition at line 3045 of file MOM.F90.
Referenced by step_mom().
|
private |
This routine posts diagnostics of various ocean surface quantities.
[in] | cs | control structure |
[in] | g | ocean grid structure |
[in] | diag | regulates diagnostic output |
[in] | state | ocean surface state |
Definition at line 3170 of file MOM.F90.
Referenced by step_mom().
|
private |
This routine posts diagnostics of the transports, including the subgridscale contributions.
[in,out] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | cs | control structure |
[in,out] | diag | regulates diagnostic output |
[in] | dt_trans | total time step associated with the transports, in s. |
[in] | h | The updated layer thicknesses, in H |
[in] | h_pre_dyn | The thickness before the transports, in H. |
Definition at line 2794 of file MOM.F90.
References id_clock_z_diag.
Referenced by step_mom().
|
private |
Post diagnostics of temperatures and salinities, their fluxes, and tendencies.
[in,out] | cs | control structure |
[in] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | tv | A structure pointing to various thermodynamic variables type(forcing), intent(inout) :: fluxes !< pointers to forcing fields |
[in] | diag | regulates diagnostic output |
[in] | dt | total time step for T,S update |
Definition at line 2858 of file MOM.F90.
Referenced by step_mom().
|
private |
Register the diagnostics.
[in] | time | current model time |
[in,out] | g | ocean grid structu |
[in,out] | gv | ocean vertical grid structure |
cs | control structure set up by initialize_MOM | |
[in,out] | adp | structure pointing to accelerations in momentum equation |
Definition at line 2385 of file MOM.F90.
References mom_verticalgrid::get_flux_units(), mom_verticalgrid::get_thickness_units(), and mom_verticalgrid::get_tr_flux_units().
Referenced by initialize_mom().
|
private |
Initialize diagnostics for temp/heat and saln/salt tendencies.
[in] | time | current model time |
[in,out] | g | ocean grid structure |
cs | control structure set up by initialize_MOM |
Definition at line 2626 of file MOM.F90.
Referenced by initialize_mom().
|
private |
Initialize diagnostics for the variance decay of temp/salt across regridding/remapping.
[in] | time | current model time |
[in] | hi | horizontal index type |
[in] | gv | ocean vertical grid structure |
[in] | param_file | parameter file |
cs | control structure for MOM |
Definition at line 2725 of file MOM.F90.
Referenced by initialize_mom().
|
private |
Set the fields that are needed for bitwise identical restarting the time stepping scheme. In addition to those specified here directly, there may be fields related to the forcing or to the barotropic solver that are needed; these are specified in sub- routines that are called from this one.
This routine should be altered if there are any changes to the time stepping scheme. The CHECK_RESTART facility may be used to confirm that all needed restart fields have been included.
[in,out] | gv | ocean vertical grid structure |
[in] | param_file | opened file for parsing to get parameters |
[in] | cs | control structure set up by inialize_MOM |
Definition at line 3354 of file MOM.F90.
Referenced by initialize_mom().
subroutine, public mom::step_mom | ( | type(forcing), intent(inout) | fluxes, |
type(surface), intent(inout) | state, | ||
type(time_type), intent(in) | Time_start, | ||
real, intent(in) | time_interval, | ||
type(mom_control_struct), pointer | CS | ||
) |
This subroutine orchestrates the time stepping of MOM. The adiabatic dynamics are stepped by calls to one of the step_MOM_dyn_...routines. The action of lateral processes on tracers occur in calls to advect_tracer and tracer_hordiff. Vertical mixing and possibly remapping occur inside of diabatic.
[in,out] | fluxes | pointers to forcing fields |
[in,out] | state | surface ocean state |
[in] | time_start | starting time of a segment, as a time type |
[in] | time_interval | time interval covered by this run segment, in s. |
cs | control structure from initialize_MOM |
Definition at line 466 of file MOM.F90.
References adjust_ssh_for_p_atm(), mom_dynamics_legacy_split::adjustments_dyn_legacy_split(), mom_lateral_mixing_coeffs::calc_resoln_function(), calculate_surface_state(), mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), mom_error_handler::calltree_waypoint(), mom_domains::complete_group_pass(), id_clock_bbl_visc, id_clock_diagnostics, id_clock_dynamics, id_clock_ml_restrat, id_clock_ocean, id_clock_other, id_clock_pass, id_clock_thermo, id_clock_thick_diff, id_clock_tracer, id_clock_z_diag, mom_forcing_type::mom_forcing_chksum(), post_integrated_diagnostics(), post_surface_diagnostics(), post_transport_diagnostics(), post_ts_diagnostics(), mom_domains::start_group_pass(), mom_meke::step_forward_meke(), step_mom_thermo(), and mom_thickness_diffuse::thickness_diffuse().
Referenced by mom_main().
|
private |
MOM_step_thermo orchestrates the thermodynamic time stepping and vertical remapping, via calls to diabatic (or adiabatic) and ALE_main.
[in,out] | cs | control structure |
[in,out] | g | ocean grid structure |
[in,out] | gv | ocean vertical grid structure |
[in,out] | u | zonal velocity (m/s) |
[in,out] | v | meridional velocity (m/s) |
[in,out] | h | layer thickness (m or kg/m2) |
[in,out] | tv | A structure pointing to various thermodynamic variables |
[in,out] | fluxes | pointers to forcing fields |
[in] | dtdia | The time interval over which to advance, in s |
Definition at line 1131 of file MOM.F90.
References mom_diabatic_driver::adiabatic(), mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), mom_error_handler::calltree_waypoint(), id_clock_ale, id_clock_diabatic, id_clock_pass, mom_forcing_type::mom_forcing_chksum(), mom_checksum_packages::mom_thermo_chksum(), and post_diags_ts_vardec().
Referenced by step_mom().
subroutine, public mom::step_offline | ( | type(forcing), intent(inout) | fluxes, |
type(surface), intent(inout) | state, | ||
type(time_type), intent(in) | Time_start, | ||
real, intent(in) | time_interval, | ||
type(mom_control_struct), pointer | CS | ||
) |
step_offline is the main driver for running tracers offline in MOM6. This has been primarily developed with ALE configurations in mind. Some work has been done in isopycnal configuration, but the work is very preliminary. Some more detail about this capability along with some of the subroutines called here can be found in tracers/MOM_offline_control.F90
[in,out] | fluxes | pointers to forcing fields |
[in,out] | state | surface ocean state |
[in] | time_start | starting time of a segment, as a time type |
[in] | time_interval | time interval |
cs | control structure from initialize_MOM |
Definition at line 1294 of file MOM.F90.
References adjust_ssh_for_p_atm(), mom_ale::ale_offline_tracer_final(), mom_lateral_mixing_coeffs::calc_resoln_function(), calculate_surface_state(), id_clock_ale, id_clock_offline_tracer, and mom_offline_main::offline_advection_layer().
Referenced by mom_main(), and ocean_model_mod::update_ocean_model().
|
private |
Offers the static fields in the ocean grid type for output via the diag_manager.
[in] | g | ocean grid structure |
[in,out] | diag | regulates diagnostic output |
Definition at line 3236 of file MOM.F90.
Referenced by initialize_mom().
|
private |
Definition at line 453 of file MOM.F90.
Referenced by mom_timing_init(), step_mom_thermo(), and step_offline().
|
private |
Definition at line 445 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 443 of file MOM.F90.
Referenced by mom_timing_init().
|
private |
Definition at line 442 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom_thermo().
|
private |
Definition at line 447 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 439 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 449 of file MOM.F90.
Referenced by finish_mom_initialization(), and initialize_mom().
|
private |
Definition at line 446 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 450 of file MOM.F90.
Referenced by initialize_mom(), and mom_timing_init().
integer mom::id_clock_ocean |
Definition at line 438 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 455 of file MOM.F90.
Referenced by mom_timing_init(), and step_offline().
|
private |
Definition at line 454 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 451 of file MOM.F90.
Referenced by mom_timing_init(), step_mom(), and step_mom_thermo().
|
private |
Definition at line 452 of file MOM.F90.
Referenced by initialize_mom(), and mom_timing_init().
|
private |
Definition at line 440 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 444 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 441 of file MOM.F90.
Referenced by mom_timing_init(), and step_mom().
|
private |
Definition at line 448 of file MOM.F90.
Referenced by mom_timing_init(), post_transport_diagnostics(), and step_mom().