Basic interface for manifolds in Julia.
is based on this interface and provides a variety of manifolds.
A number system represents the field a manifold is based upon.
Most prominently, these are real-valued (
ℝ) and complex valued (
ℂ) fields that
parametrize certain manifolds.
A further type to represent the field of quaternions (
ℍ) can also be used.
Several different types of bases for a tangent space at
p on a
AbstractManifold are provided.
Methods are provided to obtain such a basis, to represent a tangent vector in a basis and to reconstruct a tangent vector from coefficients with respect to a basis.
The last two can be performed without computing the complete basis.
Further a basis can be cached and hence be reused, see
The decorator manifold enhances a manifold by certain, in most cases implicitly
assumed to have a standard case, properties, see for example the
The decorator acts semi transparently, i.e.
:transparent for all functions not affected by that
:intransparent otherwise. Another possibility is, that the decorator just
:parent in order to fill default values.
The embedded manifold models the embedding of a manifold into another manifold.
This way a manifold can benefit from existing implementations.
One example is the
TransparentIsometricEmbeddingType where a manifold uses the metric,
inner, from its embedding.
ValidationManifold further illustrates how one can also used types to
represent points on a manifold, tangent vectors, and cotangent vectors,
where values are encapsulated in a certain type.
ValidationManifold might be used for manifolds where these three types are represented
by more complicated data structures or when it is necessary to distinguish these
This adds a semantic layer to the interface, and the default implementation of
ValidationManifold adds checks to all inputs and outputs of typed data.