Skip to main content

Crate cartan

Crate cartan 

Source
Expand description

§cartan

Riemannian geometry, manifold optimisation, and geodesic computation in Rust.

This is the facade crate. It re-exports the family under short aliases so a downstream user needs one dependency:

cartan = "0.8"

§Three regimes

One trait system spans geometry at points, at fields, and along paths:

regimecrateswhat it does
pointsmanifolds, optim, geoexp, log, transport, optimisation
fieldsdec, remesh, iodiscrete exterior calculus, bundles, export
pathsstochasticframe bundle, horizontal lift, development

§Features

The default is std plus dec. Everything else is opt-in, so a user who wants exp and log does not compile a sparse solver.

featurebrings inneeds
alloccore, manifolds, optim, geono_std with an allocator
stdthe above, with stdstd
dec (default)cartan-decstd
remeshcartan-remeshdec
stochasticcartan-stochasticstd
homogcartan-homog mean-field schemesalloc
full-fieldcartan-homog cell-problem solverhomog, remesh, std
iocartan-io VTK and Blender exportdec
maxwellcartan-maxwellio
fullall of the abovestd

§Embedded and no_std

cartan = { version = "0.8", default-features = false, features = ["alloc"] }

That gives the point-geometry stack and, by adding homog, the mean-field homogenisation schemes. CI builds this configuration for thumbv7em-none-eabihf on every run.

§Prelude

use cartan::prelude::*; brings the geometry traits into scope, so .exp(), .log() and .inner() are callable on any manifold without naming each trait.

§Guide

See guide for worked chapters. Every code block there is a doctest.

Re-exports§

pub use cartan_core as traits;
pub use cartan_geo as geo;
pub use cartan_manifolds as manifolds;
pub use cartan_optim as optim;
pub use cartan_dec as dec;dec
pub use cartan_remesh as remesh;remesh
pub use cartan_stochastic as stochastic;stochastic
pub use cartan_homog as homog;homog
pub use cartan_io as io;io
pub use cartan_maxwell as maxwell;maxwell

Modules§

guide
Worked chapters. Every code block is a doctest, run by cargo test --doc, so nothing here can drift from the API.
prelude
Prelude module: import with use cartan::prelude::* to bring all traits into scope.