160 {
161 return [integration_order](
163 std::unordered_map<std::size_t, BHE::BHETypes*> const&
164 element_to_bhe_map,
166 {
167 auto const& integration_method = NumLib::IntegrationMethodRegistry::
169 typename ShapeFunction::MeshElement>(integration_order);
170
171 auto& bhe = *element_to_bhe_map.at(e.
getID());
172
173 if (std::holds_alternative<BHE::BHE_1U>(bhe))
174 {
176 new LocalAssemblerDataBHE<ShapeFunction, BHE::BHE_1U>{
177 e, integration_method, std::get<BHE::BHE_1U>(bhe),
178 std::forward<ConstructorArgs>(args)...}};
179 }
180
181 if (std::holds_alternative<BHE::BHE_CXA>(bhe))
182 {
184 new LocalAssemblerDataBHE<ShapeFunction, BHE::BHE_CXA>{
185 e, integration_method, std::get<BHE::BHE_CXA>(bhe),
186 std::forward<ConstructorArgs>(args)...}};
187 }
188
189 if (std::holds_alternative<BHE::BHE_CXC>(bhe))
190 {
192 new LocalAssemblerDataBHE<ShapeFunction, BHE::BHE_CXC>{
193 e, integration_method, std::get<BHE::BHE_CXC>(bhe),
194 std::forward<ConstructorArgs>(args)...}};
195 }
196
197 if (std::holds_alternative<BHE::BHE_2U>(bhe))
198 {
200 new LocalAssemblerDataBHE<ShapeFunction, BHE::BHE_2U>{
201 e, integration_method, std::get<BHE::BHE_2U>(bhe),
202 std::forward<ConstructorArgs>(args)...}};
203 }
204
205 if (std::holds_alternative<BHE::BHE_1P>(bhe))
206 {
208 new LocalAssemblerDataBHE<ShapeFunction, BHE::BHE_1P>{
209 e, integration_method, std::get<BHE::BHE_1P>(bhe),
210 std::forward<ConstructorArgs>(args)...}};
211 }
213 "Trying to create local assembler for an unknown BHE type.");
214 };
215 }
std::size_t getID() const
Returns the ID of the element.