Fold / Hopf Continuation

In this page, we explain how to perform continuation of Fold / Hopf points and detect the associated bifurcations.

List of detected codim 2 bifurcation points

Bifurcationsymbol used
Bogdanov-Takensbt
Bautingh
Cuspcusp
Zero-Hopfzh
Hopf-Hopfhh

In a nutshell, all you have to do (see below) is to call continuation(br, ind_bif, lens2) to continue the bifurcation point stored in br.specialpoint[ind_bif] and set proper options.

Fold continuation

The continuation of Fold bifurcation points is based on a Minimally Augmented[Govaerts] formulation which is an efficient way to detect singularities. See docs in BifurcationKit for more information.

Detection of codim 2 bifurcation points

You can detect the following codim 2 bifurcation points by using the option detect_codim2_bifurcation in the method continuation.

  • the detection of Cusp (Cusp) is done by the detection of Fold bifurcation points along the curve of Folds by monitoring the parameter component of the tangent.
  • the detection of Bogdanov-Takens (BT) is performed using the test function[Bindel] $\psi_{BT}(p) = \langle w(p),v(p)\rangle$
  • the detection of Zero-Hopf (ZH) is performed by monitoring the number of eigenvalues $\lambda$ such that $\Re\lambda > \min\limits_{\nu\in\Sigma(dF)}|\Re\nu|$ and $\Im\lambda > \epsilon$ where $\epsilon$ is the Newton tolerance.

Hopf continuation

The continuation of Fold bifurcation points is based on solving the extended system for $(u^*, v, \omega)$

\[\begin{aligned} & 0=\mathbf F\left(u^*, u^*; p\right) \\ & 0=\Delta\left(u^*, p, \mathrm{i} \omega\right) v \\ & 0=v^{\mathrm{H}} v-1 \end{aligned}\]

where $\Delta(\lambda)\cdot v := \lambda v - d_1\mathbf F(u^*,u^*; p)\cdot v-d_2\mathbf F(u^*, u^*; p)\cdot(e^{\lambda\cdot}v)$.

Detection of codim 2 bifurcation points

You can detect the following codim 2 bifurcation points by using the option detect_codim2_bifurcation in the method continuation.

  • the detection of Bogdanov-Takens (BT) is performed using the test function $\psi_{BT}(p) = \omega$
  • the detection of Bautin (GH) is based on the test function $\psi_{GH}(p) = \Re(l_1(p))$ where $l_1$ is the Lyapunov coefficient defined in Simple Hopf point.
  • the detection of Zero-Hopf (ZH) is performed by monitoring the eigenvalues.
  • the detection of Hopf-Hopf (HH) is performed by monitoring the eigenvalues.

The continuation of Hopf points is stopped at BT and when $\omega<100\epsilon$ where $\epsilon$ is the newton tolerance.

Codim 2 continuation

To compute the codim 2 curve of Fold / Hopf points, one can call continuation with the following options

BifurcationKit.continuationFunction
continuation(br, ind_bif, lens2)
continuation(
    br,
    ind_bif,
    lens2,
    options_cont;
    start_with_eigen,
    detect_codim2_bifurcation,
    kwargs...
)

Codimension 2 continuation of Fold / Hopf points. This function turns an initial guess for a Fold / Hopf point into a curve of Fold / Hopf points based on a Minimally Augmented formulation. The arguments are as follows

  • br results returned after a call to continuation
  • ind_bif bifurcation index in br
  • lens2 second parameter used for the continuation, the first one is the one used to compute br, e.g. getlens(br)
  • options_cont = br.contparams arguments to be passed to the regular continuation

Optional arguments:

  • bdlinsolver bordered linear solver for the constraint equation
  • update_minaug_every_step update vectors a, b in Minimally Formulation every update_minaug_every_step steps
  • start_with_eigen = false whether to start the Minimally Augmented problem with information from eigen elements
  • detect_codim2_bifurcation ∈ {0,1,2} whether to detect Bogdanov-Takens, Bautin and Cusp. If equals 1 non precise detection is used. If equals 2, a bisection method is used to locate the bifurcations.
  • kwargs keywords arguments to be passed to the regular continuation

where the parameters are as above except that you have to pass the branch br from the result of a call to continuation with detection of bifurcations enabled and index is the index of Hopf point in br you want to refine.

ODE problems

For ODE problems, it is more efficient to use the Matrix based Bordered Linear Solver passing the option bdlinsolver = MatrixBLS()

start_with_eigen

It is recommended that you use the option start_with_eigen = true

where the options are as above except with have an additional parameter axis lens2 which is used to locate the bifurcation points.