41 const label cellIndex,
46 const label fluentCellModelID
53 reinterpret_cast<const cellModel*
>(0)
61 static label faceMatchingOrder[7][6] =
63 {-1, -1, -1, -1, -1, -1},
64 {-1, -1, -1, -1, -1, -1},
65 { 0, 1, 2, 3, -1, -1},
66 {-1, -1, -1, -1, -1, -1},
72 const cellModel& curModel = *fluentCellModelLookup[fluentCellModelID];
75 if (faceLabels.size() != curModel.nFaces())
78 <<
"Number of face labels not equal to"
79 <<
"number of face in the model. "
80 <<
"Number of face labels: " << faceLabels.size()
81 <<
" number of faces in model: " << curModel.nFaces()
90 const label curFaceLabel = faceLabels[faceI];
92 const labelList& curFace = faces[curFaceLabel];
94 if (owner[curFaceLabel] == cellIndex)
96 localFaces[faceI] = curFace;
98 else if (neighbour[curFaceLabel] == cellIndex)
101 localFaces[faceI].
setSize(curFace.size());
105 localFaces[faceI][curFace.size() - i - 1] =
112 <<
"face " << curFaceLabel
113 <<
" does not belong to cell " << cellIndex
114 <<
". Face owner: " << owner[curFaceLabel] <<
" neighbour: "
115 << neighbour[curFaceLabel]
136 List<bool> meshFaceUsed(localFaces.size(),
false);
139 const faceList& modelFaces = curModel.modelFaces();
143 modelFaces[faceMatchingOrder[fluentCellModelID][0]];
147 forAll(localFaces, meshFaceI)
149 if (localFaces[meshFaceI].size() == firstModelFace.size())
154 const labelList& curMeshFace = localFaces[meshFaceI];
156 meshFaceUsed[meshFaceI] =
true;
158 forAll(curMeshFace, pointI)
160 pointLabels[firstModelFace[pointI]] = curMeshFace[pointI];
170 <<
"Cannot find match for first face. "
171 <<
"cell model: " << curModel.name() <<
" first model face: "
172 << firstModelFace <<
" Mesh faces: " << localFaces
176 for (
label modelFaceI = 1; modelFaceI < modelFaces.size(); modelFaceI++)
181 [faceMatchingOrder[fluentCellModelID][modelFaceI]];
186 forAll(localFaces, meshFaceI)
190 !meshFaceUsed[meshFaceI]
191 && localFaces[meshFaceI].size() == curModelFace.size()
195 labelList meshFaceLabels = localFaces[meshFaceI];
200 rotation < meshFaceLabels.size();
205 label nMatchedLabels = 0;
207 forAll(meshFaceLabels, pointI)
212 == meshFaceLabels[pointI]
219 if (nMatchedLabels >= 2)
228 forAll(meshFaceLabels, pointI)
231 meshFaceLabels[pointI];
234 meshFaceUsed[meshFaceI] =
true;
241 label firstLabel = meshFaceLabels[0];
243 for (
label i = 1; i < meshFaceLabels.size(); i++)
245 meshFaceLabels[i - 1] = meshFaceLabels[i];
248 meshFaceLabels.last() = firstLabel;
260 <<
"Cannot find match for face "
262 <<
".\nModel: " << curModel.name() <<
" model face: "
263 << curModelFace <<
" Mesh faces: " << localFaces