Quotient manifold
Manifolds.IsQuotientManifold
โ TypeIsQuotientManifold <: AbstractTrait
Specify that a certain decorated manifold is a quotient manifold in the sense that it provides implicitly (or explicitly through QuotientManifold
properties of a quotient manifold.
See QuotientManifold
for more details.
Manifolds.QuotientManifold
โ TypeQuotientManifold{M <: AbstractManifold{๐ฝ}, N} <: AbstractManifold{๐ฝ}
Equip a manifold $\mathcal M$ explicitly with the property of being a quotient manifold.
A manifold $\mathcal M$ is then a a quotient manifold of another manifold $\mathcal N$, i.e. for an equivalence relation $โผ$ on $\mathcal N$ we have
\[ \mathcal M = \mathcal N / โผ = \bigl\{ [p] : p โ \mathcal N \bigr\},\]
where $[p] โ \{ q โ \mathcal N : q โผ p\}$ denotes the equivalence class containing $p$. For more details see Subsection 3.4.1 [AMS08].
This manifold type models an explicit quotient structure. This should be done if either the default implementation of $\mathcal M$ uses another representation different from the quotient structure or if it provides a (default) quotient structure that is different from the one introduced here.
Fields
manifold
โ the manifold $\mathcal M$ in the introduction above.total_space
โ the manifold $\mathcal N$ in the introduction above.
Constructor
QuotientManifold(M,N)
Create a manifold where M
is the quotient manifold and N
is its total space.
Provided functions
Manifolds.canonical_project!
โ Methodcanonical_project!(M, q, p)
Compute the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold
, e.g. a QuotientManifold
in place of q
.
See canonical_project
for more details.
Manifolds.canonical_project
โ Methodcanonical_project(M, p)
Compute the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold
, e.g. a QuotientManifold
. The canonical (or natural) projection $ฯ$ from the total space $\mathcal N$ onto $\mathcal M$ given by
\[ ฯ = ฯ_{\mathcal N, \mathcal M} : \mathcal N โ \mathcal M, p โฆ ฯ_{\mathcal N, \mathcal M}(p) = [p].\]
in other words, this function implicitly assumes, that the total space $\mathcal N$ is given, for example explicitly when M
is a QuotientManifold
and p
is a point on N
.
Manifolds.differential_canonical_project!
โ Methoddifferential_canonical_project!(M, Y, p, X)
Compute the differential of the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold
, e.g. a QuotientManifold
. See differential_canonical_project
for details.
Manifolds.differential_canonical_project
โ Methoddifferential_canonical_project(M, p, X)
Compute the differential of the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold
, e.g. a QuotientManifold
. The canonical (or natural) projection $ฯ$ from the total space $\mathcal N$ onto $\mathcal M$, such that its differential
\[ Dฯ(p) : T_p\mathcal N โ T_{ฯ(p)}\mathcal M\]
where again the total space might be implicitly assumed, or explicitly when using a QuotientManifold
M
. So here p
is a point on N
and X
is from $T_p\mathcal N$.
Manifolds.get_orbit_action
โ Methodget_orbit_action(M::AbstractDecoratorManifold)
Return the group action that generates the orbit of an equivalence class of the quotient manifold M
for which equivalence classes are orbits of an action of a Lie group. For the case that
\[\mathcal M = \mathcal N / \mathcal O,\]
where $\mathcal O$ is a Lie group with its group action generating the orbit.
Manifolds.get_total_space
โ Methodget_total_space(M::AbstractDecoratorManifold)
Return the total space of a manifold that IsQuotientManifold
, e.g. a QuotientManifold
.
Manifolds.horizontal_component
โ Methodhorizontal_component(N::AbstractManifold, p, X)
Compute the horizontal component of tangent vector X
at point p
in the total space of quotient manifold N
.
Manifolds.horizontal_lift!
โ Methodhorizontal_lift!(N, Y, q, X)
horizontal_lift!(QuotientManifold{M,N}, Y, p, X)
Compute the horizontal_lift
of X
from $T_p\mathcal M$, $p=ฯ(q)$. to `T_q\mathcal N
in place of Y
.
Manifolds.horizontal_lift
โ Methodhorizontal_lift(N::AbstractManifold, q, X)
horizontal_lift(::QuotientManifold{๐ฝ,MT<:AbstractManifold{๐ฝ},NT<:AbstractManifold}, p, X) where {๐ฝ}
Given a point q
in total space of quotient manifold N
such that $p=ฯ(q)$ is a point on a quotient manifold M
(implicitly given for the first case) and a tangent vector X
this method computes a tangent vector Y
on the horizontal space of $T_q\mathcal N$, i.e. the subspace that is orthogonal to the kernel of $Dฯ(q)$.
Manifolds.vertical_component
โ Methodvertical_component(N::AbstractManifold, p, X)
Compute the vertical component of tangent vector X
at point p
in the total space of quotient manifold N
.