33 void Foam::slidingInterface::calcAttachedAddressing()
const
37 Pout<<
"void Foam::slidingInterface::calcAttachedAddressing() const "
38 <<
" for object " <<
name() <<
" : "
39 <<
"Calculating zone face-cell addressing."
46 clearAttachedAddressing();
50 const labelList& nei = mesh.faceNeighbour();
56 faceZones[masterFaceZoneID_.
index()]();
59 faceZones[masterFaceZoneID_.
index()];
62 faceZones[masterFaceZoneID_.
index()].flipMap();
64 masterFaceCellsPtr_ =
new labelList(masterPatchFaces.size());
67 forAll (masterPatchFaces, faceI)
69 if (masterFlip[faceI])
71 mfc[faceI] = nei[masterPatchFaces[faceI]];
75 mfc[faceI] = own[masterPatchFaces[faceI]];
82 faceZones[slaveFaceZoneID_.
index()]();
85 faceZones[slaveFaceZoneID_.
index()];
88 faceZones[slaveFaceZoneID_.
index()].flipMap();
90 slaveFaceCellsPtr_ =
new labelList(slavePatchFaces.size());
93 forAll (slavePatchFaces, faceI)
97 sfc[faceI] = nei[slavePatchFaces[faceI]];
101 sfc[faceI] = own[slavePatchFaces[faceI]];
106 if (
min(mfc) < 0 ||
min(sfc) < 0)
114 Pout <<
"No cell next to master patch face " << faceI
115 <<
". Global face no: " << mfc[faceI]
116 <<
" own: " << own[masterPatchFaces[faceI]]
117 <<
" nei: " << nei[masterPatchFaces[faceI]]
118 <<
" flip: " << masterFlip[faceI] <<
endl;
126 Pout <<
"No cell next to slave patch face " << faceI
127 <<
". Global face no: " << sfc[faceI]
128 <<
" own: " << own[slavePatchFaces[faceI]]
129 <<
" nei: " << nei[slavePatchFaces[faceI]]
130 <<
" flip: " << slaveFlip[faceI] <<
endl;
137 "void slidingInterface::calcAttachedAddressing()"
139 ) <<
"Error is zone face-cell addressing. Probable error in "
140 <<
"decoupled mesh or sliding interface definition."
153 const labelList& masterMeshPoints = masterPatch.meshPoints();
155 forAll (masterMeshPoints, pointI)
157 const labelList& curFaces = pointFaces[masterMeshPoints[pointI]];
165 faceZones.whichZone(curFaces[faceI])
166 != masterFaceZoneID_.
index()
169 masterStickOutFaceMap.insert(curFaces[faceI]);
174 masterStickOutFacesPtr_ =
new labelList(masterStickOutFaceMap.toc());
182 const labelList& slaveMeshPoints = slavePatch.meshPoints();
184 forAll (slaveMeshPoints, pointI)
186 const labelList& curFaces = pointFaces[slaveMeshPoints[pointI]];
194 faceZones.whichZone(curFaces[faceI])
195 != slaveFaceZoneID_.
index()
198 slaveStickOutFaceMap.insert(curFaces[faceI]);
203 slaveStickOutFacesPtr_ =
new labelList(slaveStickOutFaceMap.toc());
208 retiredPointMapPtr_ =
216 cutPointEdgePairMapPtr_ =
219 faceZones[slaveFaceZoneID_.
index()]().nEdges()
226 "void slidingInterface::calcAttachedAddressing() const"
227 ) <<
"The interface is attached. The zone face-cell addressing "
228 <<
"cannot be assembled for object " <<
name()
234 Pout<<
"void Foam::slidingInterface::calcAttachedAddressing() const "
235 <<
" for object " <<
name() <<
" : "
236 <<
"Finished calculating zone face-cell addressing."
242 void Foam::slidingInterface::clearAttachedAddressing()
const
255 void Foam::slidingInterface::renumberAttachedAddressing
263 const labelList& reverseCellMap = m.reverseCellMap();
265 const labelList& mfc = masterFaceCells();
273 m.faceZoneFaceMap()[masterFaceZoneID_.index()];
277 label newCellI = reverseCellMap[mfc[mfzRenumber[faceI]]];
281 newMfc[faceI] = newCellI;
290 m.faceZoneFaceMap()[slaveFaceZoneID_.index()];
294 label newCellI = reverseCellMap[sfc[sfzRenumber[faceI]]];
298 newSfc[faceI] = newCellI;
305 if (
min(newMfc) < 0 ||
min(newSfc) < 0)
309 "void slidingInterface::renumberAttachedAddressing("
310 "const mapPolyMesh& m) const"
311 ) <<
"Error in cell renumbering for object " <<
name()
312 <<
". Some of master cells next "
313 <<
"to the interface have been removed."
320 const labelList& reverseFaceMap = m.reverseFaceMap();
323 const labelList& msof = masterStickOutFaces();
330 label newFaceI = reverseFaceMap[msof[faceI]];
334 newMsof[faceI] = newFaceI;
339 const labelList& ssof = slaveStickOutFaces();
346 label newFaceI = reverseFaceMap[ssof[faceI]];
350 newSsof[faceI] = newFaceI;
357 if (
min(newMsof) < 0 ||
min(newSsof) < 0)
361 "void slidingInterface::renumberAttachedAddressing("
362 "const mapPolyMesh& m) const"
363 ) <<
"Error in face renumbering for object " <<
name()
364 <<
". Some of stick-out next "
365 <<
"to the interface have been removed."
371 const Map<label> rpm = retiredPointMap();
373 Map<label>* newRpmPtr =
new Map<label>(rpm.size());
374 Map<label>& newRpm = *newRpmPtr;
379 const labelList& reversePointMap = m.reversePointMap();
385 key = reversePointMap[rpmToc[rpmTocI]];
387 value = reversePointMap[rpm.find(rpmToc[rpmTocI])()];
392 if (key < 0 || value < 0)
396 "void slidingInterface::renumberAttachedAddressing("
397 "const mapPolyMesh& m) const"
398 ) <<
"Error in retired point numbering for object "
399 <<
name() <<
". Some of master "
400 <<
"points have been removed."
405 newRpm.insert(key, value);
409 const Map<Pair<edge> > cpepm = cutPointEdgePairMap();
411 Map<Pair<edge> >* newCpepmPtr =
new Map<Pair<edge> >(cpepm.size());
412 Map<Pair<edge> >& newCpepm = *newCpepmPtr;
416 forAll (cpepmToc, cpepmTocI)
418 key = reversePointMap[cpepmToc[cpepmTocI]];
420 const Pair<edge>& oldPe = cpepm.find(cpepmToc[cpepmTocI])();
423 const label ms = reversePointMap[oldPe.first().start()];
424 const label me = reversePointMap[oldPe.first().end()];
426 const label ss = reversePointMap[oldPe.second().start()];
427 const label se = reversePointMap[oldPe.second().end()];
432 if (key < 0 || ms < 0 || me < 0 || ss < 0 || se < 0)
436 "void slidingInterface::renumberAttachedAddressing("
437 "const mapPolyMesh& m) const"
438 ) <<
"Error in cut point edge pair map numbering for object "
439 <<
name() <<
". Some of master points have been removed."
444 newCpepm.insert(key, Pair<edge>(edge(ms, me), edge(ss, se)));
447 if (!projectedSlavePointsPtr_)
451 "void slidingInterface::renumberAttachedAddressing("
452 "const mapPolyMesh& m) const"
453 ) <<
"Error in projected point numbering for object " <<
name()
458 const pointField& projectedSlavePoints = *projectedSlavePointsPtr_;
464 pointField& newProjectedSlavePoints = *newProjectedSlavePointsPtr;
467 m.faceZonePointMap()[slaveFaceZoneID_.index()];
469 forAll (newProjectedSlavePoints, pointI)
471 if (sfzPointRenumber[pointI] > -1)
473 newProjectedSlavePoints[pointI] =
474 projectedSlavePoints[sfzPointRenumber[pointI]];
479 clearAttachedAddressing();
483 masterFaceCellsPtr_ = newMfcPtr;
484 slaveFaceCellsPtr_ = newSfcPtr;
486 masterStickOutFacesPtr_ = newMsofPtr;
487 slaveStickOutFacesPtr_ = newSsofPtr;
489 retiredPointMapPtr_ = newRpmPtr;
490 cutPointEdgePairMapPtr_ = newCpepmPtr;
491 projectedSlavePointsPtr_ = newProjectedSlavePointsPtr;
497 if (!masterFaceCellsPtr_)
501 "const labelList& slidingInterface::masterFaceCells() const"
502 ) <<
"Master zone face-cell addressing not available for object "
507 return *masterFaceCellsPtr_;
513 if (!slaveFaceCellsPtr_)
517 "const labelList& slidingInterface::slaveFaceCells() const"
518 ) <<
"Slave zone face-cell addressing not available for object "
523 return *slaveFaceCellsPtr_;
527 const Foam::labelList& Foam::slidingInterface::masterStickOutFaces()
const
529 if (!masterStickOutFacesPtr_)
533 "const labelList& slidingInterface::masterStickOutFaces() const"
534 ) <<
"Master zone stick-out face addressing not available for object "
539 return *masterStickOutFacesPtr_;
543 const Foam::labelList& Foam::slidingInterface::slaveStickOutFaces()
const
545 if (!slaveStickOutFacesPtr_)
549 "const labelList& slidingInterface::slaveStickOutFaces() const"
550 ) <<
"Slave zone stick-out face addressing not available for object "
555 return *slaveStickOutFacesPtr_;
561 if (!retiredPointMapPtr_)
565 "const Map<label>& slidingInterface::retiredPointMap() const"
566 ) <<
"Retired point map not available for object " <<
name()
570 return *retiredPointMapPtr_;
575 Foam::slidingInterface::cutPointEdgePairMap()
const
577 if (!cutPointEdgePairMapPtr_)
581 "const Map<Pair<edge> >& slidingInterface::"
582 "cutPointEdgePairMap() const"
583 ) <<
"Retired point map not available for object " <<
name()
587 return *cutPointEdgePairMapPtr_;