All Projects → rveltz → BifurcationKit.jl

rveltz / BifurcationKit.jl

Licence: other
A Julia package to perform Bifurcation Analysis

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to BifurcationKit.jl

BifurcationInference.jl
learning state-space targets in dynamical systems
Stars: ✭ 24 (-87.03%)
Mutual labels:  continuation, pseudo-arclength-continuation
awesome-nn-optimization
Awesome list for Neural Network Optimization methods.
Stars: ✭ 39 (-78.92%)
Mutual labels:  continuation, bifurcation
mole
Mimetic Operators Library Enhanced
Stars: ✭ 15 (-91.89%)
Mutual labels:  pde
coreos-gpu-installer
Scripts to build and use a container to install GPU drivers on CoreOS Container Linux
Stars: ✭ 21 (-88.65%)
Mutual labels:  gpu
MAESTRO
A low Mach number stellar hydrodynamics code
Stars: ✭ 29 (-84.32%)
Mutual labels:  pde
devsim
TCAD Semiconductor Device Simulator
Stars: ✭ 104 (-43.78%)
Mutual labels:  pde
SciMLBenchmarks.jl
Benchmarks for scientific machine learning (SciML) software and differential equation solvers
Stars: ✭ 195 (+5.41%)
Mutual labels:  pde
ewstools
Python package for early warning signals (EWS) of bifurcations in time series data.
Stars: ✭ 29 (-84.32%)
Mutual labels:  bifurcation
glip-lib
An OpenGL Image Processing Library (in C++/GLSL).
Stars: ✭ 14 (-92.43%)
Mutual labels:  gpu
featool-multiphysics
FEATool - "Physics Simulation Made Easy" (Fully Integrated FEA, FEniCS, OpenFOAM, SU2 Solver GUI & Multi-Physics Simulation Platform)
Stars: ✭ 190 (+2.7%)
Mutual labels:  pde
fixmatch-pytorch
90%+ with 40 labels. please see the readme for details.
Stars: ✭ 27 (-85.41%)
Mutual labels:  gpu
curve-shortening-demo
Visualize curve shortening flow in your browser.
Stars: ✭ 19 (-89.73%)
Mutual labels:  pde
PyFRAP
PyFRAP: A Python based FRAP analysis tool box
Stars: ✭ 15 (-91.89%)
Mutual labels:  pde
jaxdf
A JAX-based research framework for writing differentiable numerical simulators with arbitrary discretizations
Stars: ✭ 50 (-72.97%)
Mutual labels:  pde
DGM-and-DRM
Several code for the paper: A comparison study of deep Galerkin method and deep Ritz method for elliptic problems with different boundary conditions
Stars: ✭ 15 (-91.89%)
Mutual labels:  pde
allgebra
Base container for developing C++ and Fortran HPC applications
Stars: ✭ 14 (-92.43%)
Mutual labels:  gpu
rom-operator-inference-Python3
Operator Inference for data-driven, non-intrusive model reduction of dynamical systems.
Stars: ✭ 31 (-83.24%)
Mutual labels:  pde
hydro examples
Simple one-dimensional examples of various hydrodynamics techniques
Stars: ✭ 83 (-55.14%)
Mutual labels:  pde
RenderScriptOps
🚀 TensorFlow running with RenderScript on Android GPU
Stars: ✭ 15 (-91.89%)
Mutual labels:  gpu
FGPU
No description or website provided.
Stars: ✭ 30 (-83.78%)
Mutual labels:  gpu

BifurcationKit.jl

Documentation Build Status
Build status codecov

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

Automatic Bif. Diagram in 1D Swift Hohenberg Automatic Bif. Diagram in 2D Bratu
Snaking in 2D Swift Hohenberg Periodic orbits in 1D Brusselator
Period doubling BVAM Model Periodic orbits in 2D Ginzburg-Landau
Deflated Continuation in Carrier problem 2D Swift Hohenberg on GPU

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, Deflated continuation
  • Bifurcation points are located using 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 bifurcation diagram computation of equilibria
  • Fold / Hopf continuation based on Minimally Augmented formulation, with Matrix Free / Sparse Jacobian.
  • detection 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 ✔️
Continuation PALC (Natural, Secant, Tangent, Polynomial) Yes Yes All ✔️
Deflated Continuation Yes Yes ⤴️ ✔️
Branching / Fold / Hopf point detection Yes Yes All / All / ⤴️ ✔️
Fold Point continuation Yes Yes ⤴️, ⤴️ ✔️
Hopf continuation Yes AbstractArray ⤴️
Branch switching at Branch / Hopf points Yes AbstractArray ⤴️ ✔️
Automatic bifurcation diagram computation of equilibria Yes AbstractArray ⤴️
Periodic Orbit (Trapezoid) Newton / continuation Yes AbstractVector ⤴️, ⤴️ ✔️
Periodic Orbit (Collocation) Newton / continuation Yes AbstractVector ⤴️
Periodic Orbit with Parallel Poincaré / Standard Shooting Newton / continuation Yes AbstractArray ⤴️
Fold, Neimark-Sacker, Period doubling detection Yes AbstractVector ⤴️
Continuation of Fold of periodic orbits Yes AbstractVector ⤴️ ✔️
Bogdanov-Takens / Bautin / Cusp / Zero-Hopf / Hopf-Hopf point detection Yes Yes ✔️
Branching from Bogdanov-Takens points to Fold / Hopf curve No AbstractVector

To do or grab

Without a priority order:

  • improve compatibility with DifferentialEquations.jl
  • Add interface to other iterative linear solvers (cg, minres,...) from IterativeSolvers.jl
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].