34 void starMesh::addRegularCell
37 const label nCreatedCells
47 label regularTypeFlag = -1;
54 labels[2] == labels[3]
55 && labels[4] == labels[5]
56 && labels[5] == labels[6]
57 && labels[6] == labels[7]
61 curModelPtr = tetPtr_;
65 labels[4] == labels[5]
66 && labels[5] == labels[6]
67 && labels[6] == labels[7]
71 curModelPtr = pyrPtr_;
75 labels[2] == labels[3]
76 && labels[4] == labels[5]
77 && labels[6] == labels[7]
81 curModelPtr = tetWedgePtr_;
85 labels[2] == labels[3]
86 && labels[6] == labels[7]
90 curModelPtr = prismPtr_;
94 labels[4] == labels[7]
98 curModelPtr = wedgePtr_;
103 curModelPtr = hexPtr_;
108 const label* addressing = regularAddressingTable[regularTypeFlag];
115 cellShapes_[nCreatedCells] =
cellShape(*curModelPtr, regularCellLabels);
119 void starMesh::addSAMMcell
122 const label nCreatedCells
126 label typeFlag = labels[21];
128 label permutationFlag = labels[23];
131 label sammTypeFlag = -1;
139 curModelPtr = sammTrim1Ptr_;
146 curModelPtr = sammTrim2Ptr_;
155 curModelPtr = sammTrim3Ptr_;
160 curModelPtr = sammTrim5Ptr_;
169 curModelPtr = sammTrim4Ptr_;
176 curModelPtr = sammTrim8Ptr_;
184 "starMesh::addSAMMcell"
185 "(const labelList& labels, const label nCreatedCells)"
186 ) <<
"SAMM type " << sammTypeFlag <<
" is invalid"
194 const label* addressing = sammAddressingTable[sammTypeFlag];
201 cellShapes_[nCreatedCells] =
cellShape(*curModelPtr, sammCellLabels);
204 starCellPermutation_[nCreatedCells] = permutationFlag;
208 void starMesh::readCells()
213 fileName cellsFileName(casePrefix_ +
".cel");
218 if (cellsFile.good())
220 label lineLabel, pointLabel, regionLabel, typeFlag;
223 while (!(cellsFile >> lineLabel).eof())
225 maxLabel =
max(maxLabel, lineLabel);
226 for (
int i=0; i<8; i++)
228 cellsFile >> pointLabel;
231 cellsFile >> regionLabel;
232 cellsFile >> typeFlag;
249 <<
"Cannot read file " << cellsFileName
256 cellShapes_.setSize(nCells);
257 starCellID_.setSize(nCells);
258 starCellPermutation_.setSize(nCells);
261 forAll (starCellPermutation_, i)
263 starCellPermutation_[i] = -1;
266 starCellLabelLookup_.setSize(maxLabel+1);
269 forAll (starCellLabelLookup_, i)
271 starCellLabelLookup_[i] = -1;
279 label lineLabel, starLabel, regionLabel, typeFlag;
281 for (label cellI = 0; cellI < nCells; cellI++)
285 label addOnToCell = 0;
295 if ((cellsFile >> lineLabel).eof())
298 <<
"Reached end of cells file before "
299 <<
"all cells are read in."
305 for (
int i=nLabels-8; i<nLabels; i++)
307 cellsFile >> starLabel;
314 labels[i] = starPointLabelLookup_[starLabel];
318 Info<<
"Cells not consistent with vertex file. "
319 <<
"Star vertex number " << starLabel
320 <<
" does not exist\n";
330 labels[i] = starLabel;
334 cellsFile >> regionLabel;
335 cellsFile >> typeFlag;
349 }
while (addOnToCell >= 0);
352 starCellID_[cellI] = lineLabel;
355 starCellLabelLookup_[lineLabel] = cellI;
359 addRegularCell(labels, cellI);
363 addSAMMcell(labels, cellI);
367 const labelList& curShapeLabels = cellShapes_[cellI];
369 forAll (curShapeLabels, i)
371 if (curShapeLabels[i] < 0)
374 <<
"Invalid vertex found in cell " << cellI
375 <<
". STAR cell no: " << lineLabel
376 <<
" labels: " << curShapeLabels
385 <<
"No cells in file " << cellsFileName