Skip to content
Snippets Groups Projects

added ProductManifold<...>

Merged Müller, Alexander requested to merge addProductManifold into master

This PR adds a new manifold which is called ProductManifold. It isrealized via variadic templates the posibility to construct a manifold using the fundamental manifolds,e.g.

using RigidBodyMotion3d = ProductManifold<Realtuple<double,3>,Rotation<double,3>>;

The implementation is rather general (hopefully) and i added to the already existing tests complex productmanifolds, e.g.

using CrazyManifold = ProductManifold<Realtuple<double,1>,UnitVector<double,3>,Rotation<double,3>>;

Furthermore, i homogenized the interface between RigidBodyMotion and ProductManifold. Therefore, now all Cosserat problems can also be solved with the corresponding ProductManifold. Due to this the Cosserat energies now take the targetSpace as template parameter.

The underlying manifolds are stored via

std::tuple<TargetSpaces...>.

Furthermore, to obtain the underlying data, the interface is as follows, which uses Dune::index_constant.

using CrazyManifold = ProductManifold<Realtuple<double,1>,UnitVector<double,3>,Rotation<double,3>>;

CrazyManifold A;

A[_0] = Realtuple<double,1>();
A[_1] = UnitVector<double,3>();
A[_2] = Rotation<double,3>;

@osander is this ok or should this be solved differently?

Especially, the implementation in productManifold.hh involve a lot boilerplate code and i wounder if this can be solved more elegantly.

Edited by Müller, Alexander

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading