PyMOC is a suite of python modules to build simple "toy" models for ocean's Meridional Overturning Circulation (MOC).
The model suite consists of several independent modules representing various ocean regions and dynamics. Specifically, there are modules for calculating the 1-D advective-diffusive buoyancy tendencies averaged over ocean basins, given the net isopycnal transports in and out of the column. The isopycnal transports are computed as diagnostic relationships, with modules to calculate the wind- and eddy-driven residual circulation in a southern-ocean-like re-entrant channel, as well as the geostrophic exchange between different basins or basin regions. These modules may be coupled to study the circulation in a wide range of different configurations.
The intended audiences for this model are researchers, educators and students in the geophysical sciences. The goal is to provide an accessible model appropriate for newcomers to geophysical modeling, but with physics that reflect the current state of our theoretical understanding of the deep ocean overturning circulation.
Configuration and execution of the PyMOC suite requires relatively little technical knowledge or computational resources. All modules are written in pure Python, and the only core dependencies are the NumPy and SciPy libraries. If configuration of your base system environment is undesirable, a preconfigured Docker container has been made available with all required software libraries pre-installed.
Anybody is more than welcome to contibute to the development of PyMOC, but is asked to adhere to the goal of keeping PyMOC well tested, stable, maintainable, and documented. Further details on installation, configuration, contribution, and issue reporting is available in the documentation.
Several more modules have been added, all for the Southern Ocean (SO) region, for the paper of:
Time-dependent response of the overturning circulation and pycnocline depth to Southern Ocean wind stress changes
The added modules are:
psi_SO_varKGM_local.py
psi_SO_varKGM_bulk.py
psi_SO_Kst_Ktr.py
psi_SO_Ktr_Tst.py
psi_SO_Keff.py
psi_SO_Keff_Ktr.py
psi_SO_Keff_Dc.py
The specific assumptions of these modules are:
psi_SO_varKGM_local.py
The SO diffusivity is parameterized as
i.e., it adopts the form of the diffusivity in Jones et al. (2011) but for each layer.
psi_SO_varKGM_bulk.py
This is the module that is used to compute the SO dynamics used in PyMOC-no-meander configuration, where only transient eddies are considered, and a bulk value of pycnocline depth is used to parameterize the diffusivity. Specifically, the SO diffusivity is parameterized as
i.e., it is the bulk value of D, instead of the depth of each layer, that is used to compute a vertically constant diffusivity.
psi_SO_Kst_Ktr.py
The SO diffusivity has two components: the transient & stationary parts
where the transient part remains the same as in psi_SO_varKGM_bulk.py
.
psi_SO_Ktr_Tst.py
Instead of first parameterizating the diffusivity before using it to compute the eddy-induced transport (i.e., ), now we separately parameterize the eddy-induced transport by the transient and stationary eddies:
where the last parenthesis denotes the linearly approximated SOMOC transport by the stationary eddies.
psi_SO_Keff.py
This is the module used for the PyMOC configuration in the paper, where the SO diffusivity is parameterized via a stretching of the transient diffusivity by stationary eddies:
psi_SO_Keff_Ktr.py
This is the most complicated parameterization for the SO effective diffusivity, where the dependence on the wind stress appears both in the stretching factor, as in the module introduced above, and in the transient diffusivity part, to mimic the impact of rapid change in local baroclinicity on the transient diffusivity:
psi_SO_Keff_Dc.py
Finally, this module parameterizes the SO effective diffusivity in a similar way as psi_SO_Keff.py
except that it is the cut-off version of D (i.e., D_c), instead of the full-depth-based D, that enters the parameterization:
Here D_c is computed similarly to D but its lower integral limit is cut off at the AMOC bottom buoyancy, which varies with time.