# Fiber bundles

Fiber bundle $E$ is a manifold that is built on top of another manifold $\mathcal M$ (base space). It is characterized by a continuous function $ฮ : E โ \mathcal M$. For each point $p โ \mathcal M$ the preimage of $p$ by $ฮ $, $ฮ ^{-1}(\{p\})$ is called a fiber $F$. Bundle projection can be performed using function `bundle_projection`

.

`Manifolds.jl`

primarily deals with the case of trivial bundles, where $E$ can be topologically identified with a product $MรF$.

Vector bundles is a special case of a fiber bundle. Other examples include unit tangent bundle. Note that in general fiber bundles don't have a canonical Riemannian structure but can at least be equipped with an Ehresmann connection, providing notions of parallel transport and curvature.

## Documentation

`Manifolds.FiberBundle`

โ Type`FiberBundle{๐ฝ,TVS<:FiberType,TM<:AbstractManifold{๐ฝ},TVT<:FiberBundleProductVectorTransport} <: AbstractManifold{๐ฝ}`

Fiber bundle on a `AbstractManifold`

`M`

of type `FiberType`

. Examples include vector bundles, principal bundles or unit tangent bundles, see also ๐ Fiber Bundle.

**Fields**

`manifold`

โ the`AbstractManifold`

manifold the Fiber bundle is defined on,`type`

โ representing the type of fiber we use.

**Constructor**

`FiberBundle(M::AbstractManifold, type::FiberType)`

`Manifolds.FiberBundleInverseProductRetraction`

โ Type`struct FiberBundleInverseProductRetraction <: AbstractInverseRetractionMethod end`

Inverse retraction of the point `y`

at point `p`

from vector bundle `B`

over manifold `B.fiber`

(denoted $\mathcal M$). The inverse retraction is derived as a product manifold-style approximation to the logarithmic map in the Sasaki metric. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

**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$. Similarly, $q = (x_q, V_q)$.

The inverse retraction is calculated as

\[\operatorname{retr}^{-1}_p q = (\operatorname{retr}^{-1}_{x_p}(x_q), V_{\operatorname{retr}^{-1}} - V_p)\]

where $V_{\operatorname{retr}^{-1}}$ is the result of vector transport of $V_q$ to the point $x_p$. The difference $V_{\operatorname{retr}^{-1}} - V_p$ corresponds to the logarithmic map in the vector space $F$.

See also `FiberBundleProductRetraction`

.

`Manifolds.FiberBundleProductRetraction`

โ Type`struct FiberBundleProductRetraction <: AbstractRetractionMethod end`

Product retraction map of tangent vector $X$ at point $p$ from vector bundle `B`

over manifold `B.fiber`

(denoted $\mathcal M$). The retraction is derived as a product manifold-style approximation to the exponential map in the Sasaki metric. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

**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 $X = (V_{X,M}, V_{X,F}) โ T_pB$ 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$).

The retraction is calculated as

`math \operatorname{retr}_p(X) = (\exp_{x_p}(V_{X,M}), V_{\exp})`

`

where $V_{\exp}$ is the result of vector transport of $V_p + V_{X,F}$ to the point $\exp_{x_p}(V_{X,M})$. The sum $V_p + V_{X,F}$ corresponds to the exponential map in the vector space $F$.

See also `FiberBundleInverseProductRetraction`

.

`Manifolds.FiberBundleProductVectorTransport`

โ Type```
FiberBundleProductVectorTransport{
TMP<:AbstractVectorTransportMethod,
TMV<:AbstractVectorTransportMethod,
} <: AbstractVectorTransportMethod
```

Vector transport type on `FiberBundle`

.

**Fields**

`method_horizonal`

โ vector transport method of the horizontal part (related to manifold M)`method_vertical`

โ vector transport method of the vertical part (related to fibers).

The vector transport is derived as a product manifold-style vector transport. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

**Constructor**

```
FiberBundleProductVectorTransport(
M::AbstractManifold=DefaultManifold();
vector_transport_method_horizontal::AbstractVectorTransportMethod = default_vector_transport_method(M),
vector_transport_method_vertical::AbstractVectorTransportMethod = default_vector_transport_method(M),
)
```

Construct the `FiberBundleProductVectorTransport`

using the `default_vector_transport_method`

, which uses `ParallelTransport`

if no manifold is provided.

`Base.getindex`

โ Method```
getindex(p::ArrayPartition, M::FiberBundle, s::Symbol)
p[M::FiberBundle, s]
```

Access the element(s) at index `s`

of a point `p`

on a `FiberBundle`

`M`

by using the symbols `:point`

and `:vector`

or `:fiber`

for the base and vector or fiber component, respectively.

`Base.setindex!`

โ Method```
setindex!(p::ArrayPartition, val, M::FiberBundle, s::Symbol)
p[M::VectorBundle, s] = val
```

Set the element(s) at index `s`

of a point `p`

on a `FiberBundle`

`M`

to `val`

by using the symbols `:point`

and `:fiber`

or `:vector`

for the base and fiber or vector component, respectively.

The *content* of element of `p`

is replaced, not the element itself.

`Manifolds.bundle_projection`

โ Method`bundle_projection(B::FiberBundle, p)`

Projection of point `p`

from the bundle `M`

to the base manifold. Returns the point on the base manifold `B.manifold`

at which the vector part of `p`

is attached.

`Manifolds.bundle_transport_tangent_direction`

โ Function`bundle_transport_tangent_direction(B::FiberBundle, p, pf, X, d)`

Compute parallel transport of vertical vector `X`

according to Ehresmann connection on `FiberBundle`

`B`

, in direction $d\in T_p \mathcal M$. $X$ is an element of the vertical bundle $VF\mathcal M$ at `pf`

from tangent to fiber $\pi^{-1}({p})$, $p\in \mathcal M$.

`Manifolds.bundle_transport_tangent_to`

โ Function`bundle_transport_tangent_to(B::FiberBundle, p, pf, X, q)`

Compute parallel transport of vertical vector `X`

according to Ehresmann connection on `FiberBundle`

`B`

, to point $q\in \mathcal M$. $X$ is an element of the vertical bundle $VF\mathcal M$ at `pf`

from tangent to fiber $\pi^{-1}({p})$, $p\in \mathcal M$.

`Manifolds.bundle_transport_to`

โ Method`bundle_transport_to(B::FiberBundle, p, X, q)`

Given a fiber bundle $B=F \mathcal M$, points $p, q\in\mathcal M$, an element $X$ of the fiber over $p$, transport $X$ to fiber over $q$.

Exact meaning of the operation depends on the fiber bundle, or may even be undefined. Some fiber bundles may declare a default local section around each point crossing `X`

, represented by this function.

`ManifoldsBase.base_manifold`

โ Method`base_manifold(B::FiberBundle)`

Return the manifold the `FiberBundle`

s is build on.

`ManifoldsBase.zero_vector`

โ Method`zero_vector(B::FiberBundle, p)`

Zero tangent vector at point `p`

from the fiber bundle `B`

over manifold `B.fiber`

(denoted $\mathcal M$). The zero vector belongs to the 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 zero vector is calculated as

$\mathbf{0}_{p} = (\mathbf{0}_{x_p}, \mathbf{0}_F)$

where $\mathbf{0}_{x_p}$ is the zero tangent vector from $T_{x_p}\mathcal M$ and $\mathbf{0}_F$ is the zero element of the vector space $F$.