Studying rate-induced tipping
Autonomous snapshot systems
CriticalTransitions.frozen_system — Function
frozen_system(rs::RateSystem, t)Returns the autonomous version of the non-autonomous RateSystem rs with parameters fixed at system time t.
CriticalTransitions.past_limit_system — Function
past_limit_system(rs::RateSystem, t)Returns the autonomous dynamical system corresponding to the RateSystem rs for times t < forcing_start_time. Equivalent to rs.specs.unforced_system.
CriticalTransitions.future_limit_system — Function
future_limit_system(rs::RateSystem, t)Returns the autonomous dynamical system corresponding to the RateSystem rs for times t > forcing_start_time + 2*forcing_duration, i.e. after the time-dependent forcing interval.
R-tipping diagrams
CriticalTransitions.rate_track_return_tip — Function
rate_track_return_tip(rs::RateSystem, Δts, Δps, mapper, ics; kw...)Utilize the global_continuation functionality of Attractors.jl to calculate a rate track-return-tip diagram for rs for a variety of forcing duration and forcing scales Δts, Δps with the rate system starting always at u0. Return:
- a matrix of size
length(Δps)×length(Δts)encoding the type of rate tipping behavior. attractors_cont, the attractors of the global continuation of the unforced system.
Keyword arguments
distance = Centroid(): Distance function used when (1) matching attractors, and (2) mapping the end state of a rate simulation to its closest attractor through theBasinMapProximity.proximity_kw: Keywords propagated toBasinMapProximity, for mapping the rate system state to the unforced attractors at the middle and end (reverse) of forcing. Do not provide adistanceas this is used from the above keyword.decide_rate_outcome: A three input functionf(track_id, return_id, start_id)that returns an integer representing a possible rate tipping case of a simulation with a specificΔt, Δp. It inputs the attractor ID the system converges after the forwards rate forcing, the one it converges after the forcing is reverse, and the ID thatu0converges at the starting parameter of the system.
Description
This function formalizes and generalizes the concept of tracking, returning, or tipping, in rate forced systems introduced in (Ritchie et al., 2023). To achieve this, it uses global continuation using mapper, ics. The function will run a whole global_continuation run over the parameter range prange = p0 .+ Δps to establish the unfrozen system attractors and assign unique IDs to them throughout prange. If you instead want to run the global continuation yourself, which allows you to change Δts, Δps without re-running the global continuation, then simply do:
pcurve = unforced_pcurve(rs, Δps)
matcher = MatchBySSSetDistance(distance)
ascm = AttractorsSeedContinueMatch(mapper, matcher)
_, attractors_cont = global_continuation(ascm, pcurve, ics)
rate_track_return_tip(rs, Δts, Δps, attractors_cont; distance, kw...)After the global continunation, the function will perform a rate simulation with duration Δt and scale Δp for all combinations. For each, it will then assign an integer corresponding to the type of rate-dependent behaviour as in (Ritchie et al., 2023). By default, these integers are ∈ (1, 2, 3) and mean:
- Tracking always.
- Return but not tracking (safe overshoot).
- Tipping always (failure to track).
You can however provide a custom function that may have more involved decision logic via the keyword decide_rate_outcome. To find the unforced system attractor IDs at the middle and and of the rate simulation an BasinMapProximity is used.
Notes
This function applies the same duration and scaling to all parameters that are forced in rs, and enforces all forcings to be reversed as well. The profiles of each parameter are individual though. If any profile does not have the reverse = true option, an error is thrown.
CriticalTransitions.unforced_pcurve — Function
unforced_pcurve(rs::RateSystem, Δps::AbstractVector)Given a range of parameter increments Δps, return a parameter curve pcurve corresponding to all parameter values that rs will be forced through. This pcurve can be used to perform a global continuation for the unforced system.