Bordered Arrays

Here are some informations on a composite type which is used all over the package to hold a couple (array, array) or (array, scalar) while implementing the methods described in Requested methods for Custom State.

BifurcationKit.BorderedArrayType
mutable struct BorderedArray{𝒯1, 𝒯2}

This defines an "array" (although not <: AbstractArray) to hold two arrays or an array and a scalar. As such, it is a convenient alternative to cat, vcat and friends. It proves useful for the GPU where the operation x[end] can be slow.

This is useful when one wants to add constraints (phase, ...) to a functional for example. It is used throughout the package for the Pseudo Arc Length Continuation (PALC), for the continuation of Fold / Hopf points, for periodic orbits...

It is for example used to define periodic orbits as (orbit, period). We chose not to make it a subtype of AbstractArray as we wish to apply the current package to general "arrays", see Requested methods for Custom State.

Required methods

The element in each (array, array) or (array, scalar) packed in a BorderedArray must comply with the interface of VectorInterface.jl.

Note

In essence, it is very close to the vector MinimalMVec from VectorInterface.jl.

source