Stocker2003ExtendedSeaIceSeesaw
Stocker2003ExtendedSeaIceSeesaw(
var_name='stocker2003_extended_seaice_seesaw',
tau_R=300.0,
tau_S=1200.0,
tau_A=100.0,
tau_ANT=20.0,
kappa=1.0,
lambda_S=0.2,
alpha=0.3,
beta=0.2,
gamma=4.0,
delta=1.0,
eta=0.2,
T_S0=0.0,
T_c=0.0,
T_N=0.0,
epsilon_R=0.0,
epsilon_S=0.0,
epsilon_A=0.0,
epsilon_ANT=0.0,
state_variables=None,
diagnostic_variables=None,
*args,
**kwargs,
)Extended Stocker-style model with reservoir, Southern Ocean, sea-ice, and Antarctic states.
The model integrates four coupled ODEs with prescribed northern forcing T_N(t):
tau_R * dT_R/dt = -(T_R - T_N) + eps_R
tau_S * dT_S/dt = kappa*(T_R - T_S) - lambda_S*(T_S - T_S0)
+ alpha*(1 - A) + eps_S
tau_A * dA/dt = -beta*(T_S - T_S0)
- gamma*A*(1-A)*(T_S - T_c) + eps_A
tau_ANT * dT_ANT/dt = delta*(T_S - T_ANT) + eta*(1 - A) + eps_ANT
Sea-ice area fraction A is constrained to [0, 1] by suppressing the outward derivative at the physical boundaries inside dydt.
Parameters
var_name : str = 'stocker2003_extended_seaice_seesaw'-
Label for the model output. Default
'stocker2003_extended_seaice_seesaw'. tau_R : float = 300.0-
Oceanic reservoir relaxation timescale (years). Default 300.
tau_S : float = 1200.0-
Southern Ocean relaxation timescale (years). Default 1200.
tau_A : float = 100.0-
Sea-ice adjustment timescale (years). Default 100.
tau_ANT : float = 20.0-
Antarctic temperature adjustment timescale (years). Default 20.
kappa : float = 1.0-
Advective heat exchange between reservoir and Southern Ocean. Default 1.0.
lambda_S : float = 0.2-
Linear restoring rate for Southern Ocean temperature. Default 0.2.
alpha : float = 0.3-
Sea-ice insulation effect on Southern Ocean heat flux. Default 0.3.
beta : float = 0.2-
Temperature-driven sea-ice melt rate. Default 0.2.
gamma : float = 4.0-
Nonlinear sea-ice feedback strength. Default 4.0.
delta : float = 1.0-
Southern Ocean to Antarctic heat coupling. Default 1.0.
eta : float = 0.2-
Sea-ice insulation effect on Antarctic temperature. Default 0.2.
T_S0 : float = 0.0-
Reference Southern Ocean temperature. Default 0.0.
T_c : float = 0.0-
Critical temperature for the sea-ice feedback. Default 0.0.
T_N : float = 0.0-
Northern temperature anomaly. Default 0.0. Register a time-varying signal via
model.register_forcing('T_N', forcing_obj). epsilon_R : float = 0.0-
Constant additive noise / bias terms. All default to 0.0.
epsilon_S : float = 0.0-
Constant additive noise / bias terms. All default to 0.0.
epsilon_A : float = 0.0-
Constant additive noise / bias terms. All default to 0.0.
epsilon_ANT : float = 0.0-
Constant additive noise / bias terms. All default to 0.0.
Notes
State variables are T_R, T_S, A, T_ANT in that order. The diagnostic variable T_N is populated by populate_diagnostics_from_history. All timescales must be > 0.
Examples
import climatecritters as cc
from climatecritters.model_critters.stocker2003_bipolar_seesaw import (
Stocker2003ExtendedSeaIceSeesaw,
)
import matplotlib.pyplot as plt
model = Stocker2003ExtendedSeaIceSeesaw()
model.register_forcing('T_N', cc.Forcing(lambda t: 1.0 if (t % 2000) < 1000 else 0.0))
output = model.integrate(
t_span=(0, 10000), y0=[0.0, 0.0, 0.3, 0.0], method='RK45'
)
ts = output.to_pyleo(var_names=['T_ANT'])
ts.plot()
plt.savefig('docs/reference/figures/Stocker2003ExtendedSeaIceSeesaw_example.png',
dpi=150, bbox_inches='tight')