36 void Foam::slidingInterface::decoupleInterface
43 Pout<<
"void slidingInterface::decoupleInterface("
44 <<
"polyTopoChange& ref) const : "
45 <<
"Decoupling sliding interface " <<
name() <<
endl;
52 Pout<<
"void slidingInterface::decoupleInterface("
53 <<
"polyTopoChange& ref) const : "
54 <<
"Interface already decoupled." <<
endl;
64 const faceList& faces = mesh.faces();
68 const labelList& nei = mesh.faceNeighbour();
73 mesh.faceZones()[masterFaceZoneID_.
index()]();
76 mesh.faceZones()[masterFaceZoneID_.
index()];
79 mesh.faceZones()[masterFaceZoneID_.
index()].flipMap();
81 const labelList& masterFc = masterFaceCells();
85 forAll (masterPatchAddr, faceI)
88 face newFace = faces[masterPatchAddr[faceI]];
90 if (masterPatchFlip[faceI])
92 newFace = newFace.reverseFace();
100 masterPatchAddr[faceI],
104 masterPatchID_.
index(),
106 masterFaceZoneID_.
index(),
116 mesh.faceZones()[slaveFaceZoneID_.
index()]();
119 mesh.faceZones()[slaveFaceZoneID_.
index()];
122 mesh.faceZones()[slaveFaceZoneID_.
index()].flipMap();
124 const labelList& slaveFc = slaveFaceCells();
127 const Map<label>& rpm = retiredPointMap();
131 forAll (slavePatchAddr, faceI)
134 face newFace = faces[slavePatchAddr[faceI]];
136 if (slavePatchFlip[faceI])
138 newFace = newFace.reverseFace();
145 if (rpmIter != rpm.end())
149 newFace[pointI] = rpmIter();
158 slavePatchAddr[faceI],
162 slavePatchID_.
index(),
164 slaveFaceZoneID_.
index(),
173 const labelList& masterStickOuts = masterStickOutFaces();
175 forAll (masterStickOuts, faceI)
179 const label curFaceID = masterStickOuts[faceI];
181 const face& oldFace = faces[curFaceID];
183 DynamicList<label> newFaceLabels(oldFace.size());
185 bool changed =
false;
190 if (ref.pointRemoved(oldFace[pointI]))
197 newFaceLabels.append(oldFace[pointI]);
203 if (newFaceLabels.size() < 3)
207 "void slidingInterface::decoupleInterface("
208 "polyTopoChange& ref) const"
209 ) <<
"Face " << curFaceID <<
" reduced to less than "
210 <<
"3 points. Topological/cutting error." <<
nl
211 <<
"Old face: " << oldFace <<
" new face: " << newFaceLabels
216 label modifiedFaceZone = mesh.faceZones().whichZone(curFaceID);
217 bool modifiedFaceZoneFlip =
false;
219 if (modifiedFaceZone >= 0)
221 modifiedFaceZoneFlip =
222 mesh.faceZones()[modifiedFaceZone].flipMap()
224 mesh.faceZones()[modifiedFaceZone].whichFace(curFaceID)
229 newFace.transfer(newFaceLabels);
243 mesh.boundaryMesh().whichPatch(curFaceID),
261 const labelList& curFaces = cells[slaveFc[faceI]];
269 mesh.faceZones().whichZone(curFaces[faceI])
270 != slaveFaceZoneID_.
index()
271 && !ref.faceRemoved(curFaces[faceI])
275 slaveLayerCellFaceMap.insert(curFaces[faceI]);
281 const labelList& slaveStickOuts = slaveStickOutFaces();
284 const Map<label>& masterPm = masterPatch.meshPointMap();
286 forAll (slaveStickOuts, faceI)
290 const label curFaceID = slaveStickOuts[faceI];
292 const face& oldFace = faces[curFaceID];
294 DynamicList<label> newFaceLabels(oldFace.size());
296 bool changed =
false;
301 if (rpm.found(oldFace[pointI]))
306 newFaceLabels.append(rpm.find(oldFace[pointI])());
308 else if (ref.pointRemoved(oldFace[pointI]))
313 else if (masterPm.found(oldFace[pointI]))
320 newFaceLabels.append(oldFace[pointI]);
326 if (newFaceLabels.size() < 3)
330 "void slidingInterface::decoupleInterface("
331 "polyTopoChange& ref) const"
332 ) <<
"Face " << curFaceID <<
" reduced to less than "
333 <<
"3 points. Topological/cutting error." <<
nl
334 <<
"Old face: " << oldFace <<
" new face: " << newFaceLabels
339 label modifiedFaceZone = mesh.faceZones().whichZone(curFaceID);
340 bool modifiedFaceZoneFlip =
false;
342 if (modifiedFaceZone >= 0)
344 modifiedFaceZoneFlip =
345 mesh.faceZones()[modifiedFaceZone].flipMap()
347 mesh.faceZones()[modifiedFaceZone].whichFace(curFaceID)
352 newFace.transfer(newFaceLabels);
366 mesh.boundaryMesh().whichPatch(curFaceID),
379 mesh.faceZones()[slaveFaceZoneID_.
index()]().meshPoints();
381 forAll (slaveMeshPoints, pointI)
387 slaveMeshPoints[pointI],
388 points[slaveMeshPoints[pointI]],
390 mesh.pointZones().whichZone(slaveMeshPoints[pointI]),
397 retiredPointMapPtr_->
clear();
404 Pout<<
"void slidingInterface::coupleInterface("
405 <<
"polyTopoChange& ref) const : "
406 <<
"Finished decoupling sliding interface " <<
name() <<
endl;