144 bool const is_axially_symmetric,
145 IntegrationMethod
const& integration_method)
149 using VecOfNsAndWeight = std::vector<typename Traits::NsAndWeight>;
151 VecOfNsAndWeight nss_and_weights;
152 nss_and_weights.reserve(integration_method.getNumberOfPoints());
156 typename Traits::ShapeMatrixPolicy, GlobalDim,
158 element, is_axially_symmetric, integration_method);
160 if constexpr (std::is_same_v<ShapeFunction, LowerOrderShapeFunction>)
162 static_assert(ShapeFunction::ORDER < 2,
163 "We do not expect higher order shape functions here. "
164 "Something must have gone terribly wrong.");
166 for (
unsigned ip = 0; ip < sms.size(); ++ip)
170 sm.detJ * sm.integralMeasure *
171 integration_method.getWeightedPoint(ip).getWeight();
173 nss_and_weights.emplace_back(std::move(sm.N), w);
179 LowerOrderShapeFunction,
180 typename Traits::LowerOrderShapeMatrixPolicy, GlobalDim,
184 for (
unsigned ip = 0; ip < sms.size(); ++ip)
192 sm.detJ * sm.integralMeasure *
193 integration_method.getWeightedPoint(ip).getWeight();
195 nss_and_weights.emplace_back(std::move(sm.N),
196 std::move(sms_lower[ip].N), w);
200 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)