Manifold problems
The idea behind MultiParamContinuation is to compute immersed manifolds $\mathcal M$ in memory limited environments, the manifold being defined as (parts) of the zeros of
\[F:\mathbb R^n\times \mathbb R^{par}\to\mathbb R^m.\]
Generic manifold problem
ManifoldProblem is the basic / generic structure for encoding a bifurcation problem ; it holds the following fields:
- the vector field
- an initial guess
- a set of parameters
as well as user defined functions for
- recording (
record_from_solution) indicators about the solution when this one is too large to be saved at every continuation step.
and some other that we described below. A detailed account for the struct is ManifoldProblem.
The Plane tutorial provides an example where these arguments are used in situation.
Basic example
using MultiParamContinuationF(u,p) = [u[3]]prob = ManifoldProblem(F, [0,0,0.], nothing)Projection function
You can pass your own projection function which takes a point $u_{guess}\in \mathbb R^n$ and project it on $\mathcal M$. For example, in the case of the plane F(u,p) = u[3], we could use:
prob = ManifoldProblem(F, [0,0,0.], nothing; project = (u_g,p) -> begin u = copy(u_g) u[3] = 0 return u end, )Tangent function
You can pass your own tangent function which returns an orthonormal basis of the tangent space at point $u$. For example, in the case of the plane F(u,p) = u[3], we could use:
prob = ManifoldProblem(F, [0,0,0.], nothing; get_tangent = (u,p) -> [1 0; 0 1; 0 0], )Finalizing the solution
You can pass a finalizer function which returns a boolean. This boolean is used to discard or not the current chart. This can be used to restrict the manifold to a given bounding box.
You can have a look at bounding space for predefined finalizer functions for simple spaces.
prob = ManifoldProblem(F, [0,0,0.], nothing; finalize_solution = (c::Chart, p) -> true )