50 #ifndef INTREPID_PRODUCTTOPOLOGY_HPP
51 #define INTREPID_PRODUCTTOPOLOGY_HPP
53 #include "Shards_CellTopology.hpp"
54 #include "Teuchos_Assert.hpp"
83 if (dim0 == 0 && dim1 == 0)
86 if (entity0 == 0 && entity1 == 0)
90 else if (entity0 == 0 && entity1 == 1)
94 else if (entity0 == 1 && entity1 == 0)
98 else if (entity0 == 1 && entity1 == 1)
104 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
105 "Intrepid::ProductTopology::lineProduct2D: illegal inputs" );
108 else if (dim0 == 0 && dim1 == 1)
111 if (entity0 == 0 && entity1 == 0)
115 else if (entity0 == 1 && entity1 == 0)
121 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
122 "Intrepid::ProductTopology::lineProduct2D: illegal inputs" );
125 else if (dim0 == 1 && dim1 == 0)
128 if (entity0 == 0 && entity1 == 0)
132 else if (entity0 == 0 && entity1 == 1)
138 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
139 "Intrepid::ProductTopology::lineProduct2D: illegal inputs" );
142 else if (dim0 == 1 && dim1 == 1)
145 if (entity0 == 0 && entity1 == 0)
151 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
152 "Intrepid::ProductTopology::lineProduct2D: illegal inputs" );
157 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
158 "Intrepid::ProductTopology::lineProduct2D: illegal inputs" );
183 if (dim0 == 0 && dim1 == 0 && dim2 == 0)
186 if (entity0 == 0 && entity1 == 0 && entity2 == 0 )
190 else if (entity0 == 0 && entity1 == 0 && entity2 == 1 )
194 else if (entity0 == 0 && entity1 == 1 && entity2 == 0 )
198 else if (entity0 == 0 && entity1 == 1 && entity2 == 1 )
202 else if (entity0 == 1 && entity1 == 0 && entity2 == 0)
206 else if (entity0 == 1 && entity1 == 0 && entity2 == 1)
210 else if (entity0 == 1 && entity1 == 1 && entity2 == 0)
214 else if (entity0 == 1 && entity1 == 1 && entity2 == 1)
220 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
221 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
226 else if (dim0 == 0 && dim1 == 0 && dim2 == 1)
229 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
233 else if (entity0 == 0 && entity1 == 1 && entity2 == 0)
237 else if (entity0 == 1 && entity1 == 0 && entity2 == 0)
241 else if (entity0 == 1 && entity1 == 1 && entity2 == 0)
247 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
248 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
252 else if (dim0 == 0 && dim1 == 1 && dim2 == 0)
255 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
259 else if (entity0 == 0 && entity1 == 0 && entity2 == 1)
263 else if (entity0 == 1 && entity1 == 0 && entity2 == 0)
267 else if (entity0 == 1 && entity1 == 0 && entity2 == 1)
273 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
274 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
278 else if (dim0 == 1 && dim1 == 0 && dim2 == 0)
281 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
285 else if (entity0 == 0 && entity1 == 0 && entity2 == 1)
289 else if (entity0 == 0 && entity1 == 1 && entity2 == 0)
293 else if (entity0 == 0 && entity1 == 1 && entity2 == 1)
299 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
300 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
304 else if (dim0 == 0 && dim1 == 1 && dim2 == 1)
307 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
311 else if (entity0 == 1 && entity1 == 0 && entity2 == 0)
317 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
318 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
321 else if (dim0 == 1 && dim1 == 0 && dim2 == 1)
324 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
328 else if (entity0 == 0 && entity1 == 1 && entity2 == 0)
334 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
335 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
338 else if (dim0 == 1 && dim1 == 1 && dim2 == 0)
341 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
345 else if (entity0 == 0 && entity1 == 0 && entity2 == 1)
351 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
352 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
356 else if (dim0 == 1 && dim1 == 1 && dim2 == 1)
359 if (entity0 == 0 && entity1 == 0 && entity2 == 0)
365 TEUCHOS_TEST_FOR_EXCEPTION(
true , std::invalid_argument ,
366 "Intrepid::ProductTopology::lineProduct3D: illegal inputs" );
static void lineProduct2d(const int dim0, const int entity0, const int dim1, const int entity1, int &resultdim, int &resultentity)
Utility class that provides methods for calculating distributions of points on different cells...
static void lineProduct3d(const int dim0, const int entity0, const int dim1, const int entity1, const int dim2, const int entity2, int &resultdim, int &resultentity)