143 bool const is_axially_symmetric,
144 IntegrationMethod
const& integration_method)
148 using VecOfNsAndWeight = std::vector<typename Traits::NsAndWeight>;
150 VecOfNsAndWeight nss_and_weights;
151 nss_and_weights.reserve(integration_method.getNumberOfPoints());
155 typename Traits::ShapeMatrixPolicy, GlobalDim,
157 element, is_axially_symmetric, integration_method);
159 if constexpr (std::is_same_v<ShapeFunction, LowerOrderShapeFunction>)
161 static_assert(ShapeFunction::ORDER < 2,
162 "We do not expect higher order shape functions here. "
163 "Something must have gone terribly wrong.");
165 for (
unsigned ip = 0; ip < sms.size(); ++ip)
169 sm.detJ * sm.integralMeasure *
170 integration_method.getWeightedPoint(ip).getWeight();
172 nss_and_weights.emplace_back(std::move(sm.N), w);
178 LowerOrderShapeFunction,
179 typename Traits::LowerOrderShapeMatrixPolicy, GlobalDim,
183 for (
unsigned ip = 0; ip < sms.size(); ++ip)
191 sm.detJ * sm.integralMeasure *
192 integration_method.getWeightedPoint(ip).getWeight();
194 nss_and_weights.emplace_back(std::move(sm.N),
195 std::move(sms_lower[ip].N), w);
199 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)