36 void Foam::slidingInterface::calcAttachedAddressing()
const
41 <<
" for object " <<
name() <<
" : "
42 <<
"Calculating zone face-cell addressing."
49 clearAttachedAddressing();
59 faceZones[masterFaceZoneID_.
index()]();
62 faceZones[masterFaceZoneID_.
index()];
65 faceZones[masterFaceZoneID_.
index()].flipMap();
67 masterFaceCellsPtr_ =
new labelList(masterPatchFaces.size());
70 forAll(masterPatchFaces, facei)
72 if (masterFlip[facei])
74 mfc[facei] = nei[masterPatchFaces[facei]];
78 mfc[facei] = own[masterPatchFaces[facei]];
85 faceZones[slaveFaceZoneID_.
index()]();
88 faceZones[slaveFaceZoneID_.
index()];
91 faceZones[slaveFaceZoneID_.
index()].flipMap();
93 slaveFaceCellsPtr_ =
new labelList(slavePatchFaces.size());
96 forAll(slavePatchFaces, facei)
100 sfc[facei] = nei[slavePatchFaces[facei]];
104 sfc[facei] = own[slavePatchFaces[facei]];
109 if (
min(mfc) < 0 ||
min(sfc) < 0)
117 Pout<<
"No cell next to master patch face " << facei
118 <<
". Global face no: " << mfc[facei]
119 <<
" own: " << own[masterPatchFaces[facei]]
120 <<
" nei: " << nei[masterPatchFaces[facei]]
121 <<
" flip: " << masterFlip[facei] <<
endl;
129 Pout<<
"No cell next to slave patch face " << facei
130 <<
". Global face no: " << sfc[facei]
131 <<
" own: " << own[slavePatchFaces[facei]]
132 <<
" nei: " << nei[slavePatchFaces[facei]]
133 <<
" flip: " << slaveFlip[facei] <<
endl;
139 <<
"decoupled mesh or sliding interface definition."
149 *
max(masterPatch.size(), slavePatch.size())
153 const labelList& masterMeshPoints = masterPatch.meshPoints();
155 stickOutFaceMap.
clear();
157 for (
const label pointi : masterMeshPoints)
159 for (
const label facei : pointFaces[pointi])
161 const label zoneIdx = faceZones.whichZone(facei);
167 zoneIdx != masterFaceZoneID_.
index()
168 && zoneIdx != slaveFaceZoneID_.
index()
171 stickOutFaceMap.insert(facei);
179 masterStickOutFacesPtr_ =
180 new labelList(stickOutFaceMap.sortedToc());
184 masterStickOutFacesPtr_ =
new labelList(stickOutFaceMap.toc());
188 const labelList& slaveMeshPoints = slavePatch.meshPoints();
190 stickOutFaceMap.
clear();
192 for (
const label pointi : slaveMeshPoints)
194 for (
const label facei : pointFaces[pointi])
196 const label zoneIdx = faceZones.whichZone(facei);
202 zoneIdx != masterFaceZoneID_.
index()
203 && zoneIdx != slaveFaceZoneID_.
index()
206 stickOutFaceMap.insert(facei);
214 slaveStickOutFacesPtr_ =
215 new labelList(stickOutFaceMap.sortedToc());
219 slaveStickOutFacesPtr_ =
new labelList(stickOutFaceMap.toc());
222 stickOutFaceMap.
clear();
226 retiredPointMapPtr_ =
233 cutPointEdgePairMapPtr_ =
236 faceZones[slaveFaceZoneID_.
index()]().nEdges()
242 <<
"cannot be assembled for object " <<
name()
249 <<
" for object " <<
name() <<
" : "
250 <<
"Finished calculating zone face-cell addressing."
256 void Foam::slidingInterface::clearAttachedAddressing()
const
269 void Foam::slidingInterface::renumberAttachedAddressing
277 const labelList& reverseCellMap = m.reverseCellMap();
279 const labelList& mfc = masterFaceCells();
287 m.faceZoneFaceMap()[masterFaceZoneID_.index()];
291 label newCelli = reverseCellMap[mfc[mfzRenumber[facei]]];
295 newMfc[facei] = newCelli;
304 m.faceZoneFaceMap()[slaveFaceZoneID_.index()];
308 label newCelli = reverseCellMap[sfc[sfzRenumber[facei]]];
312 newSfc[facei] = newCelli;
319 if (
min(newMfc) < 0 ||
min(newSfc) < 0)
322 <<
"Error in cell renumbering for object " <<
name()
323 <<
". Some of master cells next "
324 <<
"to the interface have been removed."
331 const labelList& reverseFaceMap = m.reverseFaceMap();
334 const labelList& msof = masterStickOutFaces();
341 label newFacei = reverseFaceMap[msof[facei]];
345 newMsof[facei] = newFacei;
350 const labelList& ssof = slaveStickOutFaces();
357 label newFacei = reverseFaceMap[ssof[facei]];
361 newSsof[facei] = newFacei;
368 if (
min(newMsof) < 0 ||
min(newSsof) < 0)
371 <<
"Error in face renumbering for object " <<
name()
372 <<
". Some of stick-out next "
373 <<
"to the interface have been removed."
379 const Map<label> rpm = retiredPointMap();
381 Map<label>* newRpmPtr =
new Map<label>(rpm.size());
382 Map<label>& newRpm = *newRpmPtr;
385 const labelList& reversePointMap = m.reversePointMap();
389 const label key = reversePointMap[iter.key()];
390 const label val = reversePointMap[iter.val()];
395 if (key < 0 ||
val < 0)
398 <<
"Error in retired point numbering for object "
399 <<
name() <<
". Some of master "
400 <<
"points have been removed."
405 newRpm.insert(key,
val);
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 const label key = reversePointMap[iter.key()];
418 const Pair<edge>& oldPe = iter.val();
421 const label ms = reversePointMap[oldPe.first().start()];
422 const label me = reversePointMap[oldPe.first().end()];
424 const label ss = reversePointMap[oldPe.second().start()];
425 const label se = reversePointMap[oldPe.second().end()];
430 if (key < 0 || ms < 0 ||
me < 0 || ss < 0 || se < 0)
433 <<
"Error in cut point edge pair map numbering for object "
434 <<
name() <<
". Some of master points have been removed."
439 newCpepm.insert(key, Pair<edge>(edge(ms,
me), edge(ss, se)));
442 if (!projectedSlavePointsPtr_)
445 <<
"Error in projected point numbering for object " <<
name()
450 const pointField& projectedSlavePoints = *projectedSlavePointsPtr_;
456 pointField& newProjectedSlavePoints = *newProjectedSlavePointsPtr;
459 m.faceZonePointMap()[slaveFaceZoneID_.index()];
461 forAll(newProjectedSlavePoints, pointi)
463 if (sfzPointRenumber[pointi] > -1)
465 newProjectedSlavePoints[pointi] =
466 projectedSlavePoints[sfzPointRenumber[pointi]];
471 clearAttachedAddressing();
475 masterFaceCellsPtr_ = newMfcPtr;
476 slaveFaceCellsPtr_ = newSfcPtr;
478 masterStickOutFacesPtr_ = newMsofPtr;
479 slaveStickOutFacesPtr_ = newSsofPtr;
481 retiredPointMapPtr_ = newRpmPtr;
482 cutPointEdgePairMapPtr_ = newCpepmPtr;
483 projectedSlavePointsPtr_ = newProjectedSlavePointsPtr;
489 if (!masterFaceCellsPtr_)
492 <<
"Master zone face-cell addressing not available for object "
497 return *masterFaceCellsPtr_;
503 if (!slaveFaceCellsPtr_)
506 <<
"Slave zone face-cell addressing not available for object "
511 return *slaveFaceCellsPtr_;
515 const Foam::labelList& Foam::slidingInterface::masterStickOutFaces()
const
517 if (!masterStickOutFacesPtr_)
520 <<
"Master zone stick-out face addressing not available for object "
525 return *masterStickOutFacesPtr_;
529 const Foam::labelList& Foam::slidingInterface::slaveStickOutFaces()
const
531 if (!slaveStickOutFacesPtr_)
534 <<
"Slave zone stick-out face addressing not available for object "
539 return *slaveStickOutFacesPtr_;
545 if (!retiredPointMapPtr_)
548 <<
"Retired point map not available for object " <<
name()
552 return *retiredPointMapPtr_;
557 Foam::slidingInterface::cutPointEdgePairMap()
const
559 if (!cutPointEdgePairMapPtr_)
562 <<
"Retired point map not available for object " <<
name()
566 return *cutPointEdgePairMapPtr_;