34 #ifndef NEKTAR_LIB_UTILITIES_BASIC_UTILS_SHAPE_TYPE_H 
   35 #define NEKTAR_LIB_UTILITIES_BASIC_UTILS_SHAPE_TYPE_H 
   48     namespace LibUtilities
 
  113                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  114                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  115                 ASSERTL1(Na <= Nb, 
"order in 'a' direction is higher " 
  116                          "than order in 'b' direction");
 
  117                 return Na*(Na+1)/2 + Na*(Nb-Na);
 
  122                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  123                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  124                 ASSERTL1(Na <= Nb, 
"order in 'a' direction is higher " 
  125                          "than order in 'b' direction");
 
  126                 return (Na-1) + 2*(Nb-1);
 
  130         namespace StdQuadData
 
  134                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  135                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  141                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  142                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  143                 return 2*(Na-1) + 2*(Nb-1);
 
  153                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  154                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  155                 ASSERTL2(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  161                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  162                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  163                 ASSERTL2(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  164                 return 2*Na*Nb + 2*Na*Nc + 2*Nb*Nc
 
  165                         - 4*(Na + Nb + Nc) + 8;
 
  188                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  189                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  190                 ASSERTL2(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  191                 ASSERTL1(Na <= Nc, 
"order in 'a' direction is higher " 
  192                          "than order in 'c' direction");
 
  193                 ASSERTL1(Nb <= Nc, 
"order in 'b' direction is higher " 
  194                          "than order in 'c' direction");
 
  196                 for (
int a = 0; a < Na; ++a)
 
  198                     for (
int b = 0; b < Nb - a; ++b)
 
  200                         for (
int c = 0; c < Nc - a - b; ++c)
 
  211                 ASSERTL2(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  212                 ASSERTL2(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  213                 ASSERTL2(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  214                 ASSERTL1(Na <= Nc, 
"order in 'a' direction is higher " 
  215                          "than order in 'c' direction");
 
  216                 ASSERTL1(Nb <= Nc, 
"order in 'b' direction is higher " 
  217                          "than order in 'c' direction");
 
  219                 int nCoef =    Na*(Na+1)/2 + (Nb-Na)*Na 
 
  220                           +    Na*(Na+1)/2 + (Nc-Na)*Na 
 
  221                           + 2*(Nb*(Nb+1)/2 + (Nc-Nb)*Nb)
 
  234                 ASSERTL1(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  235                 ASSERTL1(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  236                 ASSERTL1(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  237                 ASSERTL1(Na <= Nc, 
"Order in 'a' direction is higher " 
  238                         "than order in 'c' direction.");
 
  239                 ASSERTL1(Nb <= Nc, 
"Order in 'b' direction is higher " 
  240                         "than order in 'c' direction.");
 
  243                 const int Pi = Na - 2, Qi = Nb - 2, Ri = Nc - 2;
 
  246                     Pi * 2 + Qi * 2 + Ri * 4 + 
 
  248                     Pi * (2*Ri - Pi - 1) +     
 
  249                     Qi * (2*Ri - Qi - 1);      
 
  252                 for (
int a = 0; a < Pi - 1; ++a)
 
  254                     for (
int b = 0; b < Qi - a - 1; ++b)
 
  256                         for (
int c = 0; c < Ri - a - b -1; ++c)
 
  268                 ASSERTL1(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  269                 ASSERTL1(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  270                 ASSERTL1(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  271                 ASSERTL1(Na <= Nc, 
"Order in 'a' direction is higher " 
  272                         "than order in 'c' direction.");
 
  273                 ASSERTL1(Nb <= Nc, 
"Order in 'b' direction is higher " 
  274                         "than order in 'c' direction.");
 
  277                      + 2*(Na*(Na+1)/2 + (Nc-Na)*Na) 
 
  278                      + 2*(Nb*(Nb+1)/2 + (Nc-Nb)*Nb) 
 
  284         namespace StdPrismData
 
  288                 ASSERTL1(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  289                 ASSERTL1(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  290                 ASSERTL1(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  291                 ASSERTL1(Na <= Nc, 
"Order in 'a' direction is higher " 
  292                         "than order in 'c' direction.");
 
  299                 ASSERTL1(Na > 1, 
"Order in 'a' direction must be > 1.");
 
  300                 ASSERTL1(Nb > 1, 
"Order in 'b' direction must be > 1.");
 
  301                 ASSERTL1(Nc > 1, 
"Order in 'c' direction must be > 1.");
 
  302                 ASSERTL1(Na <= Nc, 
"Order in 'a' direction is higher " 
  303                         "than order in 'c' direction.");
 
  305                 return Na*Nb + 2*Nb*Nc              
 
  306                    + 2*( Na*(Na+1)/2 + (Nc-Na)*Na ) 
 
  318                 returnval = modes[offset];
 
  324                 returnval = modes[offset]*modes[offset+1];
 
  336                 returnval = modes[offset]*modes[offset+1]*modes[offset+2];
 
  339                 ASSERTL0(
false,
"Unknown Shape Type");
 
  371                 returnval = na*nb*nc;
 
  374                 ASSERTL0(
false,
"Unknown Shape Type");
 
#define ASSERTL0(condition, msg)
int getNumberOfBndCoefficients(int Na, int Nb)
int getNumberOfCoefficients(int Na, int Nb, int Nc)
int getNumberOfBndCoefficients(int Na, int Nb, int Nc)
int getNumberOfBndCoefficients(int Na, int Nb, int Nc)
int getNumberOfCoefficients(int Na, int Nb, int Nc)
const char *const ShapeTypeMap[]
int GetNumberOfCoefficients(ShapeType shape, std::vector< unsigned int > &modes, int offset)
int getNumberOfCoefficients(int Na)
int getNumberOfCoefficients(int Na, int Nb)
int getNumberOfBndCoefficients(int Na)
int getNumberOfBndCoefficients(int Na, int Nb)
int getNumberOfCoefficients(int Na, int Nb, int Nc)
int getNumberOfBndCoefficients(int Na, int Nb, int Nc)
int getNumberOfCoefficients(int Na, int Nb)
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
int getNumberOfCoefficients(int Na, int Nb, int Nc)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
int getNumberOfBndCoefficients(int Na, int Nb, int Nc)
const unsigned int ShapeTypeDimMap[SIZE_ShapeType]