GridapBifurcationKit.jl

This Julia package aims at performing automatic bifurcation analysis of partial differential equations (PDEs) discretized with the finite element toolbox Gridap.jl.

It builds upon BifurcationKit.jl to perform continuation and numerical bifurcation analysis. The equations are written in a weak form very close to the mathematical formulation, and all the (large scale) Newton-Krylov machinery of BifurcationKit.jl is available.

๐Ÿ“ฆ Installation

Assuming that you already have Julia correctly installed, it suffices to import GridapBifurcationKit.jl in the standard way:

import PkgPkg.add("https://github.com/bifurcationkit/GridapBifurcationKit.jl")

Main features

  • Newton-Krylov solver with generic linear / eigen preconditioned solver, and arc-length continuation.
  • Continuation methods: PALC, Moore-Penrose, etc. See methods.
  • Monitoring user functions along curves computed by continuation, see events.
  • Bifurcation points are located using a bisection algorithm.
  • Detection of Branch, Fold, Hopf bifurcation points of stationary solutions and computation of their normal form.
  • Automatic branch switching at simple Hopf points to periodic orbits.
  • Automatic bifurcation diagram computation of equilibria.
  • Fold / Hopf continuation.
  • Support for differential-algebraic problems through a mass matrix: PDEs of the form

\[M\frac{\mathrm{d}z}{\mathrm{d}t} = F(z, p),\]

with a possibly singular $M$ (for example incompressible flows, where the pressure has no time derivative). This is essential to correctly compute the stability of the solution and to detect Hopf bifurcations.

Custom state means, we can use something else than AbstractArray, for example your own struct.

FeaturesDAE (mass)Matrix FreeCustom stateTutorials
(Deflated) Krylov-NewtonYesYesYes
Continuation PALC (Natural, Secant, Tangent, Polynomial)Yes
Bifurcation / Fold / Hopf point detectionYesY
Fold / Hopf point continuationYesY
Branch switching at Branch / Hopf pointsYesYAbstractArray
Automatic bifurcation diagram computation of equilibriaYesYAbstractArray
Periodic orbit (collocation / trapeze) Newton / continuationYesAbstractVector
Codim 2 bifurcation detection (BT, GH, cusp, ZH, HH)YesY

๐Ÿง‘โ€๐Ÿ’ป Other softwares

There are several good softwares already available for PDE bifurcation analysis. One can mention e.g. pde2path. The present package is, to our knowledge, the only one written in Julia and leveraging automatic finite element discretization with Gridap.jl.

๐Ÿ“š Citing this work

If you use this package for your work, we ask that you cite the following paper! Open source development strongly depends on this. It is referenced on HAL-Inria with bibtex entry CITATION.bib.

You need to cite this entry as well:

@article{Badia2020,
  doi = {10.21105/joss.02520},
  url = {https://doi.org/10.21105/joss.02520},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {52},
  pages = {2520},
  author = {Santiago Badia and Francesc Verdugo},
  title = {Gridap: An extensible Finite Element toolbox in Julia},
  journal = {Journal of Open Source Software}
}

Citations

Papers citing this work are collected on Zotero.

These citations are aggregated from Google Scholar (search) and Google Scholar (citations).