Manifold elements¶
Usually optimization problems are defined in terms of a cost function, such as:
Usually
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
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
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 |
---|---|---|---|
realTuple.hh |
|||
Unit sphere | unitVector.hh |
-
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. ↩
-
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. ↩