15 #include <boost/math/constants/constants.hpp>
34 template <
class ShapeFunctionType_,
class ShapeMatrixTypes_>
80 const unsigned global_dim,
81 bool is_axially_symmetric)
const
98 template <ShapeMatrixType T_SHAPE_MATRIX_TYPE>
100 const unsigned global_dim,
101 bool is_axially_symmetric)
const
104 T_SHAPE_MATRIX_TYPE>(*
_ele, natural_pt, shape, global_dim);
113 auto* nodes =
_ele->getNodes();
115 for (
int i = 0; i < rs.size(); ++i)
117 rs[i] = (*nodes[i])[0];
119 auto const r =
N.dot(rs);
127 auto* nodes =
_ele->getNodes();
129 std::array<double, 3> interpolated_coords;
130 for (
int d = 0; d < 3; ++d)
132 for (
int i = 0; i < rs.size(); ++i)
134 rs[i] = (*nodes[i])[d];
136 interpolated_coords[d] =
N.dot(rs);
138 return interpolated_coords;
145 if (!is_axially_symmetric)
147 shape.integralMeasure = 1.0;
158 shape.integralMeasure = boost::math::constants::two_pi<double>() *
r;
166 template <
typename ShapeFunction,
typename ShapeMatricesType>
174 *
static_cast<const typename ShapeFunction::MeshElement*
>(&e)};
Template class for isoparametric elements.
void computeShapeFunctions(const double *natural_pt, ShapeMatrices &shape, const unsigned global_dim, bool is_axially_symmetric) const
ShapeFunctionType_ ShapeFunctionType
const MeshElementType * getMeshElement() const
return current mesh element
double interpolateZerothCoordinate(typename ShapeMatrices::ShapeType const &N) const
std::array< double, 3 > interpolateCoordinates(typename ShapeMatrices::ShapeType const &N) const
Interpolates the coordinates of the element with the given shape matrix.
void setMeshElement(const MeshElementType &e)
Sets the mesh element.
const MeshElementType * _ele
void computeIntegralMeasure(bool is_axially_symmetric, ShapeMatrices &shape) const
TemplateIsoparametric(const MeshElementType &e)
typename ShapeFunctionType_::MeshElement MeshElementType
Type of the underlying geometrical element.
void computeShapeFunctions(const double *natural_pt, ShapeMatrices &shape, const unsigned global_dim, bool is_axially_symmetric) const
typename ShapeMatrixTypes_::ShapeMatrices ShapeMatrices
Coordinate mapping matrices type.
NumLib::TemplateIsoparametric< ShapeFunction, ShapeMatricesType > createIsoparametricFiniteElement(MeshLib::Element const &e)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > computeShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, PointContainer const &points)
static void computeShapeMatrices(const T_MESH_ELEMENT &ele, const double *natural_pt, T_SHAPE_MATRICES &shapemat, const unsigned global_dim)