A Julia package for the numerical investigation of noise- and rate-induced transitions in dynamical systems.
Building on DynamicalSystems.jl and DifferentialEquations.jl, this package aims to provide a toolbox for dynamical systems under time-dependent forcing, with a focus on tipping phenomena and metastability.
Check out the new
RateSystemtype for nonautonomous dynamics, released with v0.7! 🚀
using CriticalTransitions
# Define your system dynamics
function fitzhugh_nagumo(u, p, t)
    x, y = u
    ϵ, β = p
    dx = (-x^3 + x - y)/ϵ
    dy = -β*y + x
    return SVector{2}([dx, dy])
end
# System parameters (ε, β)
params = [0.1, 3.0]
noise_strength = 0.02
initial_state = zeros(2)
# Construct a stochastic system
# (here with isotropic Gaussian noise)
sys = CoupledSDEs(fitzhugh_nagumo, initial_state, params; noise_strength)
# Run a sample trajectory
traj = trajectory(sys, 10.0)
# Compute minimum action path using gMAM algorithm
instanton = geometric_min_action_method(sys, initial_state, current_state(sys))
# Turn into a non-autonomous dynamical system
# where the parameter β changes in time
forcing = ForcingProfile(:tanh)
sys_t = RateSystem(sys, forcing, 2; forcing_duration=5.0)
# ... and more, check out the documentation!Developers: Reyk Börner, Orjan Ameye, Ryan Deeley, Raphael Römer and George Datseris
Thanks to Jeroen Wouters, Calvin Nesbitt, Tobias Grafke and Oliver Mehling
This package was created as part of the CriticalEarth project.