Skip to content

Manifold elements

Usually optimization problems are defined in terms of a cost function, such as:

minxMf(x) where f:MR.

Usually M is an Euclidean vector space Rn.

In a finite element context, for example, in 2D elasticity problems, we have a two-dimensional displacement for each node. As a result, if there are n nodes, we optimize in R2n.

The nodal degrees of freedom should be wrapped in Ikarus::RealTuple<double,2> in this case.

Another case of optimization is on non-linear manifolds. These arise typically for Cosserat materials SO(3)1, Reissner-Mindlin shells S22 and micro-magnetics S2 or incompressible materials.

Interface

The general interface of the manifold elements is represented by the following concept.

namespace Ikarus::Concepts {
  template <typename ManifoldType>
  concept Manifold = requires(ManifoldType var, typename ManifoldType::CorrectionType correction, std::ostream& s,
                              typename ManifoldType::CoordinateType value) {
    typename ManifoldType::ctype; 
    ManifoldType::valueSize; 
    ManifoldType::correctionSize; 
    typename ManifoldType::CoordinateType; 
    typename ManifoldType::CorrectionType; 
    { var.getValue() } -> std::convertible_to<typename ManifoldType::CoordinateType>; 
    { var.setValue(value) } -> std::same_as<void>; 
    { var+=correction };  
    //...
  };
}  

Implementations

Name Formal definition Notes Header
n-th dimensional Euclidean space xRn realTuple.hh
Unit sphere xSn1,Sn1={xRn:xx=1} unitVector.hh

  1. Oliver Sander. Geodesic finite elements for cosserat rods. International Journal for Numerical Methods in Engineering, 82(13):1645–1670, 2010. doi:10.1002/nme.2814

  2. Alexander Müller and Manfred Bischoff. A consistent finite element formulation of the geometrically non-linear reissner-mindlin shell model. Archives of Computational Methods in Engineering, pages 1–47, 2022. doi:10.1007/s11831-021-09702-7