[ANN] New version of package PseudoArcLengthContinuation.jl

Dear All,

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 :slight_smile: (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.

Main features

  • iterator
  • 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 struct.

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 Y Y All
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
Hopf continuation Y AbstractArray 5
Periodic Orbit (FD) Newton / continuation Y AbstractVector 5, 7
Periodic Orbit with Poincaré / Standard Shooting Newton / continuation Y AbstractArray 5, 6, 8
Fold, Neimark-Sacker, Period doubling detection Y AbstractVector 5 - 8
Continuation of Fold of periodic orbits Y AbstractVector 7

Dear all,

I have been able to fix the Poincare Shooting methods thanks to JuliaDiffEq/DiffEqBase.jl#350 being closed. These methods will be further improved later on.