15template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
17 typename PointContainer>
18std::vector<
typename ShapeMatricesType::ShapeMatrices,
19 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
21 PointContainer
const& points)
24 typename ShapeMatricesType::ShapeMatrices,
25 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
31 shape_matrices.reserve(points.size());
32 for (
auto const& p : points)
34 shape_matrices.emplace_back(ShapeFunction::DIM, GlobalDim,
35 ShapeFunction::NPOINTS);
36 fe.template computeShapeFunctions<SelectedShapeMatrixType>(
37 p.data(), shape_matrices.back(), GlobalDim, is_axially_symmetric);
40 return shape_matrices;
43template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
45 typename IntegrationMethod>
46std::vector<
typename ShapeMatricesType::ShapeMatrices,
47 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
49 IntegrationMethod
const& integration_method)
51 int const n_integration_points = integration_method.getNumberOfPoints();
53 std::vector<MathLib::WeightedPoint> points;
54 points.reserve(n_integration_points);
55 for (
int ip = 0; ip < n_integration_points; ++ip)
57 points.push_back(integration_method.getWeightedPoint(ip));
61 SelectedShapeMatrixType>(
62 e, is_axially_symmetric, points);
66template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
71 static constexpr std::array integration_points = {
74 auto const shape_matrices =
76 SelectedShapeMatrixType>(e, is_axially_symmetric,
78 return shape_matrices[0];
81template <
typename ShapeFunction,
typename ShapeMatricesType>
84 typename ShapeMatricesType::ShapeMatrices::ShapeType
const&
N)
89 return fe.interpolateZerothCoordinate(
N);
92template <
typename ShapeFunction,
typename ShapeMatricesType>
95 typename ShapeMatricesType::ShapeMatrices::ShapeType
const&
N)
100 return fe.interpolateCoordinates(
N);
double interpolateXCoordinate(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)
ShapeMatricesType::ShapeMatrices initShapeMatricesAtElementCenter(MeshLib::Element const &e, bool const is_axially_symmetric)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > computeShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, PointContainer const &points)
ShapeMatrixType
Shape matrix type to be calculated.
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
NumLib::TemplateIsoparametric< ShapeFunction, ShapeMatricesType > createIsoparametricFiniteElement(MeshLib::Element const &e)