45     namespace LibUtilities
 
   49             bool isVertex(
int x, 
int y, 
int z, 
int npts)
 
   51                 return (x == 0        && y == 0        && z == 0       ) || 
 
   52                        (x == (npts-1) && y == 0        && z == 0       ) || 
 
   53                        (x == (npts-1) && y == (npts-1) && z == 0       ) || 
 
   54                        (x == 0        && y == (npts-1) && z == 0       ) || 
 
   55                        (x == 0        && y == 0        && z == (npts-1)) || 
 
   56                        (x == 0        && y == (npts-1) && z == (npts-1));
 
   59             bool isEdge_01(
int x, 
int y, 
int z, 
int npts)
 
   61                 return y == 0 && z == 0;
 
   64             bool isEdge_12(
int x, 
int y, 
int z, 
int npts)
 
   66                 return x == (npts-1) && z == 0;
 
   69             bool isEdge_23(
int x, 
int y, 
int z, 
int npts)
 
   71                 return y == (npts-1) && z == 0;
 
   74             bool isEdge_30(
int x, 
int y, 
int z, 
int npts)
 
   76                 return x == 0 && z == 0;
 
   79             bool isEdge_04(
int x, 
int y, 
int z, 
int npts)
 
   81                 return x == 0 && y == 0;
 
   84             bool isEdge_14(
int x, 
int y, 
int z, 
int npts)
 
   86                 return x + z == (npts-1) && y == 0;
 
   89             bool isEdge_25(
int x, 
int y, 
int z, 
int npts)
 
   91                 return x + z == (npts-1) && y == (npts-1);
 
   94             bool isEdge_35(
int x, 
int y, 
int z, 
int npts)
 
   96                 return x == 0 && y == (npts-1);
 
   99             bool isEdge_45(
int x, 
int y, 
int z, 
int npts)
 
  101                 return x == 0 && z == (npts-1);
 
  104             bool isEdge(
int x, 
int y, 
int z, 
int npts){
 
  105                 return isEdge_01(x,y,z,npts) || isEdge_12(x,y,z,npts) || 
 
  106                        isEdge_23(x,y,z,npts) || isEdge_30(x,y,z,npts) ||
 
  107                        isEdge_04(x,y,z,npts) || isEdge_14(x,y,z,npts) ||
 
  108                        isEdge_25(x,y,z,npts) || isEdge_35(x,y,z,npts) ||
 
  109                        isEdge_45(x,y,z,npts);
 
  112             bool isFace_0123(
int x, 
int y, 
int z, 
int npts)
 
  117             bool isFace_014(
int x, 
int y, 
int z, 
int npts)
 
  122             bool isFace_1254(
int x, 
int y, 
int z, 
int npts)
 
  124                 return x + z == npts-1;
 
  127             bool isFace_325(
int x, 
int y, 
int z, 
int npts)
 
  129                 return y == (npts-1);
 
  132             bool isFace_0354(
int x, 
int y, 
int z, 
int npts)
 
  137             bool isFace(
int x, 
int y, 
int z, 
int npts){
 
  138                 return isFace_0123(x,y,z,npts) || isFace_014(x,y,z,npts) ||
 
  139                        isFace_1254(x,y,z,npts) || isFace_325(x,y,z,npts) ||
 
  140                        isFace_0354(x,y,z,npts);
 
  153             for(
unsigned int z=0, index=0; z<
npts; ++z){
 
  154                 for(
int y=0; y<
npts; ++y){
 
  155                     for(
int x=0; x<npts-z; ++x, ++index){
 
  175             vector<int> iEdge_01;   
 
  176             vector<int> iEdge_12;   
 
  177             vector<int> iEdge_23;   
 
  178             vector<int> iEdge_30;   
 
  179             vector<int> iEdge_04;   
 
  180             vector<int> iEdge_14;   
 
  181             vector<int> iEdge_25;   
 
  182             vector<int> iEdge_35;   
 
  183             vector<int> iEdge_45;   
 
  184             vector<int> iFace_0123; 
 
  185             vector<int> iFace_014;  
 
  186             vector<int> iFace_1254; 
 
  187             vector<int> iFace_325;  
 
  188             vector<int> iFace_0354; 
 
  189             vector<int> interiorVolumePoints; 
 
  193             for(
int z=0, index=0; z<
npts; ++z){
 
  194                 for(
int y=0; y<
npts; ++y){
 
  195                     for(
int x=0; x<npts-z; ++x, ++index){
 
  196                         if (isVertex(x,y,z,npts))
 
  198                             vertex.push_back(index);
 
  200                         else if (isEdge(x,y,z,npts))
 
  202                             if (isEdge_01(x,y,z,npts))
 
  204                                 iEdge_01.push_back(index);
 
  206                             else if (isEdge_12(x,y,z,npts))
 
  208                                 iEdge_12.push_back(index);
 
  210                             else if (isEdge_23(x,y,z,npts))
 
  212                                 iEdge_23.push_back(index);
 
  214                             else if (isEdge_30(x,y,z,npts))
 
  216                                 iEdge_30.push_back(index);
 
  218                             else if (isEdge_04(x,y,z,npts))
 
  220                                 iEdge_04.push_back(index);
 
  222                             else if (isEdge_14(x,y,z,npts))
 
  224                                 iEdge_14.push_back(index);
 
  226                             else if (isEdge_25(x,y,z,npts))
 
  228                                 iEdge_25.push_back(index);
 
  230                             else if (isEdge_35(x,y,z,npts))
 
  232                                 iEdge_35.push_back(index);
 
  234                             else if (isEdge_45(x,y,z,npts))
 
  236                                 iEdge_45.push_back(index);
 
  239                         else if (isFace(x,y,z,npts)) 
 
  241                             if (isFace_0123(x,y,z,npts))
 
  243                                 iFace_0123.push_back(index);
 
  245                             else if (isFace_014(x,y,z,npts))
 
  247                                 iFace_014.push_back(index);
 
  249                             else if (isFace_1254(x,y,z,npts))
 
  251                                 iFace_1254.push_back(index);
 
  253                             else if (isFace_325(x,y,z,npts))
 
  255                                 iFace_325.push_back(index);
 
  257                             else if (isFace_0354(x,y,z,npts))
 
  259                                 iFace_0354.push_back(index);
 
  264                             interiorVolumePoints.push_back(index);
 
  270             for (
unsigned int n=0; n<vertex.size(); ++n)
 
  272                 map.push_back(vertex[n]);
 
  275             for (
unsigned int n=0; n<iEdge_01.size(); ++n)
 
  277                 map.push_back(iEdge_01[n]);
 
  280             for (
unsigned int n=0; n<iEdge_12.size(); ++n)
 
  282                 map.push_back(iEdge_12[n]);
 
  285             for (
unsigned int n=0; n<iEdge_23.size(); ++n)
 
  287                 map.push_back(iEdge_23[n]);
 
  290             for (
unsigned int n=0; n<iEdge_30.size(); ++n)
 
  292                 map.push_back(iEdge_30[n]);
 
  295             for (
unsigned int n=0; n<iEdge_04.size(); ++n)
 
  297                 map.push_back(iEdge_04[n]);
 
  300             for (
unsigned int n=0; n<iEdge_14.size(); ++n)
 
  302                 map.push_back(iEdge_14[n]);
 
  305             for (
unsigned int n=0; n<iEdge_25.size(); ++n)
 
  307                 map.push_back(iEdge_25[n]);
 
  310             for (
unsigned int n=0; n<iEdge_35.size(); ++n)
 
  312                 map.push_back(iEdge_35[n]);
 
  315             for (
unsigned int n=0; n<iEdge_45.size(); ++n)
 
  317                 map.push_back(iEdge_45[n]);
 
  320             for (
unsigned int n=0; n<iFace_0123.size(); ++n)
 
  322                 map.push_back(iFace_0123[n]);
 
  325             for (
unsigned int n=0; n<iFace_014.size(); ++n)
 
  327                 map.push_back(iFace_014[n]);
 
  330             for(
unsigned int n=0; n<iFace_1254.size(); ++n)
 
  332                 map.push_back(iFace_1254[n]);
 
  335             for(
unsigned int n=0; n<iFace_325.size(); ++n)
 
  337                 map.push_back(iFace_325[n]);
 
  340             for(
unsigned int n=0; n<iFace_0354.size(); ++n)
 
  342                 map.push_back(iFace_0354[n]);
 
  345             for(
unsigned int n=0; n<interiorVolumePoints.size(); ++n)
 
  347                 map.push_back(interiorVolumePoints[n]);
 
  355             for(
unsigned int index=0; index<map.size(); ++index)
 
  357                 points[0][index] = 
m_points[0][index];
 
  358                 points[1][index] = 
m_points[1][index];
 
  359                 points[2][index] = 
m_points[2][index];
 
  362             for(
unsigned int index=0; index<map.size(); ++index)
 
  364                 m_points[0][index] = points[0][map[index]];
 
  365                 m_points[1][index] = points[1][map[index]];
 
  366                 m_points[2][index] = points[2][map[index]];
 
  383             ASSERTL0(
false, 
"Not yet implemented");
 
  397             returnval->Initialize();
 
void CalculateInterpMatrix(const Array< OneD, const NekDouble > &xi, const Array< OneD, const NekDouble > &yi, const Array< OneD, const NekDouble > &zi, Array< OneD, NekDouble > &interp)
 
#define ASSERTL0(condition, msg)
 
virtual void CalculatePoints()
 
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
 
Array< OneD, DataType > m_points[3]
 
unsigned int GetNumPoints() const
 
Defines a specification for a set of points. 
 
void CalculateDerivMatrix()
 
static boost::shared_ptr< PointsBaseType > Create(const PointsKey &key)
 
unsigned int GetTotNumPoints() const
 
void NodalPointReorder3d()