Go to the documentation of this file.
5 #include <boost/preprocessor/seq/for_each_product.hpp>
8 #define ADAMANTINE_DIM (2)(3)
9 #define ADAMANTINE_USE_TABLE (true)(false)
10 #define ADAMANTINE_N_MATERIALS (-1)(1)
11 #define ADAMANTINE_P_ORDER (0)(1)(2)(3)(4)
12 #define ADAMANTINE_FE_DEGREE (1)(2)(3)(4)(5)
13 #define ADAMANTINE_MATERIAL_STATE (adamantine::Solid)(adamantine::SolidLiquid)(adamantine::SolidLiquidPowder)
14 #define ADAMANTINE_QUADRATURE_TYPE (dealii::QGauss<1>)(dealii::QGaussLobatto<1>)
19 #define ADAMANTINE_D(z, SEQ) \
20 template class adamantine::BOOST_PP_SEQ_ELEM( \
21 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ)>;
22 #define INSTANTIATE_DIM(NAME) \
23 BOOST_PP_SEQ_FOR_EACH_PRODUCT(ADAMANTINE_D, ((NAME))(ADAMANTINE_DIM))
31 #define ADAMANTINE_D_N_P_M_HOST(z, SEQ) \
32 template class adamantine::BOOST_PP_SEQ_ELEM( \
33 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
34 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
35 dealii::MemorySpace::Host>;
36 #define INSTANTIATE_DIM_NMAT_PORDER_MATERIALSTATES_HOST(NAME) \
37 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
38 ADAMANTINE_D_N_P_M_HOST, \
40 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_MATERIAL_STATE))
48 #define ADAMANTINE_D_N_P_M_DEV(z, SEQ) \
49 template class adamantine::BOOST_PP_SEQ_ELEM( \
50 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
51 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
52 dealii::MemorySpace::Default>;
53 #define INSTANTIATE_DIM_NMAT_PORDER_MATERIALSTATES_DEVICE(NAME) \
54 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
55 ADAMANTINE_D_N_P_M_DEV, \
57 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_MATERIAL_STATE))
67 #define ADAMANTINE_D_N_U_P_F_S_HOST(z, SEQ) \
68 template class adamantine::BOOST_PP_SEQ_ELEM( \
69 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
70 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
71 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::Solid, \
72 dealii::MemorySpace::Host>;
73 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_S_HOST(NAME) \
74 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
75 ADAMANTINE_D_N_U_P_F_S_HOST, \
77 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
87 #define ADAMANTINE_D_N_U_P_F_SL_HOST(z, SEQ) \
88 template class adamantine::BOOST_PP_SEQ_ELEM( \
89 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
90 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
91 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::SolidLiquid, \
92 dealii::MemorySpace::Host>;
93 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_SL_HOST(NAME) \
94 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
95 ADAMANTINE_D_N_U_P_F_SL_HOST, \
97 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
107 #define ADAMANTINE_D_N_U_P_F_SLP_HOST(z, SEQ) \
108 template class adamantine::BOOST_PP_SEQ_ELEM( \
109 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
110 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
111 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::SolidLiquidPowder, \
112 dealii::MemorySpace::Host>;
113 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_SLP_HOST(NAME) \
114 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
115 ADAMANTINE_D_N_U_P_F_SLP_HOST, \
117 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
127 #define ADAMANTINE_D_N_U_P_F_S_DEV(z, SEQ) \
128 template class adamantine::BOOST_PP_SEQ_ELEM( \
129 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
130 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
131 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::Solid, \
132 dealii::MemorySpace::Default>;
133 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_S_DEVICE(NAME) \
134 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
135 ADAMANTINE_D_N_U_P_F_S_DEV, \
137 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
147 #define ADAMANTINE_D_N_U_P_F_SL_DEV(z, SEQ) \
148 template class adamantine::BOOST_PP_SEQ_ELEM( \
149 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
150 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
151 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::SolidLiquid, \
152 dealii::MemorySpace::Default>;
153 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_SL_DEVICE(NAME) \
154 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
155 ADAMANTINE_D_N_U_P_F_SL_DEV, \
157 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
167 #define ADAMANTINE_D_N_U_P_F_SLP_DEV(z, SEQ) \
168 template class adamantine::BOOST_PP_SEQ_ELEM( \
169 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
170 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
171 BOOST_PP_SEQ_ELEM(5, SEQ), adamantine::SolidLiquidPowder, \
172 dealii::MemorySpace::Default>;
173 #define INSTANTIATE_DIM_NMAT_USETABLE_PORDER_FEDEGREE_SLP_DEVICE(NAME) \
174 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
175 ADAMANTINE_D_N_U_P_F_SLP_DEV, \
177 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_USE_TABLE)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE))
187 #define ADAMANTINE_D_N_P_F_S_Q_HOST(z, SEQ) \
188 template class adamantine::BOOST_PP_SEQ_ELEM( \
189 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
190 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
191 adamantine::Solid, dealii::MemorySpace::Host, \
192 BOOST_PP_SEQ_ELEM(5, SEQ)>;
193 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_S_QUAD_HOST(NAME) \
194 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
195 ADAMANTINE_D_N_P_F_S_Q_HOST, \
197 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))
207 #define ADAMANTINE_D_N_P_F_SL_Q_HOST(z, SEQ) \
208 template class adamantine::BOOST_PP_SEQ_ELEM( \
209 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
210 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
211 adamantine::SolidLiquid, dealii::MemorySpace::Host, \
212 BOOST_PP_SEQ_ELEM(5, SEQ)>;
213 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_SL_QUAD_HOST(NAME) \
214 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
215 ADAMANTINE_D_N_P_F_SL_Q_HOST, \
217 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))
227 #define ADAMANTINE_D_N_P_F_SLP_Q_HOST(z, SEQ) \
228 template class adamantine::BOOST_PP_SEQ_ELEM( \
229 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
230 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
231 adamantine::SolidLiquidPowder, dealii::MemorySpace::Host, \
232 BOOST_PP_SEQ_ELEM(5, SEQ)>;
233 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_SLP_QUAD_HOST(NAME) \
234 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
235 ADAMANTINE_D_N_P_F_SLP_Q_HOST, \
237 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))
247 #define ADAMANTINE_D_N_P_F_S_Q_DEV(z, SEQ) \
248 template class adamantine::BOOST_PP_SEQ_ELEM( \
249 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
250 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
251 adamantine::Solid, dealii::MemorySpace::Default, \
252 BOOST_PP_SEQ_ELEM(5, SEQ)>;
253 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_S_QUAD_DEVICE(NAME) \
254 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
255 ADAMANTINE_D_N_P_F_S_Q_DEV, \
257 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))
267 #define ADAMANTINE_D_N_P_F_SL_Q_DEV(z, SEQ) \
268 template class adamantine::BOOST_PP_SEQ_ELEM( \
269 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
270 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
271 adamantine::SolidLiquid, dealii::MemorySpace::Default, \
272 BOOST_PP_SEQ_ELEM(5, SEQ)>;
273 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_SL_QUAD_DEVICE(NAME) \
274 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
275 ADAMANTINE_D_N_P_F_SL_Q_DEV, \
277 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))
287 #define ADAMANTINE_D_N_P_F_SLP_Q_DEV(z, SEQ) \
288 template class adamantine::BOOST_PP_SEQ_ELEM( \
289 0, SEQ)<BOOST_PP_SEQ_ELEM(1, SEQ), BOOST_PP_SEQ_ELEM(2, SEQ), \
290 BOOST_PP_SEQ_ELEM(3, SEQ), BOOST_PP_SEQ_ELEM(4, SEQ), \
291 adamantine::SolidLiquidPowder, dealii::MemorySpace::Default, \
292 BOOST_PP_SEQ_ELEM(5, SEQ)>;
293 #define INSTANTIATE_DIM_NMAT_PORDER_FEDEGREE_SLP_QUAD_DEVICE(NAME) \
294 BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
295 ADAMANTINE_D_N_P_F_SLP_Q_DEV, \
297 ADAMANTINE_DIM)(ADAMANTINE_N_MATERIALS)(ADAMANTINE_P_ORDER)(ADAMANTINE_FE_DEGREE)(ADAMANTINE_QUADRATURE_TYPE))