dapper.mods.Lorenz96

A 1D emulator of chaotic atmospheric behaviour.

bib.lorenz1996predictability

For a short introduction, see

  • demo and
  • "Dynamical systems, chaos, Lorenz.ipynb" from the DA-tutorials

Note: the implementation is len(x)-agnostic.

 1"""A 1D emulator of chaotic atmospheric behaviour.
 2
 3`bib.lorenz1996predictability`
 4
 5For a short introduction, see
 6
 7- `demo` and
 8- "Dynamical systems, chaos, Lorenz.ipynb" from the DA-tutorials
 9
10Note: the implementation is `len(x)`-agnostic.
11"""
12
13import numpy as np
14
15from dapper.mods.integration import rk4
16
17from .extras import LPs, d2x_dtdx, dstep_dx
18
19Force = 8.0
20Tplot = 10
21
22
23def x0(M):
24    x = np.zeros(M)
25    x[0] = 1
26    return x
27
28
29def shift(x, n):
30    return np.roll(x, -n, axis=-1)
31
32
33def dxdt_autonomous(x):
34    return (shift(x, 1) - shift(x, -2)) * shift(x, -1) - x
35
36
37def dxdt(x):
38    return dxdt_autonomous(x) + Force
39
40
41def step(x0, t, dt):
42    return rk4(lambda x, t: dxdt(x), x0, np.nan, dt)
Force = 8.17
Tplot = 10
def x0(M):
24def x0(M):
25    x = np.zeros(M)
26    x[0] = 1
27    return x
def shift(x, n):
30def shift(x, n):
31    return np.roll(x, -n, axis=-1)
def dxdt_autonomous(x):
34def dxdt_autonomous(x):
35    return (shift(x, 1) - shift(x, -2)) * shift(x, -1) - x
def dxdt(x):
38def dxdt(x):
39    return dxdt_autonomous(x) + Force
def step(x0, t, dt):
42def step(x0, t, dt):
43    return rk4(lambda x, t: dxdt(x), x0, np.nan, dt)