After roughly one year, I am writing this post to report a new version of my package PseudoArcLengthContinuation.jl. The focus of this new version is twofold, namely the computation of bifurcations (localization, preconditioners, iterator,…) and the computation of periodic orbits (and their bifurcations) with the aim of using the GPU. Most methods are highly modular and can be chained. For example, you can continue Fold of periodic orbits, etc. The most notable improvements are the following:
- new interface for the Linear Solvers
- the continuation method is written as an iterator, this allows to tweak the algorithm the way you want, implement your test functions…
- addition of preconditionners and callbacks to newton / continuation
- add shooting methods (standard / Poincare(Experimental)) with abstract Flow, but also compatible with
DifferentialEquations.jl, to compute periodic orbits and their stability
- the algorithm for computing periodic orbits based on Finite Differences has been optimized a lot
- tutorials with some running completely on the GPU (one is computing periodic orbits with preconditioners)
I hope some of you will find it useful.
Feel free to suggest improvements, design choices and submit PR (I also accept hard criticism)
Oh! Did I forget to ask you to star if you like it?
I would like to thank @ChrisRackauckas for being patient and answering my questions on slack.
- Matrix Free Newton solver with generic linear / eigen preconditioned solver. Idem for the arc-length continuation.
- Matrix Free Newton solver with deflation and preconditioner. It can be used for branch switching for example.
- Branch, Fold, Hopf bifurcation point detection of stationary solutions.
- Bifurcation points are located using a bisection algorithm
- Fold / Hopf continuation based on Minimally Augmented formulation, with Matrix Free / Sparse Jacobian.
- Periodic orbit computation and continuation using Shooting or Finite Differences.
- Branch, Fold, Neimark-Sacker, Period Doubling bifurcation point detection of periodic orbits.
- Computation and Continuation of Fold of periodic orbits
Custom state means, we can use something else than
AbstractArray, for example your own
Note that you can combine most of the solvers, like use Deflation for Periodic orbit computation or Fold of periodic orbits family.
|Features||Matrix Free||Custom state||Tutorial|
|Newton + Deflation||Y||Y||3, 4|
|Continuation (Natural, Secant, Tangent)||Y||Y||All|
|Branching point detection (with bisection)||Y||Y||All|
|Fold point detection||Y||Y||All|
|Hopf detection||Y||Y||5 - 8|
|Fold Point continuation||Y||Y||1, 7|
|Periodic Orbit (FD) Newton / continuation||Y||
|Periodic Orbit with Poincaré / Standard Shooting Newton / continuation||Y||
||5, 6, 8|
|Fold, Neimark-Sacker, Period doubling detection||Y||
||5 - 8|
|Continuation of Fold of periodic orbits||Y||