Vector bundles

Vector bundle $E$ is a special case of a fiber bundle where each fiber is a vector space.

Tangent bundle is a simple example of a vector bundle, where each fiber is the tangent space at the specified point $p$. An object representing a tangent bundle can be obtained using the constructor called TangentBundle.

There is also another type, VectorSpaceFiber, that represents a specific fiber at a given point. This is also considered a manifold.

FVector

For cases where confusion between different types of vectors is possible, the type FVector can be used to express which type of vector space the vector belongs to. It is used for example in musical isomorphisms (the flat and sharp functions) that are used to go from a tangent space to cotangent space and vice versa.

Documentation

Manifolds.TangentBundle โ Type
TangentBundle{๐ฝ,M} = VectorBundle{๐ฝ,TangentSpaceType,M} where {๐ฝ,M<:AbstractManifold{๐ฝ}}

Tangent bundle for manifold of type M, as a manifold with the Sasaki metric [Sas58].

Exact retraction and inverse retraction can be approximated using FiberBundleProductRetraction, FiberBundleInverseProductRetraction and SasakiRetraction. FiberBundleProductVectorTransport can be used as a vector transport.

Constructors

TangentBundle(M::AbstractManifold)
TangentBundle(M::AbstractManifold, vtm::FiberBundleProductVectorTransport)
source
ManifoldsBase.inner โ Method
inner(B::VectorBundle, p, X, Y)

Inner product of tangent vectors X and Y at point p from the vector bundle B over manifold B.fiber (denoted $\mathcal M$).

Notation:

• The point $p = (x_p, V_p)$ where $x_p โ \mathcal M$ and $V_p$ belongs to the fiber $F=ฯ^{-1}(\{x_p\})$ of the vector bundle $B$ where $ฯ$ is the canonical projection of that vector bundle $B$.
• The tangent vector $v = (V_{X,M}, V_{X,F}) โ T_{x}B$ where $V_{X,M}$ is a tangent vector from the tangent space $T_{x_p}\mathcal M$ and $V_{X,F}$ is a tangent vector from the tangent space $T_{V_p}F$ (isomorphic to $F$). Similarly for the other tangent vector $w = (V_{Y,M}, V_{Y,F}) โ T_{x}B$.

The inner product is calculated as

$โจX, Yโฉ_p = โจV_{X,M}, V_{Y,M}โฉ_{x_p} + โจV_{X,F}, V_{Y,F}โฉ_{V_p}.$

source
ManifoldsBase.project โ Method
project(B::VectorBundle, p, X)

Project the element X of the ambient space of the tangent space $T_p B$ to the tangent space $T_p B$.

Notation:

• The point $p = (x_p, V_p)$ where $x_p โ \mathcal M$ and $V_p$ belongs to the fiber $F=ฯ^{-1}(\{x_p\})$ of the vector bundle $B$ where $ฯ$ is the canonical projection of that vector bundle $B$.
• The vector $x = (V_{X,M}, V_{X,F})$ where $x_p$ belongs to the ambient space of $T_{x_p}\mathcal M$ and $V_{X,F}$ belongs to the ambient space of the fiber $F=ฯ^{-1}(\{x_p\})$ of the vector bundle $B$ where $ฯ$ is the canonical projection of that vector bundle $B$.

The projection is calculated by projecting $V_{X,M}$ to tangent space $T_{x_p}\mathcal M$ and then projecting the vector $V_{X,F}$ to the fiber $F$.

source
ManifoldsBase.project โ Method
project(B::VectorBundle, p)

Project the point p from the ambient space of the vector bundle B over manifold B.fiber (denoted $\mathcal M$) to the vector bundle.

Notation:

• The point $p = (x_p, V_p)$ where $x_p$ belongs to the ambient space of $\mathcal M$ and $V_p$ belongs to the ambient space of the fiber $F=ฯ^{-1}(\{x_p\})$ of the vector bundle $B$ where $ฯ$ is the canonical projection of that vector bundle $B$.

The projection is calculated by projecting the point $x_p$ to the manifold $\mathcal M$ and then projecting the vector $V_p$ to the tangent space $T_{x_p}\mathcal M$.

source

Example

The following code defines a point on the tangent bundle of the sphere $S^2$ and a tangent vector to that point.

using Manifolds
M = Sphere(2)
TB = TangentBundle(M)
p = ArrayPartition([1.0, 0.0, 0.0], [0.0, 1.0, 3.0])
X = ArrayPartition([0.0, 1.0, 0.0], [0.0, 0.0, -2.0])
([0.0, 1.0, 0.0], [0.0, 0.0, -2.0])

An approximation of the exponential in the Sasaki metric using 1000 steps can be calculated as follows.

q = retract(TB, p, X, SasakiRetraction(1000))
println("Approximation of the exponential map: ", q)
Approximation of the exponential map: ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}(([0.6759570857309888, 0.35241486404386485, 0.6472138609849252], [-1.0318269583261073, 0.6273324630574116, 0.7360618920075961]))