133 if (shapefunction_order < 1 || 2 < shapefunction_order)
134 OGS_FATAL(
"The given shape function order {:d} is not supported",
135 shapefunction_order);
137 if (shapefunction_order == 1)
141 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_LINE) != 0 && \
142 OGS_MAX_ELEMENT_DIM >= 1 && OGS_MAX_ELEMENT_ORDER >= 1
144 makeLocalAssemblerBuilder<NumLib::ShapeLine2>();
147 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_LINE) != 0 && \
148 OGS_MAX_ELEMENT_DIM >= 1 && OGS_MAX_ELEMENT_ORDER >= 2
150 makeLocalAssemblerBuilder<NumLib::ShapeLine2>();
155 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_QUAD) != 0 && \
156 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 1
158 makeLocalAssemblerBuilder<NumLib::ShapeQuad4>();
161 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_CUBOID) != 0 && \
162 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 1
164 makeLocalAssemblerBuilder<NumLib::ShapeHex8>();
167 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_QUAD) != 0 && \
168 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 2
170 makeLocalAssemblerBuilder<NumLib::ShapeQuad4>();
172 makeLocalAssemblerBuilder<NumLib::ShapeQuad4>();
175 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_CUBOID) != 0 && \
176 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
178 makeLocalAssemblerBuilder<NumLib::ShapeHex8>();
183 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_TRI) != 0 && \
184 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 1
186 makeLocalAssemblerBuilder<NumLib::ShapeTri3>();
189 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_SIMPLEX) != 0 && \
190 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 1
192 makeLocalAssemblerBuilder<NumLib::ShapeTet4>();
195 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_TRI) != 0 && \
196 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 2
198 makeLocalAssemblerBuilder<NumLib::ShapeTri3>();
201 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_SIMPLEX) != 0 && \
202 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
204 makeLocalAssemblerBuilder<NumLib::ShapeTet4>();
209 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PRISM) != 0 && \
210 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 1
212 makeLocalAssemblerBuilder<NumLib::ShapePrism6>();
215 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PRISM) != 0 && \
216 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
218 makeLocalAssemblerBuilder<NumLib::ShapePrism6>();
223 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PYRAMID) != 0 && \
224 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 1
226 makeLocalAssemblerBuilder<NumLib::ShapePyra5>();
229 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PYRAMID) != 0 && \
230 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
232 makeLocalAssemblerBuilder<NumLib::ShapePyra5>();
235 else if (shapefunction_order == 2)
237 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_LINE) != 0 && \
238 OGS_MAX_ELEMENT_DIM >= 1 && OGS_MAX_ELEMENT_ORDER >= 2
240 makeLocalAssemblerBuilder<NumLib::ShapeLine3>();
245 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_QUAD) != 0 && \
246 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 2
248 makeLocalAssemblerBuilder<NumLib::ShapeQuad8>();
250 makeLocalAssemblerBuilder<NumLib::ShapeQuad9>();
253 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_CUBOID) != 0 && \
254 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
256 makeLocalAssemblerBuilder<NumLib::ShapeHex20>();
261 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_TRI) != 0 && \
262 OGS_MAX_ELEMENT_DIM >= 2 && OGS_MAX_ELEMENT_ORDER >= 2
264 makeLocalAssemblerBuilder<NumLib::ShapeTri6>();
267 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_SIMPLEX) != 0 && \
268 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
270 makeLocalAssemblerBuilder<NumLib::ShapeTet10>();
275 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PRISM) != 0 && \
276 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
278 makeLocalAssemblerBuilder<NumLib::ShapePrism15>();
283 #if (OGS_ENABLED_ELEMENTS & ENABLED_ELEMENT_TYPE_PYRAMID) != 0 && \
284 OGS_MAX_ELEMENT_DIM >= 3 && OGS_MAX_ELEMENT_ORDER >= 2
286 makeLocalAssemblerBuilder<NumLib::ShapePyra13>();