51 std::unordered_map<std::type_index,
52 std::vector<NumLib::GenericIntegrationMethod>>&
53 integration_methods_by_mesh_element_type,
56 std::vector<NumLib::GenericIntegrationMethod> integration_methods;
57 integration_methods.reserve(max_order + 1);
61 integration_methods.push_back(std::move(invalidMethod));
63 for (
unsigned order = 1; order <= max_order; ++order)
65 integration_methods.push_back(
70 integration_methods_by_mesh_element_type.emplace(
71 std::type_index(
typeid(MeshElement)), std::move(integration_methods));
75 std::unordered_map<std::type_index,
76 std::vector<NumLib::GenericIntegrationMethod>>&
77 integration_methods_by_mesh_element_type)
79 putIntegrationMethodsFor<MeshLib::Point>(
80 integration_methods_by_mesh_element_type,
85 std::unordered_map<std::type_index,
86 std::vector<NumLib::GenericIntegrationMethod>>&
87 integration_methods_by_mesh_element_type)
89 putIntegrationMethodsFor<MeshLib::Line>(
92 putIntegrationMethodsFor<MeshLib::Line3>(
97 std::unordered_map<std::type_index,
98 std::vector<NumLib::GenericIntegrationMethod>>&
99 integration_methods_by_mesh_element_type)
101 putIntegrationMethodsFor<MeshLib::Quad>(
104 putIntegrationMethodsFor<MeshLib::Quad8>(
107 putIntegrationMethodsFor<MeshLib::Quad9>(
110 putIntegrationMethodsFor<MeshLib::Tri>(
111 integration_methods_by_mesh_element_type, 4);
113 putIntegrationMethodsFor<MeshLib::Tri6>(
114 integration_methods_by_mesh_element_type, 4);
118 std::unordered_map<std::type_index,
119 std::vector<NumLib::GenericIntegrationMethod>>&
120 integration_methods_by_mesh_element_type)
122 putIntegrationMethodsFor<MeshLib::Hex>(
125 putIntegrationMethodsFor<MeshLib::Hex20>(
128 putIntegrationMethodsFor<MeshLib::Tet>(
129 integration_methods_by_mesh_element_type, 4);
131 putIntegrationMethodsFor<MeshLib::Tet10>(
132 integration_methods_by_mesh_element_type, 4);
134 putIntegrationMethodsFor<MeshLib::Prism>(
135 integration_methods_by_mesh_element_type, 4);
137 putIntegrationMethodsFor<MeshLib::Prism15>(
138 integration_methods_by_mesh_element_type, 4);
150 putIntegrationMethodsFor<MeshLib::Pyramid>(
151 integration_methods_by_mesh_element_type, 4 );
153 putIntegrationMethodsFor<MeshLib::Pyramid13>(
154 integration_methods_by_mesh_element_type, 4 );
161 std::unordered_map<std::type_index,
162 std::vector<NumLib::GenericIntegrationMethod>>
163 integration_methods_by_mesh_element_type;
170 return integration_methods_by_mesh_element_type;