pymoc.modules.Equi_Column¶
-
class
pymoc.modules.
Equi_Column
(f=0.00012, b_s=0.025, b_bot=None, B_int=3000.0, A=70000000000000.0, nz=100, sol_init=None, H_guess=1500.0, kappa=6e-05, dkappa_dz=None, psi_so=None, z=None, H=None)¶ Equilibrium 1D Column Model
Instances of this class represent a 1D column model for the MOC. The model is written in terms of a boundary value problem solving the the ODE:
\[d_{zzzz}(\Psi_{N}) = (\kappa A)^{-1}(\Psi_{N} - \Psi_{SO} - A d_z(\kappa))d_{zzz}(\Psi_N)\]That is subject to the boundary conditions:
\[\begin{split}\begin{aligned} (1)&\ \Psi_N(0) = 0 \\ (2)&\ \Psi_N(-H) = 0 \\ (3)&\ b(0)=-f \partial_{zz} \Psi_N (0) = b_s \\ (4)&\ b(-H)=-f \partial_{zz} \Psi_N (H) = b_{bot} \\ &\textrm{or} \\ &\ d_z b(-H) = -f d_{zzz} \Psi_N (-H) = (A \kappa(-H))^{-1} B_{int} \\ \end{aligned}\end{split}\]Where \(H\) is the total depth of the upper cell, which can also be solved for with the additional BC that: \(d_z\psi_N(-H) = 0\)
The solution is found by non-dimensionalizing the equations using \(H\) and math:f as length and time scales, and solving between \(z^*=z/H=0..1\). Notice that \(H\) then appears as a parameter in the equations.
- Parameters
f (float) – Coriolis parameter. Units s-1
b_s (float) – Buoyancy at the surface of the column. Units:
b_bot (float) – Buoyancy at the bottom of the column. Units:
B_int (float) – Integrated downward buyancy flux at the bottom of the surface cell. Units:
A (float) – Horizontal area of basin. Units: m2
nz (int) – Number of levels in the non-dimensional vertical grid for the numerical solver.
sol_init (ndarray) – Initial guess of the solution to the boundary value problem.
H_guess (float) – Initial guess for the depth of the upper cell, if solving for it. Units: m
kappa (float, function, or ndarray) – Vertical diffusivity profile. Units: m2/s
dkappa_dz (float, function, or ndarray) – Vertical diffusivity gradient profile. Units: m/s
psi_so (float, function, or ndarray) – Streamfunction in the adjoining Southern Ocean basin. Units:
z (ndarray) – Vertical depth levels of column grid. Units: m
H (float) – Depth of the upper cell, if specifying. Units: m
-
__init__
(f=0.00012, b_s=0.025, b_bot=None, B_int=3000.0, A=70000000000000.0, nz=100, sol_init=None, H_guess=1500.0, kappa=6e-05, dkappa_dz=None, psi_so=None, z=None, H=None)¶ - Parameters
f (float) – Coriolis parameter. Units s-1
b_s (float) – Buoyancy at the surface of the column. Units:
b_bot (float) – Buoyancy at the bottom of the column. Units:
B_int (float) – Integrated downward buyancy flux at the bottom of the surface cell. Units:
A (float) – Horizontal area of basin. Units: m2
nz (int) – Number of levels in the non-dimensional vertical grid for the numerical solver.
sol_init (ndarray) – Initial guess of the solution to the boundary value problem.
H_guess (float) – Initial guess for the depth of the upper cell, if solving for it. Units: m
kappa (float, function, or ndarray) – Vertical diffusivity profile. Units: m2/s
dkappa_dz (float, function, or ndarray) – Vertical diffusivity gradient profile. Units: m/s
psi_so (float, function, or ndarray) – Streamfunction in the adjoining Southern Ocean basin. Units:
z (ndarray) – Vertical depth levels of column grid. Units: m
H (float) – Depth of the upper cell, if specifying. Units: m
Methods
__init__
([f, b_s, b_bot, B_int, A, nz, …])- param f
Coriolis parameter. Units s-1
alpha
(z, H)Calculate the nondimensional factor:
bc
(ya, yb[, p])Calculate the boundary conditions for the equilibrium column boundary value problem.
bz
(H)Calculate the nondimenzionalized stratification at the bottom of the upper cell
calc_sol_init
(sol_init[, nz, b_bot])Initialize the initial guess for the solutions to the system of ordinary differential equations defined by
pymoc.modules.Equi_Column.ode()
init_b_boundaries
(b_s[, b_bot, B_int])Initialize and set the nondimensionalize surface buoyance and bottom buoyance, or the abyssal buoyancy flux boundary condition if no bottom buoyancy is specified.
init_dkappa_dz
(kappa[, dkappa_dz])Initialize the vertical diffusivity gradient profile.
init_kappa
(kappa)Initialize the vertical diffusivity profile.
init_psi_so
([psi_so])Initialize the nondimensionalized streamfunction passed from the Southern Ocean.
ode
(z, y[, p])Generate the ordinary differential equation for the equilibrium column overturning streamfunction, to be solved as a boundary value problem:
solve
()Solve for the thermal wind overturning streamfunction as a boundary value problem based on the system of equations defined in
pymoc.modules.Equi_Column.ode()
.