The general workflow for using the package is as follows:
- Define a problem
- Solve the problem
- Analyze the output
Problems are specified via a type interface. The problem types are designed to contain the necessary information to fully define their associated continuation method. For example, a bifurcation problem is defined by
with some parameters pars
, some initial guess u0
, and scalar parameter axis lens
contained in pars
. Therefore the BifurcationProblem
is defined by those components:
prob = BifurcationProblem(F, u0, pars, lens)
Note that the number types in the solution will match the types you designate in the problem. However complex types are not advised as they mess up the detection of bifurcation points.
Each type of bifurcation problem has its own problem type which allow the solvers to dispatch to the right methods. The common interface for calling the solvers is:
br = continuation(prob, alg; kwargs)
Into the command, one passes the bifurcation problem that was defined
prob
, choose an algorithm alg
, and change the properties of the solver using keyword arguments.
The solver returns a branch object br
which holds all the details for the branch.
The solution type has a common interface, which makes handling the solution similar between the
different types of bifurcation problems. Tools such as interpolations
are seamlessly built into the solution interface to make analysis easy. This
interface is described in the ContResult
.
Plotting functionality is provided by a recipe to Plots.jl
. To
use plot branches, simply call the plot(br)
and the plotter will generate
appropriate plots. Plots can be customized using all the keyword arguments
provided by Plots.jl. Please see Plots.jl's documentation for more information.