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)