Library
Parameters
MultiParamContinuation.CoveringPar
— TypeParameters for the covering algorithm(s).
Fields
ϵ::Any
: Maximum distance between the tangent plane and the manifold. Default: 0.1R0::Any
: Initial radius of validity. Default: 0.1Rmin::Any
: [Internal] Minimal radius of polyhedra. Default: 0.001delta_angle::Any
: Maximum angle difference between charts' tangent spaces in radians. Default: 2pimax_charts::UInt64
: Maximum number of charts. Default: 100max_steps::UInt64
: Maximum number of continuation steps. Because of mesh adaptation or failure, the number of computed charts is less or equal thanmax_steps
. Default: 1000verbose::Int64
: Verbose mode, {0,1,2}. verbose = 0 prints nothing. verbose = 1 prints the charts, verbose = 2 print the intersection of the charts. Default: falsenewton_options::Any
: Newton options. Default: NonLinearSolveSpec()solver_bls::Any
: Bordered Linear Solver Default: nothingdotmin::Any
: [Internal]. Default: 0.2
Results
MultiParamContinuation.Chart
— Typemutable struct Chart{Tu, Ttg, Tr, Tp, Tin, Td, Teve, Tl}
Structure to define a chart, that is a local system of coordinates which parametrizes a small patch of the manifold.
Fields
u::Any
Φ::Any
R::Any
: Radius for region of validity (Ball).P::Any
: Polyhedron. Represents the domain of the solution manifold covered by this chart.inside_ball::Any
: Array of booleans to check if the vertices in P are inside the ball of validityinterior::Bool
: Is the polygon inside the validity ball?index::Int64
data::Any
event_values::Any
label::Any
neighbors::Vector{Int64}
: [Internal] list of direct neighbors in the atlas
Methods
do_intersect(c1, c2)::Bool
whether the charts intersect
MultiParamContinuation.Atlas
— Typestruct Atlas{dim, Tc, Talg, Ttree}
Atlas of charts which represents a manifold.
Fields
atlas::Vector
: List of ChartsBList::Vector
: [Internal] Boundary list of chartsalg::Any
: Algorithm, for example:Henderson()
tree::Any
: [Internal] Tree for neighbors search
Methods
add!(a::Atlas, c::Chart)
new_atlas(c::Chart, alg = nothing; dim = 2)
length(a::Atlas)
returns the number of chartsa[3]
returns the 3rd chart in the atlasa
Problems
MultiParamContinuation.ManifoldProblem
— Typestruct ManifoldProblem{Tu<:(AbstractVector), Tp, TVF, Trec, Tproj, Ttangent, Tradius, Tevent, Tfinalize, Tbb, Tpc} <: MultiParamContinuation.AbstractManifoldProblem
Define a problem to perform multi-parameters continuation of a manifold defined as the zeros of F: Rⁿ → Rᵐ with n > m >= 1.
Fields
n::Int64
: [Internal] input space dimensionm::Int64
: [Internal] output space dimensionVF::Any
: Equation representing the mapping Fu0::AbstractVector
: Guess for the initial point on the manifoldparams::Any
: Parameters passed to FrecordFromSolution::Any
: Record a few indicators at each chart of the manifoldproject::Any
: Function to project a point from a tangent space to the manifold. If not provided, a newton algorithm is used. The signature isproject(u, par)
and returns a vector of solutionsget_tangent::Any
: Compute an orthonormal basis of the tangent space at a point u on the manifold. Return a matrix of dimension n x (n-m). The signature isget_tangent(u, par)
. If not provided, a dedicaded function is used.get_radius::Any
: Get the an estimate of the curvature at a point u on the manifold. If not provided, a dedicaded function is used.event_function::Any
: Event functionfinalize_solution::Any
: Finalise solution. Function to accept or not the current chart. It has signaturefinalise(c::Chart, par)::Bool
project_for_tree::Any
: Function used to project a point for the tree used to find the charts near a new point. Needs not be linear but the dimension should be at least the manifold embedding dimension.prob_cons::Any
: [Internal] constrained problem for projecting on manifold
Constructor
ManifoldProblem(F, u0, par;
m = length(F(u0, par)),
check_dim::Bool = true,
recordFromSolution = (u,p) -> nothing,
project = nothing,
get_radius = get_radius_default,
get_tangent = nothing,
event_function = event_default,
finalize_solution = finalize_default,
project_for_tree = project_for_tree_default
)
MultiParamContinuation.ManifoldProblemBK
— Typestruct ManifoldProblemBK{Tu<:(AbstractVector), Tp, TVF, Trec, Tproj, Ttangent, Tradius, Tevent, Tfinalize, Tbb, Tpc} <: MultiParamContinuation.AbstractManifoldProblem
Define a problem to perform multi-parameters continuation of a manifold defined as the zeros of F: Rⁿ → Rᵐ with n > m >= 1.
Fields
n::Int64
: [Internal] input space dimensionm::Int64
: [Internal] output space dimensionVF::Any
: Equation representing the mapping Fu0::AbstractVector
: Guess for the initial point on the manifoldparams::Any
: Parameters passed to FrecordFromSolution::Any
: Record a few indicators at each chart of the manifoldproject::Any
: Function to project a point from a tangent space to the manifold. If not provided, a newton algorithm is used. The signature isproject(u, par)
and returns a vector of solutionsget_tangent::Any
: Compute an orthonormal basis of the tangent space at a point u on the manifold. Return a matrix of dimension n x (n-m). The signature isget_tangent(u, par)
. If not provided, a dedicaded function is used.get_radius::Any
: Get the an estimate of the curvature at a point u on the manifold. If not provided, a dedicaded function is used.event_function::Any
: Event functionfinalize_solution::Any
: Finalise solution. Function to accept or not the current chart. It has signaturefinalise(c::Chart, par)::Bool
project_for_tree::Any
: Function used to project a point for the tree used to find the charts near a new point. Needs not be linear but the dimension should be at least the manifold embedding dimension.prob_cons::Any
: [Internal] constrained problem for projecting on manifold
Constructor
ManifoldProblem(F, u0, par;
m = length(F(u0, par)),
check_dim::Bool = true,
recordFromSolution = (u,p) -> nothing,
project = nothing,
get_radius = get_radius_default,
get_tangent = nothing,
event_function = event_default,
finalize_solution = finalize_default,
project_for_tree = project_for_tree_default
)
Continuation algorithms
MultiParamContinuation.Henderson
— Typestruct Henderson{T} <: MultiParamContinuation.AbstractCoveringAlgorithm
Continuation algorithm from [1] computing implicitely defined 2d manifolds.
Fields
np0::Int64
: Number of initial vertices in the polyhedra on each tangent space.use_curvature::Bool
: Use hessian for curvature estimate.θmax::Any
: [Internal]θmin::Any
: [Internal]use_tree::Bool
: Use a tree to find neighbors. Useful when the number of charts is large because the complexity changes from N² to N⋅log(N)children_pre_leaf::Int64
: Number of children per leaf in the tree. Control the depth of the tree.
Reference(s)
[1] Henderson, Michael E. “Multiple Parameter Continuation: Computing Implicitly Defined k-Manifolds.” International Journal of Bifurcation and Chaos 12, no. 03 (March 2002): 451–76. https://doi.org/10.1142/S0218127402004498.
Bounding functions
MultiParamContinuation.Cube
— TypeDefine a hypercube C of radius r.
C = { u ∈ Rⁿ | -r <= u <= r}
You can define one using
cube = Cube(1)
You can test whether a point is in the cube by doing
cube(rand(3))
MultiParamContinuation.ProductSpace
— Typestruct ProductSpace{T<:(AbstractVector)}
Structure to define a domain defined by a set of intervals
Fields
lower::AbstractVector
: lower parts of all intervalsupper::AbstractVector
: upper parts of all intervals
Usage
For example, to create the domain [1,2] x [3,4], you can does
space = ProductSpace([1,3], [2,4])
and test whether a point belongs to this space:
space(rand(2))