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)