Branch switching

The precise definition of the methods is given in Branch switching (branch point) and Branch switching (Hopf point).

Branch switching from simple branch point to equilibria

You can perform automatic branch switching by calling continuation with the following options:

continuation(br::ContResult, ind_bif::Int, optionsCont::ContinuationPar; kwargs...)

where br is a branch computed after a call to continuation with detection of bifurcation points enabled. This call computes the branch bifurcating from the ind_bif-th bifurcation point in br. An example of use is provided in the 1d Bratu model tutorial.

Branch switching from non-simple branch point to equilibria

We provide an automatic branch switching method in this case. The method is to first compute the reduced equation (see Simple bifurcation branch point) and use it to compute the nearby solutions. These solutions are seeded as initial guess for continuation. Hence, you can perform automatic branch switching by calling continuation with the following options:

continuation(br::ContResult, ind_bif::Int, optionsCont::ContinuationPar; kwargs...)

This requires the second and third derivatives of the residual (d2res, d3res) to be provided when building the GridapBifProblem.

Branch switching from Hopf point to periodic orbits

In order to compute the bifurcated branch of periodic solutions at a Hopf bifurcation point, you need to choose a method to compute periodic orbits among:

  • periodic orbits based on orthogonal collocation (PeriodicOrbitOCollProblem),
  • periodic orbits based on the trapezoidal rule (Trapeze).

Once you have decided which method to use, you use the following call:

continuation(br::ContResult, ind_HOPF::Int, _contParams::ContinuationPar,	prob::AbstractPeriodicOrbitProblem ;	δp = nothing, ampfactor = 1, kwargs...)

We refer to continuation for more information about the arguments.

Mass matrix and periodic orbits

For a problem with a mass matrix (see Mass matrix), one builds the periodic orbit problem with massmatrix = M, for example

probPO = Trapeze(; M, N = length(u0), massmatrix = GridapBifurcationKit.get_mass_matrix(prob))

This accounts for the differential-algebraic structure $M\dot z = F(z, p)$.