21template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
23 typename PointContainer>
24std::vector<
typename ShapeMatricesType::ShapeMatrices,
25 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
27 PointContainer
const& points)
30 typename ShapeMatricesType::ShapeMatrices,
31 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
37 shape_matrices.reserve(points.size());
38 for (
auto const& p : points)
40 shape_matrices.emplace_back(ShapeFunction::DIM, GlobalDim,
41 ShapeFunction::NPOINTS);
42 fe.template computeShapeFunctions<SelectedShapeMatrixType>(
43 p.data(), shape_matrices.back(), GlobalDim, is_axially_symmetric);
46 return shape_matrices;
49template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
51 typename IntegrationMethod>
52std::vector<
typename ShapeMatricesType::ShapeMatrices,
53 Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
55 IntegrationMethod
const& integration_method)
57 int const n_integration_points = integration_method.getNumberOfPoints();
59 std::vector<MathLib::WeightedPoint> points;
60 points.reserve(n_integration_points);
61 for (
int ip = 0; ip < n_integration_points; ++ip)
63 points.push_back(integration_method.getWeightedPoint(ip));
67 SelectedShapeMatrixType>(
68 e, is_axially_symmetric, points);
72template <
typename ShapeFunction,
typename ShapeMatricesType,
int GlobalDim,
77 static constexpr std::array<double, ShapeFunction::DIM> centre =
78 ShapeFunction::reference_element_centre;
80 static constexpr std::array integration_points = {
83 auto const shape_matrices =
85 SelectedShapeMatrixType>(e, is_axially_symmetric,
87 return shape_matrices[0];
90template <
typename ShapeFunction,
typename ShapeMatricesType>
93 typename ShapeMatricesType::ShapeMatrices::ShapeType
const&
N)
98 return fe.interpolateZerothCoordinate(
N);
101template <
typename ShapeFunction,
typename ShapeMatricesType>
104 typename ShapeMatricesType::ShapeMatrices::ShapeType
const&
N)
109 return fe.interpolateCoordinates(
N);
Definition of the Element class.
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)