|
64 | 64 | _ENUM_ID_INTERFACE_TAG) |
65 | 65 | /** @} */ |
66 | 66 |
|
| 67 | +/** |
| 68 | + * @defgroup flux_scheme_tag_macros Flux Scheme Tag Macros |
| 69 | + * @brief Macros for flux schemes. |
| 70 | + * @{ |
| 71 | + */ |
| 72 | +/** |
| 73 | + * @brief Natural flux scheme tag |
| 74 | + */ |
| 75 | +#define FLUX_SCHEME_TAG_NATURAL \ |
| 76 | + (0, specfem::interface::flux_scheme_tag::natural, natural, \ |
| 77 | + _ENUM_ID_FLUX_SCHEME_TAG) |
| 78 | + |
| 79 | +/** |
| 80 | + * @brief Symmetric interior penalty flux scheme tag |
| 81 | + */ |
| 82 | +#define FLUX_SCHEME_TAG_SYMMETRIC_INTERIOR_PENALTY \ |
| 83 | + (1, specfem::interface::flux_scheme_tag::symmetric_interior_penalty, \ |
| 84 | + symmetric_interior_penalty, _ENUM_ID_FLUX_SCHEME_TAG) |
| 85 | +/** @} */ |
| 86 | + |
67 | 87 | /// \cond |
68 | 88 | #define _MAKE_INTERFACE_TUPLE(r, product) BOOST_PP_SEQ_TO_TUPLE(product) |
69 | 89 |
|
|
84 | 104 | BOOST_PP_SEQ_TRANSFORM(_TRANSFORM_TAGS, CONNECTION_TAG_, \ |
85 | 105 | BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) |
86 | 106 |
|
| 107 | +/** |
| 108 | + * @brief Converts flux scheme tag arguments to a sequence of tag tuples |
| 109 | + */ |
| 110 | +#define FLUX_SCHEME_TAG(...) \ |
| 111 | + BOOST_PP_SEQ_TRANSFORM(_TRANSFORM_TAGS, FLUX_SCHEME_TAG_, \ |
| 112 | + BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) |
| 113 | + |
87 | 114 | /** |
88 | 115 | * @brief Tag getters. The macros are intended to be used only in @ref DECLARE |
89 | 116 | * and @ref INSTANTIATE. |
90 | 117 | */ |
91 | 118 | #define _CONNECTION_TAG_ BOOST_PP_SEQ_TO_LIST((1)) |
92 | 119 | #define _INTERFACE_TAG_ BOOST_PP_SEQ_TO_LIST((2)) |
| 120 | +#define _FLUX_SCHEME_TAG_ BOOST_PP_SEQ_TO_LIST((4)) |
93 | 121 |
|
94 | 122 | /** |
95 | 123 | * @brief List of interface systems |
|
131 | 159 | INTERFACE_TAG_ACOUSTIC_ELASTIC, \ |
132 | 160 | BOUNDARY_TAG_COMPOSITE_STACEY_DIRICHLET)) |
133 | 161 |
|
| 162 | +/** |
| 163 | + * @brief List of edges with interfaces and flux scheme tag |
| 164 | + */ |
| 165 | +#define EDGES_AND_FLUX_SCHEME \ |
| 166 | + ((DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 167 | + INTERFACE_TAG_ELASTIC_ACOUSTIC, BOUNDARY_TAG_NONE, \ |
| 168 | + FLUX_SCHEME_TAG_NATURAL))((DIMENSION_TAG_DIM2, \ |
| 169 | + CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 170 | + INTERFACE_TAG_ELASTIC_ACOUSTIC, \ |
| 171 | + BOUNDARY_TAG_STACEY, FLUX_SCHEME_TAG_NATURAL))( \ |
| 172 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 173 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_NONE, \ |
| 174 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 175 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 176 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_STACEY, \ |
| 177 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 178 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 179 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_ACOUSTIC_FREE_SURFACE, \ |
| 180 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 181 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ |
| 182 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, \ |
| 183 | + BOUNDARY_TAG_COMPOSITE_STACEY_DIRICHLET, FLUX_SCHEME_TAG_NATURAL))( \ |
| 184 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 185 | + INTERFACE_TAG_ELASTIC_ACOUSTIC, BOUNDARY_TAG_NONE, \ |
| 186 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 187 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 188 | + INTERFACE_TAG_ELASTIC_ACOUSTIC, BOUNDARY_TAG_STACEY, \ |
| 189 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 190 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 191 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_NONE, \ |
| 192 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 193 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 194 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_STACEY, \ |
| 195 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 196 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 197 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_ACOUSTIC_FREE_SURFACE, \ |
| 198 | + FLUX_SCHEME_TAG_NATURAL))( \ |
| 199 | + (DIMENSION_TAG_DIM2, CONNECTION_TAG_NONCONFORMING, \ |
| 200 | + INTERFACE_TAG_ACOUSTIC_ELASTIC, \ |
| 201 | + BOUNDARY_TAG_COMPOSITE_STACEY_DIRICHLET, FLUX_SCHEME_TAG_NATURAL)) |
| 202 | + |
134 | 203 | /// \endcond |
135 | 204 | /** @} */ |
0 commit comments