19 template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
21 typename PointContainer>
22 std::vector<
typename ShapeMatricesType::ShapeMatrices,
23 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
25 PointContainer
const& points)
28 typename ShapeMatricesType::ShapeMatrices,
29 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
33 createIsoparametricFiniteElement<ShapeFunction, ShapeMatricesType>(e);
35 shape_matrices.reserve(points.size());
36 for (
auto const& p : points)
38 shape_matrices.emplace_back(ShapeFunction::DIM, e.
getDimension(),
39 ShapeFunction::NPOINTS);
40 fe.template computeShapeFunctions<SelectedShapeMatrixType>(
41 p.getCoords(), shape_matrices.back(), GlobalDim,
42 is_axially_symmetric);
45 return shape_matrices;
48 template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
50 typename IntegrationMethod>
51 std::vector<
typename ShapeMatricesType::ShapeMatrices,
52 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
54 IntegrationMethod
const& integration_method)
56 int const n_integration_points = integration_method.getNumberOfPoints();
58 std::vector<typename IntegrationMethod::WeightedPoint> points;
59 points.reserve(n_integration_points);
60 for (
int ip = 0; ip < n_integration_points; ++ip)
62 points.push_back(integration_method.getWeightedPoint(ip));
66 SelectedShapeMatrixType>(
67 e, is_axially_symmetric, points);
70 template <
typename ShapeFunction,
typename ShapeMatricesType>
73 typename ShapeMatricesType::ShapeMatrices::ShapeType
const& N)
76 createIsoparametricFiniteElement<ShapeFunction, ShapeMatricesType>(e);
78 return fe.interpolateZerothCoordinate(
N);
81 template <
typename ShapeFunction,
typename ShapeMatricesType>
84 typename ShapeMatricesType::ShapeMatrices::ShapeType
const& N)
87 createIsoparametricFiniteElement<ShapeFunction, ShapeMatricesType>(e);
89 return fe.interpolateCoordinates(
N);
Definition of the Element class.
virtual constexpr unsigned getDimension() const =0
Get dimension of the mesh element.
double interpolateXCoordinate(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > computeShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, PointContainer const &points)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > initShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, IntegrationMethod const &integration_method)
ShapeMatrixType
Shape matrix type to be calculated.