34 void Foam::starMesh::addRegularCell
37 const label nCreatedCells
47 label regularTypeFlag = -1;
50 const cellModel* curModelPtr =
reinterpret_cast<cellModel*
>(0);
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_;
106 labelList regularCellLabels(curModelPtr->nPoints(), -1);
108 const label* addressing = regularAddressingTable[regularTypeFlag];
115 cellShapes_[nCreatedCells] = cellShape(*curModelPtr, regularCellLabels);
119 void Foam::starMesh::addSAMMcell
122 const label nCreatedCells
126 label typeFlag = labels[21];
128 label permutationFlag = labels[23];
131 label sammTypeFlag = -1;
132 const cellModel* curModelPtr =
reinterpret_cast<cellModel*
>(0);
139 curModelPtr = sammTrim1Ptr_;
146 curModelPtr = sammTrim2Ptr_;
155 curModelPtr = sammTrim3Ptr_;
160 curModelPtr = sammTrim5Ptr_;
169 curModelPtr = sammTrim4Ptr_;
176 curModelPtr = sammTrim8Ptr_;
183 <<
"SAMM type " << sammTypeFlag <<
" is invalid" 189 labelList sammCellLabels(curModelPtr->nPoints(), -1);
191 const label* addressing = sammAddressingTable[sammTypeFlag];
198 cellShapes_[nCreatedCells] = cellShape(*curModelPtr, sammCellLabels);
201 starCellPermutation_[nCreatedCells] = permutationFlag;
205 void Foam::starMesh::readCells()
210 fileName cellsFileName(casePrefix_ +
".cel");
213 IFstream cellsFile(cellsFileName);
215 if (cellsFile.good())
217 label lineLabel, pointLabel, regionLabel, typeFlag;
220 while (!(cellsFile >> lineLabel).eof())
222 maxLabel =
max(maxLabel, lineLabel);
223 for (
int i=0; i<8; i++)
225 cellsFile >> pointLabel;
228 cellsFile >> regionLabel;
229 cellsFile >> typeFlag;
246 <<
"Cannot read file " << cellsFileName
251 Info<<
"Number of cells = " << nCells << endl <<
endl;
255 starCellPermutation_.
setSize(nCells);
258 forAll(starCellPermutation_, i)
260 starCellPermutation_[i] = -1;
263 starCellLabelLookup_.
setSize(maxLabel+1);
266 forAll(starCellLabelLookup_, i)
268 starCellLabelLookup_[i] = -1;
273 IFstream cellsFile(cellsFileName);
276 label lineLabel, starLabel, regionLabel, typeFlag;
278 for (
label celli = 0; celli < nCells; celli++)
282 label addOnToCell = 0;
292 if ((cellsFile >> lineLabel).eof())
295 <<
"Reached end of cells file before " 296 <<
"all cells are read in." 302 for (
int i=nLabels-8; i<nLabels; i++)
304 cellsFile >> starLabel;
311 labels[i] = starPointLabelLookup_[starLabel];
315 Info<<
"Cells not consistent with vertex file. " 316 <<
"Star vertex number " << starLabel
317 <<
" does not exist\n";
327 labels[i] = starLabel;
331 cellsFile >> regionLabel;
332 cellsFile >> typeFlag;
346 }
while (addOnToCell >= 0);
349 starCellID_[celli] = lineLabel;
352 starCellLabelLookup_[lineLabel] = celli;
356 addRegularCell(labels, celli);
360 addSAMMcell(labels, celli);
364 const labelList& curShapeLabels = cellShapes_[celli];
368 if (curShapeLabels[i] < 0)
371 <<
"Invalid vertex found in cell " << celli
372 <<
". STAR cell no: " << lineLabel
373 <<
" labels: " << curShapeLabels
382 <<
"No cells in file " << cellsFileName
#define forAll(list, i)
Loop across all elements in list.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
FvWallInfoData< WallInfo, label > label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Ostream & endl(Ostream &os)
Add newline and flush stream.
static const labelSphericalTensor labelI(1)
Identity labelTensor.
List< label > labelList
A List of labels.
errorManip< error > abort(error &err)
void setSize(const label)
Reset size of List.