|
constexpr bool | IsSimplex (const unsigned int dimensions, const unsigned int nnodes) |
|
template<unsigned int TDim, unsigned int TNumNodes> |
static std::enable_if< IsSimplex(TDim, TNumNodes), void >::type | ComputeGeometryData (const Geometry< Node > &rGeometry, ElementDataStruct< TDim, TNumNodes > &rData) |
|
template<unsigned int TDim, unsigned int TNumNodes> |
static std::enable_if<!IsSimplex(TDim, TNumNodes), void >::type | ComputeGeometryData (const Geometry< Node > &rGeometry, ElementDataStruct< TDim, TNumNodes > &rData) |
|
This namespace is used to implement the compile-time choice of:
- Shape function calculator
- Element size calculator
[1] This is necessary because simplex geometries' shape functions are known at compile-time whereas non-simplex's ones are not (because they depend on the actual shape of the element).
[2] This is useful because GradientsElementSize is only implemented for simplex types.
This problem is solved using SFINAE