Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global continuation free tracking of arbitrary quantities #164

Open
Datseris opened this issue Nov 15, 2024 · 1 comment
Open

Global continuation free tracking of arbitrary quantities #164

Datseris opened this issue Nov 15, 2024 · 1 comment
Labels
continuation Related with continuation functionality enhancement New feature or request

Comments

@Datseris
Copy link
Member

Datseris commented Nov 15, 2024

If we think about it, we can track "for free" arbitrary nonlocal stability during a global continuation. At the moment we track only the basin fractions. Then, after the continuation is over, we also track (but separately) whatever other quantity we want.

However, instead of the basin fractions, we could be tracking any other quantity that requires exploring the state space.

Consider the minimal critical shock: to calculate it, we have to randomly sample points in the state space (even if we use the BlackBox algorithm). For every sampled point we calculate in which basin of attraction it converged to because we call mapper(u0). From all these initial conditions, we obtain the minimal critical shock. Well, since we anyways estimated all these mapper(u0), we might as well store them! We can store (internally) to which attractor each u0 goes; then, we have estimated for free the basins fractions as well, while estimating the minimal critical shock. This could save a lot of time for expensive dynamical systems.

Exactly the same story can be said for the average return time: to estimate the return time we call mapper(u0) and then we record the convergence time. But mapper(u0) gives us for free to which attrcator we converged. Again we can estimate, at the same time the average return time as well as the basins fractions.

This allows us to compute two nonlocal stability indicators during any continuation, where the second is always the basins fraction that we get for free. In fact, we could even calculate the minimal fatal shock, mean return time, and basins fractions, all at the same time by taking into advantage that for each u0, mapper(u0) only needs to be called once!

To do these things we would need to create a new data strctuure: NonlocalStabilityAccumulator. This data strcture takes an initial condition and maps it to an attractor. Then it stores to which attractor it went, and how long it took. If you have 1000 initial conditions you can then estimate the minimal fatal shock for each attractor, and the average return time, and the basin fraction. The NonlocalStabilityAccumulator can be enhanced with any measure of nonlocal stability that internally has to call mapper(u0) for many different initial conditions.

cc @andreasmorr

@Datseris Datseris added enhancement New feature or request continuation Related with continuation functionality labels Nov 15, 2024
@Datseris
Copy link
Member Author

NonlocalStabilityAccumulator will be a function like object that itself acts as an AttractorMapper. Here is how:

accumulator = NonlocalStabilityAccumulator(mapper, args...)
id = accumulator(u0)

BUT, calling accumulator(u0) will first call mapper(u0) and then store internally in the fields of NonlocalStabilityAccumulator the initial condition, where it converged to, and what is its convergence time, and any other nonlocal stability quantity we can estimate from calling mapper(u0).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
continuation Related with continuation functionality enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant