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)