Stocker2003BipolarSeesaw
Stocker2003BipolarSeesaw(
var_name='stocker2003_bipolar_seesaw',
tau=1000.0,
beta=-1.0,
Tn=0.0,
state_variables=None,
diagnostic_variables=None,
*args,
**kwargs,
)Minimum thermodynamic model for the thermal bipolar seesaw.
A single prognostic southern temperature anomaly Ts relaxes toward a northern temperature signal Tn(t) scaled by beta:
dTs/dt = (beta*Tn(t) - Ts) / tau
Parameters
var_name : str = 'stocker2003_bipolar_seesaw'-
Label for the model output. Default
'stocker2003_bipolar_seesaw'. tau : float or callable orcc.Forcing= 1000.0-
Thermal equilibration timescale (years). Must be > 0. Default 1000.
beta : float or callable orcc.Forcing= -1.0-
Amplitude ratio relating southern to northern anomaly. Default -1.0 (antiphase seesaw).
Tn : float or callable orcc.Forcing= 0.0-
Northern temperature anomaly. Default 0.0. Register a time-varying signal via
model.register_forcing('Tn', forcing_obj).
Notes
The diagnostic variable Tn (northern temperature) is written by populate_diagnostics_from_history after integration. State variable is Ts.
References
Stocker, T. F., & Johnsen, S. J. (2003). A minimum thermodynamic model for the bipolar seesaw. Paleoceanography, 18(4), 1087.
Examples
import numpy as np
import climatecritters as cc
from climatecritters.model_critters.stocker2003_bipolar_seesaw import (
Stocker2003BipolarSeesaw,
)
import matplotlib.pyplot as plt
model = Stocker2003BipolarSeesaw(tau=500.0, beta=-1.0)
model.register_forcing('Tn', cc.Forcing(lambda t: 1.0 if (t % 2000) < 1000 else -1.0))
output = model.integrate(
t_span=(0, 8000), y0=[0.0], method='RK45'
)
ts = output.to_pyleo(var_names=['Ts'])
ts.plot()
plt.savefig('docs/reference/figures/Stocker2003BipolarSeesaw_example.png',
dpi=150, bbox_inches='tight')