# Frozen coefficients solvers

An initial value problem manifold ordinary differential equation in the frozen coefficients formulation by Crouch and Grossman, see [CG93].

A frozen coefficients ODE on manifold $M$ is defined in terms a vector field $F\colon (M × P × ℝ) \to T_p M$ where $p$ is the point given as the third argument to $F$, with an initial value $y_0$ and $P$ is the space of constant parameters. Frozen coefficients mean that we also have means to transport a vector $X \in T_p M$ obtained from $F$ to a different point on a manifold or a different time (parameters are assumed to be constant). This is performed through `operator_vector_transport`

, an object of a subtype of `AbstractVectorTransportOperator`

, stored in `FrozenManifoldDiffEqOperator`

.

A solution to this problem is a curve $y\colon ℝ\to M$ such that $y(0)=y_0$ and for each $t \in [0, T]$ we have $D_t y(t) = F(y(t), p, t)$.

The problem is usually studied for manifolds that are Lie groups or homogeneous manifolds, see[CMO14].

Note that in this formulation $s$-stage explicit Runge-Kutta schemes that for $\mathbb{R}^n$ are defined by equations

\[\begin{align*} X_1 &= f(u_n, p, t) \\ X_2 &= f(u_n+h a_{2,1} X_1, p, t+c_2 h) \\ X_3 &= f(u_n+h a_{3,1} X_1 + a_{3,2} X_2, p, t+c_3 h) \\ &\vdots \\ X_s &= f(u_n+h a_{s,1} X_1 + a_{s,2} X_2 + \dots + a_{s,s-1} X_{s-1}, p, t+c_s h) \\ u_{n+1} &= u_n + h\sum_{i=1}^s b_i X_i \end{align*}\]

for general manifolds read

\[\begin{align*} X_1 &= f(u_n, p, t) \\ u_{n,2,1} &= \exp_{u_n}(h a_{2,1} X_1) \\ X_2 &= f(u_{n,2,1}, p, t+c_2 h) \\ u_{n,3,1} &= \exp_{u_n}(h a_{3,1} X_1) \\ u_{n,3,2} &= \exp_{u_{n,3,1}}(\mathcal P_{u_{n,3,1}\gets u_{n,2,1}} h a_{3,2} X_2) \\ X_3 &= f(u_{n,3,2}, p, t+c_3 h) \\ &\vdots \\ X_s &= f(u_{n,s,s-1}, p, t+c_s h) \\ X_{b,1} &= X_1 \\ u_{b,1} &= \exp_{u_n}(h b_1 X_{b,1}) \\ X_{b,2} &= \mathcal P_{u_{b,1} \gets u_{n,2,1}} X_2 \\ u_{b,2} &= \exp_{u_{b,1}}(h b_2 X_{b,2}) \\ &\vdots \\ X_{b,s} &= \mathcal P_{u_{b,s-1} \gets u_{n,s,s-1}} X_s \\ u_{n+1} &= \exp_{u_{b,s-1}}(h b_s X_{b,s}) \end{align*}\]

Vector transports correspond to handling frozen coefficients. Note that the implementation allows for easy substitution of methods used for calculation of the exponential map (for example to use an approximation) and vector transport (if the default vector transport is not suitable for the problem). It is desirable to use a flat vector transport instead of a torsion-free one when available, for example the plus or minus Cartan-Schouten connections on Lie groups.

`ManifoldDiffEq.CG2`

— Type`CG2`

A Crouch-Grossmann algorithm of second order for problems in the `ExplicitManifoldODEProblemType`

formulation. The Butcher tableau is identical to the Euclidean RK2:

\[\begin{array}{c|cc} 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & 0 & 1 \end{array}\]

`ManifoldDiffEq.CG2Cache`

— Type`CG2Cache`

Cache for `CG2`

.

`ManifoldDiffEq.CG2_3`

— Type`CG2_3`

A Crouch-Grossmann algorithm of order 2(3) for problems in the `ExplicitManifoldODEProblemType`

formulation. The Butcher tableau reads (see tableau (5) of [EM98]):

\[\begin{array}{c|ccc} 0 & 0 \\ \frac{3}{4} & \frac{3}{4} & 0 \\ \frac{17}{24} & \frac{119}{216} & \frac{17}{108} & 0\\ \hline & \frac{3}{4} & \frac{31}{4} & \frac{-15}{2} & \frac{13}{51} & -\frac{2}{3} & \frac{24}{17} \end{array}\]

The last row is used for error estimation.

`ManifoldDiffEq.CG2_3Cache`

— Type`CG2_3Cache`

Cache for `CG2_3`

.

`ManifoldDiffEq.CG3`

— Type`CG3`

A Crouch-Grossmann algorithm of second order for problems in the `ExplicitManifoldODEProblemType`

formulation. See tableau 6.1 of [OM99]:

\[\begin{array}{c|ccc} 0 & 0 \\ \frac{3}{4} & \frac{3}{4} & 0 \\ \frac{17}{24} & \frac{119}{216} & \frac{17}{108} & 0\\ \hline & \frac{13}{51} & -\frac{2}{3} & \frac{24}{17} \end{array}\]

`ManifoldDiffEq.CG3Cache`

— Type`CG3Cache`

Cache for `CG3`

.

`ManifoldDiffEq.CG4a`

— Type`CG4a`

A Crouch-Grossmann algorithm of second order for problems in the `ExplicitManifoldODEProblemType`

formulation. See coefficients from Example 1 of [JMO00].

`ManifoldDiffEq.CG4aCache`

— Type`CG4aCache`

Cache for `CG4a`

.

`ManifoldDiffEq.ManifoldEuler`

— Type`ManifoldEuler`

The manifold Euler algorithm for problems in the `ExplicitManifoldODEProblemType`

formulation.

`ManifoldDiffEq.ManifoldEulerCache`

— Type`ManifoldEulerCache`

Cache for `ManifoldEuler`

.

`ManifoldDiffEq.ManifoldEulerConstantCache`

— Type`ManifoldEulerConstantCache`

Cache for `ManifoldEuler`

.

`ManifoldDiffEq.ExplicitManifoldODEProblemType`

— Type`ExplicitManifoldODEProblemType`

An initial value problem manifold ordinary differential equation in the frozen coefficients formulation by Crouch and Grossman, see [CG93].

A frozen coefficients ODE on manifold $M$ is defined in terms a vector field $F: (M × P × ℝ) \to T_p M$ where $p$ is the point given as the third argument to $F$, with an initial value $y₀$ and $P$ is the space of constant parameters. A solution to this problem is a curve $y:ℝ\to M$ such that $y(0)=y₀$ and for each $t ∈ [0, T]$ we have $D_t y(t) = F(y(t), p, t)$,

Proofs of convergence and order have several assumptions, including time-independence of $F$. Integrators may not work well if these assumptions do not hold.

`ManifoldDiffEq.FrozenManifoldDiffEqOperator`

— Type`FrozenManifoldDiffEqOperator{T<:Number,TM<:AbstractManifold,TF,TVT} <: SciMLBase.AbstractDiffEqOperator{T}`

DiffEq operator on manifolds in the frozen vector field formulation.

`ManifoldDiffEq.AbstractVectorTransportOperator`

— Type`AbstractVectorTransportOperator`

Abstract type for vector transport operators in the frozen coefficients formulation.

`ManifoldDiffEq.DefaultVectorTransportOperator`

— Type`(vto::DefaultVectorTransportOperator)(M::AbstractManifold, p, X, q, params, t_from, t_to)`

In the frozen coefficient formulation, transport tangent vector `X`

such that `X = f(p, params, t_from)`

to point `q`

at time `t_to`

. This provides a sort of estimation of `f(q, params, t_to)`

.