250 for(
int c=0; c<numCells; c++)
252 const int numCellNodes = cellNodes.
getCount(c);
253 const int numCellFaces = cellFaces.
getCount(c);
255 int edgeFaceCount =0;
256 int triFaceCount = 0;
257 int quadFaceCount = 0;
258 for(
int nf=0; nf<numCellFaces; nf++)
260 const int f = cellFaces(c,nf);
261 const int faceNodeCount = faceNodes.
getCount(f);
262 switch(faceNodeCount)
278 if (numCellNodes == 4 && edgeFaceCount == 4)
280 quad.orderCellFacesAndNodes(c,cellFaces,cellNodes,
281 faceNodes,faceCells,nodeCoordinates);
283 else if (numCellNodes == 3 && edgeFaceCount == 3)
285 tri.orderCellFacesAndNodes(c,cellFaces,cellNodes,
286 faceNodes,faceCells,nodeCoordinates);
288 else if (numCellNodes == edgeFaceCount)
290 vector<MyCoords> angles;
292 for(
int nn=0; nn<numCellNodes; nn++)
293 mean += nodeCoordinates[cellNodes(c,nn)];
294 mean /= numCellNodes;
295 for(
int nn=0; nn<numCellNodes; nn++)
297 const int nodeIndex = cellNodes(c,nn);
299 nodeCoordinates[nodeIndex] - mean;
300 const double angle = atan2(xm[1], xm[0]);
301 angles.push_back(
MyCoords(nodeIndex,angle));
306 for(
int nn=0; nn<numCellNodes; nn++)
308 cellNodes(c,nn) = angles[nn].i;
311 else if (numCellNodes == 8 && quadFaceCount == 6)
313 hexCell.orderCellFacesAndNodes(c,cellFaces,cellNodes,
314 faceNodes,faceCells,nodeCoordinates);
316 else if (numCellNodes == 4 && triFaceCount == 4)
318 tetCell.orderCellFacesAndNodes(c,cellFaces,cellNodes,
319 faceNodes,faceCells,nodeCoordinates);
321 else if (numCellNodes == 5 && triFaceCount == 4 &&
324 pyramidCell.orderCellFacesAndNodes(c,cellFaces,cellNodes,
328 else if (numCellNodes == 6 && triFaceCount == 2 &&
331 prismCell.orderCellFacesAndNodes(c,cellFaces,cellNodes,
338 cerr <<
"unimplemented cell type: numCellnodes = "
340 <<
" quadFaceCount = " << quadFaceCount
341 <<
" triFaceCount = " << triFaceCount
342 <<
" edgeFaceCount = " << edgeFaceCount
int getCount(const int i) const
static Cell< Pyramid > pyramidCell
static Cell< Tet > tetCell
static Cell< Prism > prismCell
bool myCoordComparison(const MyCoords &a, const MyCoords &b)
static Cell< Hex > hexCell
const StorageSite & getRowSite() const