Library

Parameters

MultiParamContinuation.CoveringPar — Type

Parameters for the covering algorithm(s).

Fields

  • ϵ::Any: Maximum distance between the tangent plane and the manifold. Default: 0.1

  • R0::Any: Initial radius of validity. Default: 0.1

  • Rmin::Any: [Internal] Minimal radius of polyhedra. Default: 0.001

  • Rmax::Any: [Internal] Maximal radius of polyhedra. Default: 0.1

  • α::Any: Mulitplicative factor for increasing the validity radius. Cannot be larger than α * current radius. Default: 1.05

  • delta_angle::Any: Maximum angle difference between charts' tangent spaces in radians. Default: 2π

  • max_charts::UInt64: Maximum number of charts. Default: 100

  • max_steps::UInt64: Maximum number of continuation steps. Because of mesh adaptation or failure, the number of computed charts is less or equal than max_steps. Default: 1000

  • verbose::Int64: Verbose mode, belongs to {0,1,2}. verbose = 0 prints nothing. verbose = 1 prints the charts, verbose = 2 print the intersection of the charts. Default: 0

  • newton_options::Any: Newton options. Default: NonLinearSolveSpec()

  • solver_bls::Any: Bordered Linear Solver Default: nothing

  • dotmin::Any: [Internal]. Default: 0.0

source

Results

MultiParamContinuation.Chart — Type
mutable 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 validity

  • interior::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_they_intersect(c1, c2)::Bool whether the charts intersect
source
MultiParamContinuation.Atlas — Type
struct Atlas{dim, Tc, Talg, Ttree}

Atlas of charts which represents a manifold.

Fields

  • atlas::Vector: List of Charts

  • BList::Vector: [Internal] Boundary list of charts

  • alg::Any: Algorithm cache, 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 charts
  • a[3] returns the 3rd chart in the atlas a, see ?Chart
source

Problems

MultiParamContinuation.ManifoldProblem — Type
struct ManifoldProblem{Tu<:(AbstractVector), Tp, TVF, Trec, Tproj, Ttangent, Tradius, Tevent, Tfinalize, Tbb, Tpc, Tupdate, Tw} <: 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 dimension.

  • m::Int64: [Internal] output space dimension.

  • VF::Any: Equation representing the mapping F (vector field).

  • u0::AbstractVector: Guess for the initial point on the manifold.

  • params::Any: Parameters passed to F

  • recordFromSolution::Any: Record a few indicators at each chart of the manifold.

  • project::Any: Function to project a point from a tangent space to the manifold. If not provided, a newton algorithm is used. The signature is project(u, par) and returns a vector of solutions.

  • get_tangent::Any: Compute a basis of the tangent space at a point u on the manifold, orthonormal in the metric defined by weights. Returns a matrix of dimension n × (n-m). The signature is get_tangent(u, par). If not provided, a dedicated function is used.

  • get_radius::Any: Estimate the radius of validity of a chart centered at u (for example from the curvature of the manifold). The signature is get_radius(u, par). If not provided, a dedicated function is used.

  • event_function::Any: Event function

  • finalize_solution::Any: Function to accept or reject the current chart. It has signature finalize_solution(u, par)::Bool.

  • project_for_tree::Any: Function used to project a point for the tree which finds the charts near a new point. Needs not be linear but the dimension should be at least the manifold dimension.

  • prob_cons::Any: [Internal] constrained problem for projecting on manifold.

  • update!::Any: Function used to update the problem after each continuation step. The signature is update_problem!(prob, ::Atlas).

  • weights::Any: Diagonal metric coefficients d used for the norm norm(sqrt.(d) .* u), the scalar products, the tangent orthonormalization, etc. Defaults to Weight(TrivialWeight()).

Constructor

ManifoldProblem(F, u0, par;                m = length(F(u0, par)),                check_dim::Bool = true,                record_from_solution = (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,                prob_cons = nothing,                update! = update_default,                weights = Weight(TrivialWeight()),                )
source
MultiParamContinuation.ManifoldProblemBK — Type
struct ManifoldProblemBK{Tu<:(AbstractVector), Tp, TVF, Trec, Tproj, Ttangent, Tradius, Tevent, Tfinalize, Tbb, Tpc, Tupdate, Tw} <: MultiParamContinuation.AbstractManifoldProblemBifurcationKit

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 dimension.

  • m::Int64: [Internal] output space dimension.

  • VF::Any: Equation representing the mapping F (vector field).

  • u0::AbstractVector: Guess for the initial point on the manifold.

  • params::Any: Parameters passed to F

  • recordFromSolution::Any: Record a few indicators at each chart of the manifold.

  • project::Any: Function to project a point from a tangent space to the manifold. If not provided, a newton algorithm is used. The signature is project(u, par) and returns a vector of solutions.

  • get_tangent::Any: Compute a basis of the tangent space at a point u on the manifold, orthonormal in the metric defined by weights. Returns a matrix of dimension n × (n-m). The signature is get_tangent(u, par). If not provided, a dedicated function is used.

  • get_radius::Any: Estimate the radius of validity of a chart centered at u (for example from the curvature of the manifold). The signature is get_radius(u, par). If not provided, a dedicated function is used.

  • event_function::Any: Event function

  • finalize_solution::Any: Function to accept or reject the current chart. It has signature finalize_solution(u, par)::Bool.

  • project_for_tree::Any: Function used to project a point for the tree which finds the charts near a new point. Needs not be linear but the dimension should be at least the manifold dimension.

  • prob_cons::Any: [Internal] constrained problem for projecting on manifold.

  • update!::Any: Function used to update the problem after each continuation step. The signature is update_problem!(prob, ::Atlas).

  • weights::Any: Diagonal metric coefficients d used for the norm norm(sqrt.(d) .* u), the scalar products, the tangent orthonormalization, etc. Defaults to Weight(TrivialWeight()).

Constructor

ManifoldProblem(F, u0, par;                m = length(F(u0, par)),                check_dim::Bool = true,                record_from_solution = (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,                prob_cons = nothing,                update! = update_default,                weights = Weight(TrivialWeight()),                )
source
MultiParamContinuation.ManifoldProblemBKMatrixFree — Type
struct ManifoldProblemBKMatrixFree{Tu<:(AbstractVector), Tp, TVF, Trec, Tproj, Ttangent, Tradius, Tevent, Tfinalize, Tbb, Tpc, Tupdate, Tw} <: MultiParamContinuation.AbstractManifoldProblemBifurcationKit

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 dimension.

  • m::Int64: [Internal] output space dimension.

  • VF::Any: Equation representing the mapping F (vector field).

  • u0::AbstractVector: Guess for the initial point on the manifold.

  • params::Any: Parameters passed to F

  • recordFromSolution::Any: Record a few indicators at each chart of the manifold.

  • project::Any: Function to project a point from a tangent space to the manifold. If not provided, a newton algorithm is used. The signature is project(u, par) and returns a vector of solutions.

  • get_tangent::Any: Compute a basis of the tangent space at a point u on the manifold, orthonormal in the metric defined by weights. Returns a matrix of dimension n × (n-m). The signature is get_tangent(u, par). If not provided, a dedicated function is used.

  • get_radius::Any: Estimate the radius of validity of a chart centered at u (for example from the curvature of the manifold). The signature is get_radius(u, par). If not provided, a dedicated function is used.

  • event_function::Any: Event function

  • finalize_solution::Any: Function to accept or reject the current chart. It has signature finalize_solution(u, par)::Bool.

  • project_for_tree::Any: Function used to project a point for the tree which finds the charts near a new point. Needs not be linear but the dimension should be at least the manifold dimension.

  • prob_cons::Any: [Internal] constrained problem for projecting on manifold.

  • update!::Any: Function used to update the problem after each continuation step. The signature is update_problem!(prob, ::Atlas).

  • weights::Any: Diagonal metric coefficients d used for the norm norm(sqrt.(d) .* u), the scalar products, the tangent orthonormalization, etc. Defaults to Weight(TrivialWeight()).

Constructor

ManifoldProblem(F, u0, par;                m = length(F(u0, par)),                check_dim::Bool = true,                record_from_solution = (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,                prob_cons = nothing,                update! = update_default,                weights = Weight(TrivialWeight()),                )
source
MultiParamContinuation.get_tangent — Function

Compute a basis for the tangent space at point u0 on F(u, par) = 0. If J is the jacobian dF(u0, par) and k = n - m, it is found by solving the bordered system

┌ ┐ ┌ ┐ │ J │ Φ = │ 0 │ │ T │ │I(n-m)│ └ ┘ └ ┘

where T is a random matrix (see BorderedTangent). Alternatively a direct QR factorization of Jᵀ can be used (see QRDirectTangent).

source
Missing docstring.

Missing docstring for MultiParamContinuation.get_curvature. Check Documenter's build log for details.

Missing docstring.

Missing docstring for BifurcationKitExt.BLSBorderedTangent. Check Documenter's build log for details.

Continuation algorithms

MultiParamContinuation.Henderson — Type
struct Henderson{T} <: MultiParamContinuation.AbstractCoveringAlgorithm

Covering algorithm from [1] computing implicitly defined 2d manifolds F(u) = 0, F: ℝⁿ → ℝᵐ with n - m = 2.

Fields

  • np0::Int64: Number of vertices of the initial regular polyhedron approximating the ball of validity on each tangent space.

  • use_curvature::Bool: Adapt the radius of validity using a curvature estimate computed from second derivatives (Hessian).

  • radius_factor::Any: Safety factor for the curvature-based radius estimate radius = radius_factor * sqrt(2ϵ / K). Defaults to 0.6.

  • θmax::Any: [Internal] Maximal value of the adaptive fraction θ of the boundary ray. Must be <= 1.

  • θmin::Any: [Internal] Minimal value of the adaptive fraction θ below which the search for a new chart is abandoned.

  • 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: Maximal number of charts per leaf of the BVH tree. Controls 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.

source

Continuation methods

Missing docstring.

Missing docstring for continuation. Check Documenter's build log for details.

Bounding functions

MultiParamContinuation.Cube — Type

Define 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))
source
MultiParamContinuation.ProductSpace — Type
struct ProductSpace{T<:(AbstractVector)}

Structure to define a domain defined by a set of intervals

Fields

  • lower::AbstractVector: lower parts of all intervals

  • upper::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))
source