BifurcationKit.jl
Documentation | Build Status | Downloads |
---|---|---|
IMPORTANT NOTICE
New version of the package with modified interface. You are now required to define a BifurcationProblem
to perform continuation or bifurcation analysis. The previous interface is available under the tag 0.1.12 which can be installed by doing
] add BifurcationKit@0.1.12
The new version provides many bugs fix though. (Please note that the docs are up to date).
This Julia package aims at performing automatic bifurcation analysis of possibly large dimensional equations F(u, λ)=0 where λ∈ℝ by taking advantage of iterative methods, dense / sparse formulation and specific hardwares (e.g. GPU).
It incorporates continuation algorithms (PALC, deflated continuation, ...) based on a Newton-Krylov method to correct the predictor step and a Matrix-Free/Dense/Sparse eigensolver is used to compute stability and bifurcation points.
The idea is to be able to seemingly switch the continuation algorithm a bit like changing the time stepper (Euler, RK4,...) for ODEs.
By leveraging on the above method, it can also seek for periodic orbits of Cauchy problems. It is by now, one of the only softwares which provides shooting methods AND methods based on finite differences or collocation to compute periodic orbits.
The current focus is on large scale nonlinear problems and multiple hardwares. Hence, the goal is to use Matrix Free methods on GPU (see PDE example and Periodic orbit example) or on a cluster to solve non linear PDE, nonlocal problems, compute sub-manifolds...
Despite focus on large scale problems, the package can easily handle low dimensional problems and specific optimizations are regularly added.
Support and citation
If you use this package for your work, we ask that you cite the following paper. Open source development as part of academic research strongly depends on this. Please also consider starring this repository if you like our work, this will help us to secure funding in the future. It is referenced on HAL-Inria as follows:
@misc{veltz:hal-02902346,
TITLE = {{BifurcationKit.jl}},
AUTHOR = {Veltz, Romain},
URL = {https://hal.archives-ouvertes.fr/hal-02902346},
INSTITUTION = {{Inria Sophia-Antipolis}},
YEAR = {2020},
MONTH = Jul,
KEYWORDS = {pseudo-arclength-continuation ; periodic-orbits ; floquet ; gpu ; bifurcation-diagram ; deflation ; newton-krylov},
PDF = {https://hal.archives-ouvertes.fr/hal-02902346/file/354c9fb0d148262405609eed2cb7927818706f1f.tar.gz},
HAL_ID = {hal-02902346},
HAL_VERSION = {v1},
}
Installation
This package requires Julia >= v1.3.0
To install it, please run
] add BifurcationKit
To install the bleeding edge version, please run
] add BifurcationKit#master
Website
The package is located here.
Examples of bifurcation diagrams
Main features
- Newton-Krylov solver with generic linear / eigen preconditioned solver. Idem for the arc-length continuation.
- Newton-Krylov solver with nonlinear deflation and preconditioner. It can be used for branch switching for example.
- Continuation written as an iterator
- Monitoring user functions along curves computed by continuation, see events
- Continuation methods: PALC, Moore Penrose, Deflated continuation, ANM, ...
- Bifurcation points located with a bisection algorithm
- Detection of Branch, Fold, Hopf bifurcation point of stationary solutions and computation of their normal form.
- Automatic branch switching at branch points (whatever the dimension of the kernel)
- Automatic branch switching at simple Hopf points to periodic orbits
- Automatic computation of bifurcation diagrams of equilibria
- Fold / Hopf continuation based on Minimally Augmented formulation, with Matrix Free / Sparse Jacobian.
- Detection of all codim 2 bifurcations of equilibria and computation of the normal forms of Bogdanov-Takens, Bautin and Cusp
- Branching from Bogdanov-Takens points to Fold / Hopf curve
- Periodic orbit computation and continuation using Shooting, Finite Differences or Orthogonal Collocation.
- Detection of Branch, Fold, Neimark-Sacker, Period Doubling bifurcation point of periodic orbits.
- 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 solvers, like use Deflation for Periodic orbit computation or Fold of periodic orbits family.
Features | Matrix Free | Custom state | Tutorial | GPU |
---|---|---|---|---|
(Deflated) Krylov-Newton | Yes | Yes | All | :heavy_check_mark: |
Continuation PALC (Natural, Secant, Tangent, Polynomial) | Yes | Yes | All | :heavy_check_mark: |
Deflated Continuation | Yes | Yes | :arrow_heading_up: | :heavy_check_mark: |
Bifurcation / Fold / Hopf point detection | Yes | Yes | All / All / :arrow_heading_up: | :heavy_check_mark: |
Fold Point continuation | Yes | Yes | :arrow_heading_up:, :arrow_heading_up: | :heavy_check_mark: |
Hopf Point continuation | Yes | AbstractArray |
||
Bogdanov-Takens Point newton | Yes | AbstractArray |
||
Branch point / Fold / Hopf normal form | Yes | Yes | :heavy_check_mark: | |
Branch switching at Branch / Hopf points | Yes | AbstractArray |
:arrow_heading_up: | :heavy_check_mark: |
Automatic bifurcation diagram computation of equilibria | Yes | AbstractArray |
:arrow_heading_up: | |
Periodic Orbit (Trapezoid) Newton / continuation | Yes | AbstractVector |
:arrow_heading_up:, :arrow_heading_up: | :heavy_check_mark: |
Periodic Orbit (Collocation) Newton / continuation | Yes | AbstractVector |
:arrow_heading_up: | |
Periodic Orbit (Parallel Poincaré / Standard Shooting) Newton / continuation | Yes | AbstractArray |
:arrow_heading_up: | |
Fold, Neimark-Sacker, Period doubling detection | Yes | AbstractVector |
:arrow_heading_up: | |
Continuation of Fold of periodic orbits | Yes | AbstractVector |
:arrow_heading_up: | :heavy_check_mark: |
Bogdanov-Takens / Bautin / Cusp / Zero-Hopf / Hopf-Hopf point detection | Yes | Yes | :heavy_check_mark: | |
Bogdanov-Takens / Bautin / Cusp / Zero-Hopf / Hopf-Hopf normal forms | Yes | Yes | :heavy_check_mark: | |
Branching from Bogdanov-Takens points to Fold / Hopf curve | Yes | AbstractVector |