Lorenz63

Lorenz63(
    var_name='lorenz63',
    sigma=10.0,
    rho=28.0,
    beta=8 / 3,
    state_variables=None,
    diagnostic_variables=None,
    *args,
    **kwargs,
)

Lorenz (1963) system.

A minimal three-variable convection model exhibiting sensitive dependence on initial conditions and a strange attractor:

dx/dt = sigma * (y - x)
dy/dt = x * (rho - z) - y
dz/dt = x * y - beta * z

Parameters

var_name : str = 'lorenz63'

Label for the model output. Default 'lorenz63'.

sigma : float or callable or cc.Forcing = 10.0

Prandtl number controlling rotation of convective rolls. Default 10.

rho : float or callable or cc.Forcing = 28.0

Rayleigh number (reduced) controlling the buoyancy forcing. Default 28.

beta : float or callable or cc.Forcing = 8 / 3

Geometric factor controlling the spatial structure. Default 8/3.

Notes

The classic strange attractor exists for sigma=10, rho=28, beta=8/3. Time-varying parameters are supported as callables with signatures (t), (t, state), or (t, state, model).

State variables are x, y, z in that order.

References

Lorenz, E. N. (1963). J. Atmos. Sci., 20, 130–141.

Examples

import matplotlib.pyplot as plt
import climatecritters as cc
from climatecritters.model_critters.lorenz import Lorenz63

model = Lorenz63()
output = model.integrate(
    t_span=(0, 100), y0=[-8.0, 8.0, 27.0], method='RK45'
)
fig, ax = plt.subplots()
ax.plot(output.state_variables['x'], output.state_variables['z'],
        lw=0.3, alpha=0.8)
ax.set_xlabel('x'); ax.set_ylabel('z')
plt.savefig('docs/reference/figures/Lorenz63_example.png',
            dpi=150, bbox_inches='tight')

Lorenz63 example output