CriticalTransitions.jl

A Julia package for critical transitions in dynamical systems with time-dependent forcing
Author JuliaDynamics
Popularity
24 Stars
Updated Last
4 Months Ago
Started In
September 2022

CriticalTransitions.jl

Tests

Code Style: Blue Aqua QA JET

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.

Usage

See package documentation.

Example: Bistable FitzHugh-Nagumo model

using CriticalTransitions

function fitzhugh_nagumo(u, p, t)
    x, y = u
    ϵ, β, α, γ, κ, I = p

    dx = (-α * x^3 + γ * x - κ * y + I) / ϵ
    dy = -β * y + x

    return SA[dx, dy]
end

# System parameters
p = [1., 3., 1., 1., 1., 0.]
noise_strength = 0.02

# Define stochastic system
sys = CoupledSDEs(fitzhugh_nagumo, id_func, zeros(2), p, noise_strength)

# Get stable fixed points
fps, eigs, stab = fixedpoints(sys, [-2,-2], [2,2])
fp1, fp2 = fps[stab]

# Generate noise-induced transition from one fixed point to the other
path, times, success = transition(sys, fp1, fp2)

# ... and more, check out the documentation!

Developers: Reyk Börner, Ryan Deeley, Raphael Römer and Orjan Ameye

Thanks to Jeroen Wouters, Calvin Nesbitt, Tobias Grafke, George Datseris and Oliver Mehling

This work is part of the CriticalEarth project.