150                         bool const is_axially_symmetric,
 
  151                         IntegrationMethod 
const& integration_method)
 
  155    using VecOfNsAndWeight = std::vector<typename Traits::NsAndWeight>;
 
  157    VecOfNsAndWeight nss_and_weights;
 
  158    nss_and_weights.reserve(integration_method.getNumberOfPoints());
 
  162                                  typename Traits::ShapeMatrixPolicy, GlobalDim,
 
  164            element, is_axially_symmetric, integration_method);
 
  166    if constexpr (std::is_same_v<ShapeFunction, LowerOrderShapeFunction>)
 
  168        static_assert(ShapeFunction::ORDER < 2,
 
  169                      "We do not expect higher order shape functions here. " 
  170                      "Something must have gone terribly wrong.");
 
  172        for (
unsigned ip = 0; ip < sms.size(); ++ip)
 
  176                sm.detJ * sm.integralMeasure *
 
  177                integration_method.getWeightedPoint(ip).getWeight();
 
  179            nss_and_weights.emplace_back(std::move(sm.N), w);
 
  185            LowerOrderShapeFunction,
 
  186            typename Traits::LowerOrderShapeMatrixPolicy, GlobalDim,
 
  190        for (
unsigned ip = 0; ip < sms.size(); ++ip)
 
  198                sm.detJ * sm.integralMeasure *
 
  199                integration_method.getWeightedPoint(ip).getWeight();
 
  201            nss_and_weights.emplace_back(std::move(sm.N),
 
  202                                         std::move(sms_lower[ip].N), w);
 
  206    return nss_and_weights;
 
 
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)