34 void sammMesh::addRegularCell
37 const label nCreatedCells
50 labels[2] == labels[3]
51 && labels[4] == labels[5]
52 && labels[5] == labels[6]
53 && labels[6] == labels[7]
56 labelsTet[0] = labels[0];
57 labelsTet[1] = labels[1];
58 labelsTet[2] = labels[2];
59 labelsTet[3] = labels[4];
60 cellShapes_[nCreatedCells] =
cellShape(*tetPtr_, labelsTet);
65 labels[4] == labels[5]
66 && labels[5] == labels[6]
67 && labels[6] == labels[7]
70 labelsPyramid[0] = labels[0];
71 labelsPyramid[1] = labels[1];
72 labelsPyramid[2] = labels[2];
73 labelsPyramid[3] = labels[3];
74 labelsPyramid[4] = labels[4];
75 cellShapes_[nCreatedCells] =
cellShape(*pyrPtr_, labelsPyramid);
80 labels[2] == labels[3]
81 && labels[4] == labels[5]
82 && labels[6] == labels[7]
85 labelsTetWedge[0] = labels[0];
86 labelsTetWedge[1] = labels[1];
87 labelsTetWedge[2] = labels[2];
88 labelsTetWedge[3] = labels[4];
89 labelsTetWedge[4] = labels[6];
90 cellShapes_[nCreatedCells] =
cellShape(*tetWedgePtr_, labelsTetWedge);
95 labels[2] == labels[3]
96 && labels[6] == labels[7]
99 labelsPrism[0] = labels[0];
100 labelsPrism[1] = labels[1];
101 labelsPrism[2] = labels[2];
102 labelsPrism[3] = labels[4];
103 labelsPrism[4] = labels[5];
104 labelsPrism[5] = labels[6];
105 cellShapes_[nCreatedCells] =
cellShape(*prismPtr_, labelsPrism);
110 labels[4] == labels[7]
113 labelsWedge[0] = labels[7];
114 labelsWedge[1] = labels[6];
115 labelsWedge[2] = labels[5];
116 labelsWedge[3] = labels[3];
117 labelsWedge[4] = labels[2];
118 labelsWedge[5] = labels[1];
119 labelsWedge[6] = labels[0];
120 cellShapes_[nCreatedCells] =
cellShape(*wedgePtr_, labelsWedge);
125 labelsHex[0] = labels[0];
126 labelsHex[1] = labels[1];
127 labelsHex[2] = labels[2];
128 labelsHex[3] = labels[3];
129 labelsHex[4] = labels[4];
130 labelsHex[5] = labels[5];
131 labelsHex[6] = labels[6];
132 labelsHex[7] = labels[7];
133 cellShapes_[nCreatedCells] =
cellShape(*hexPtr_, labelsHex);
138 void sammMesh::addSAMMcell
140 const label typeFlag,
142 const label nCreatedCells
147 if (!sammShapeLookup[typeFlag] || !sammAddressingTable[typeFlag])
151 "sammMesh::addRegularCell(const labelList& labels, "
152 "const label nCreatedCells)"
153 ) <<
"SAMM type " << typeFlag <<
" has no registered label. BUG!"
157 const cellModel& curModel = *(sammShapeLookup[typeFlag]);
160 const label* addressing = sammAddressingTable[typeFlag];
167 sammCellLabels[
labelI] = globalLabels[addressing[
labelI]];
170 cellShapes_[nCreatedCells] =
cellShape(curModel, sammCellLabels);
174 void sammMesh::readCells()
179 fileName cellsFileName(casePrefix_ +
".cel");
184 if (cellsFile.good())
186 label lineLabel, cellLabel = -1, pointLabel, regionLabel, typeFlag;
189 while (!(cellsFile >> lineLabel).eof())
191 maxLabel =
max(maxLabel, lineLabel);
192 for (
int i=0; i<8; i++)
194 cellsFile >> pointLabel;
197 cellsFile >> regionLabel;
198 cellsFile >> typeFlag;
200 if (lineLabel != cellLabel)
202 cellLabel = lineLabel;
210 <<
"Cannot read file "
218 cellShapes_.setSize(nCells);
220 starCellLabelLookup_.setSize(maxLabel+1);
223 forAll (starCellLabelLookup_, i)
225 starCellLabelLookup_[i] = -1;
234 label lineLabel, sammLabel, regionLabel, typeFlag;
236 for (label cellI = 0; cellI < nCells; cellI++)
240 bool addOnToCell =
false;
247 <<
"Unknown SAMM cell. "
248 <<
"More than 24 vertices"
252 if ((cellsFile >> lineLabel).eof())
255 <<
"Reached end of cells file before "
256 <<
"all cells are read in."
263 for (
int i=nLabels-8; i<nLabels; i++)
265 cellsFile >> sammLabel;
270 labels[i] = starPointLabelLookup_[sammLabel];
274 Info<<
"Cell file not consistent with vertex file. "
275 <<
"Samm vertex number " << sammLabel
276 <<
" does not exist\n";
285 cellsFile >> regionLabel;
286 cellsFile >> typeFlag;
289 if (!addOnToCell && typeFlag == 255)
298 }
while (typeFlag == -1 || addOnToCell);
300 starCellLabelLookup_[lineLabel] = cellI;
304 addRegularCell(labels, cellI);
308 addSAMMcell(typeFlag, labels, cellI);
315 <<
"No cells in file "