65 void Foam::slidingInterface::checkDefinition()
71 !masterFaceZoneID_.
active()
72 || !slaveFaceZoneID_.
active()
73 || !cutPointZoneID_.
active()
74 || !cutFaceZoneID_.
active()
75 || !masterPatchID_.
active()
81 "void slidingInterface::checkDefinition()"
82 ) <<
"Not all zones and patches needed in the definition "
83 <<
"have been found. Please check your mesh definition."
95 <<
"Master or slave face zone contain no faces. "
96 <<
"Please check your mesh definition."
102 Pout<<
"Sliding interface object " <<
name() <<
" :" <<
nl
103 <<
" master face zone: " << masterFaceZoneID_.
index() <<
nl
104 <<
" slave face zone: " << slaveFaceZoneID_.
index() <<
endl;
109 void Foam::slidingInterface::clearOut()
const
111 clearPointProjection();
112 clearAttachedAddressing();
121 Foam::slidingInterface::slidingInterface
126 const word& masterFaceZoneName,
127 const word& slaveFaceZoneName,
128 const word& cutPointZoneName,
129 const word& cutFaceZoneName,
130 const word& masterPatchName,
131 const word& slavePatchName,
133 const bool coupleDecouple,
169 coupleDecouple_(coupleDecouple),
171 projectionAlgo_(algo),
173 pointMergeTol_(pointMergeTolDefault_),
174 edgeMergeTol_(edgeMergeTolDefault_),
175 nFacesPerSlaveEdge_(nFacesPerSlaveEdgeDefault_),
176 edgeFaceEscapeLimit_(edgeFaceEscapeLimitDefault_),
177 integralAdjTol_(integralAdjTolDefault_),
178 edgeMasterCatchFraction_(edgeMasterCatchFractionDefault_),
179 edgeCoPlanarTol_(edgeCoPlanarTolDefault_),
180 edgeEndCutoffTol_(edgeEndCutoffTolDefault_),
181 cutFaceMasterPtr_(NULL),
182 cutFaceSlavePtr_(NULL),
183 masterFaceCellsPtr_(NULL),
184 slaveFaceCellsPtr_(NULL),
185 masterStickOutFacesPtr_(NULL),
186 slaveStickOutFacesPtr_(NULL),
187 retiredPointMapPtr_(NULL),
188 cutPointEdgePairMapPtr_(NULL),
189 slavePointPointHitsPtr_(NULL),
190 slavePointEdgeHitsPtr_(NULL),
191 slavePointFaceHitsPtr_(NULL),
192 masterPointEdgeHitsPtr_(NULL),
193 projectedSlavePointsPtr_(NULL)
201 "Foam::slidingInterface::slidingInterface\n"
203 " const word& name,\n"
204 " const label index,\n"
205 " const polyTopoChanger& mme,\n"
206 " const word& masterFaceZoneName,\n"
207 " const word& slaveFaceZoneName,\n"
208 " const word& cutFaceZoneName,\n"
209 " const word& cutPointZoneName,\n"
210 " const word& masterPatchName,\n"
211 " const word& slavePatchName,\n"
212 " const typeOfMatch tom,\n"
213 " const bool coupleDecouple\n"
215 ) <<
"Creation of a sliding interface from components "
216 <<
"in attached state not supported."
221 calcAttachedAddressing();
227 Foam::slidingInterface::slidingInterface
238 dict.
lookup(
"masterFaceZoneName"),
243 dict.
lookup(
"slaveFaceZoneName"),
248 dict.
lookup(
"cutPointZoneName"),
253 dict.
lookup(
"cutFaceZoneName"),
258 dict.
lookup(
"masterPatchName"),
263 dict.
lookup(
"slavePatchName"),
266 matchType_(typeOfMatchNames_.read((dict.
lookup(
"typeOfMatch")))),
267 coupleDecouple_(dict.
lookup(
"coupleDecouple")),
268 attached_(dict.
lookup(
"attached")),
274 cutFaceMasterPtr_(NULL),
275 cutFaceSlavePtr_(NULL),
276 masterFaceCellsPtr_(NULL),
277 slaveFaceCellsPtr_(NULL),
278 masterStickOutFacesPtr_(NULL),
279 slaveStickOutFacesPtr_(NULL),
280 retiredPointMapPtr_(NULL),
281 cutPointEdgePairMapPtr_(NULL),
282 slavePointPointHitsPtr_(NULL),
283 slavePointEdgeHitsPtr_(NULL),
284 slavePointFaceHitsPtr_(NULL),
285 masterPointEdgeHitsPtr_(NULL),
286 projectedSlavePointsPtr_(NULL)
299 Pout<<
"slidingInterface::slidingInterface(...) "
300 <<
" for object " << name <<
" : "
301 <<
"Interface attached. Reading master and slave face zones "
302 <<
"and retired point lookup." <<
endl;
309 masterStickOutFacesPtr_ =
311 slaveStickOutFacesPtr_ =
315 cutPointEdgePairMapPtr_ =
320 calcAttachedAddressing();
333 void Foam::slidingInterface::clearAddressing()
const
344 return masterFaceZoneID_;
350 return slaveFaceZoneID_;
361 Pout<<
"bool slidingInterface::changeTopology() const "
362 <<
"for object " <<
name() <<
" : "
363 <<
"Couple-decouple mode." <<
endl;
380 && !topoChanger().
mesh().changing()
390 return projectPoints();
402 decoupleInterface(ref);
407 coupleInterface(ref);
421 coupleInterface(ref);
432 Pout<<
"void slidingInterface::modifyMotionPoints("
433 <<
"pointField& motionPoints) const for object " <<
name() <<
" : "
434 <<
"Adjusting motion points." <<
endl;
437 const polyMesh& mesh = topoChanger().mesh();
442 if (cutPoints.
size() && !projectedSlavePointsPtr_)
448 const pointField& projectedSlavePoints = *projectedSlavePointsPtr_;
455 mesh.
faceZones()[slaveFaceZoneID_.index()]().meshPointMap();
458 mesh.
faceZones()[masterFaceZoneID_.index()]();
463 mesh.
faceZones()[slaveFaceZoneID_.index()]();
468 forAll (cutPoints, pointI)
473 if (rpmIter != rpm.
end())
481 motionPoints[cutPoints[pointI]] =
482 projectedSlavePoints[slaveZonePointMap.
find(rpmIter())()];
490 cpepm.
find(cutPoints[pointI]);
492 if (cpepmIter != cpepm.
end())
502 const edge& globalMasterEdge = cpepmIter().first();
504 const label curMasterEdgeIndex =
511 globalMasterEdge.
start()
515 globalMasterEdge.
end()
520 const edge& cme = masterEdges[curMasterEdgeIndex];
522 const edge& globalSlaveEdge = cpepmIter().second();
524 const label curSlaveEdgeIndex =
531 globalSlaveEdge.
start()
535 globalSlaveEdge.
end()
540 const edge& curSlaveEdge = slaveEdges[curSlaveEdgeIndex];
542 const point& a = projectedSlavePoints[curSlaveEdge.
start()];
543 const point&
b = projectedSlavePoints[curSlaveEdge.
end()];
548 slaveLocalPoints[curSlaveEdge.
start()]
549 + slavePointNormals[curSlaveEdge.
start()]
550 + slaveLocalPoints[curSlaveEdge.
end()]
551 + slavePointNormals[curSlaveEdge.
end()]
555 plane cutPlane(a, b, c);
558 curSlaveEdge.
line(slaveLocalPoints);
559 const scalar curSlaveLineMag = curSlaveLine.
mag();
564 cme.
line(masterLocalPoints)
569 cutOnMaster > edgeEndCutoffTol_
570 && cutOnMaster < 1.0 - edgeEndCutoffTol_
574 point masterCutPoint =
575 masterLocalPoints[cme.
start()]
576 + cutOnMaster*cme.
vec(masterLocalPoints);
589 - curSlaveLine.
start()
590 ) & curSlaveLine.
vec()
591 )/
sqr(curSlaveLineMag);
596 edgeCoPlanarTol_*
mag(b - a);
600 cutOnSlave > edgeEndCutoffTol_
601 && cutOnSlave < 1.0 - edgeEndCutoffTol_
606 motionPoints[cutPoints[pointI]] =
612 Pout<<
"Missed slave edge!!! This is an error. "
614 << cme.
line(masterLocalPoints)
615 <<
" slave edge: " << curSlaveLine
616 <<
" point: " << masterCutPoint
621 - curSlaveLine.
start()
622 ) & curSlaveLine.
vec()
623 )/
sqr(curSlaveLineMag)
629 Pout<<
"Missed master edge!!! This is an error"
637 "void slidingInterface::modifyMotionPoints"
638 "(pointField&) const"
639 ) <<
"Cut point " << cutPoints[pointI]
640 <<
" not recognised as either the projected "
641 <<
"or as intersection point. Error in point "
642 <<
"projection or data mapping"
659 Pout<<
"void slidingInterface::updateMesh(const mapPolyMesh& m)"
660 <<
" const for object " <<
name() <<
" : "
661 <<
"Updating topology." <<
endl;
665 const polyMesh& mesh = topoChanger().mesh();
667 masterFaceZoneID_.update(mesh.
faceZones());
668 slaveFaceZoneID_.update(mesh.
faceZones());
689 if (!projectedSlavePointsPtr_)
694 return *projectedSlavePointsPtr_;
711 "nFacesPerSlaveEdge",
716 "edgeFaceEscapeLimit",
726 "edgeMasterCatchFraction",
727 edgeMasterCatchFraction_
742 Info<<
"Sliding interface parameters:" <<
nl
743 <<
"pointMergeTol : " << pointMergeTol_ <<
nl
744 <<
"edgeMergeTol : " << edgeMergeTol_ <<
nl
745 <<
"nFacesPerSlaveEdge : " << nFacesPerSlaveEdge_ <<
nl
746 <<
"edgeFaceEscapeLimit : " << edgeFaceEscapeLimit_ <<
nl
747 <<
"integralAdjTol : " << integralAdjTol_ <<
nl
748 <<
"edgeMasterCatchFraction : " << edgeMasterCatchFraction_ <<
nl
749 <<
"edgeCoPlanarTol : " << edgeCoPlanarTol_ <<
nl
750 <<
"edgeEndCutoffTol : " << edgeEndCutoffTol_ <<
endl;
759 << masterFaceZoneID_.name() <<
nl
760 << slaveFaceZoneID_.name() <<
nl
761 << cutPointZoneID_.name() <<
nl
762 << cutFaceZoneID_.name() <<
nl
763 << masterPatchID_.name() <<
nl
764 << slavePatchID_.name() <<
nl
765 << typeOfMatchNames_[matchType_] <<
nl
766 << coupleDecouple_ <<
nl
767 << attached_ <<
endl;
772 #define WRITE_NON_DEFAULT(name) \
773 if( name ## _ != name ## Default_ )\
775 os << " " #name " " << name ## _ << token::END_STATEMENT << nl; \
783 <<
" masterFaceZoneName " << masterFaceZoneID_.name()
785 <<
" slaveFaceZoneName " << slaveFaceZoneID_.name()
787 <<
" cutPointZoneName " << cutPointZoneID_.name()
789 <<
" cutFaceZoneName " << cutFaceZoneID_.name()
791 <<
" masterPatchName " << masterPatchID_.name()
793 <<
" slavePatchName " << slavePatchID_.name()
795 <<
" typeOfMatch " << typeOfMatchNames_[matchType_]
797 <<
" coupleDecouple " << coupleDecouple_
801 <<
" attached " << attached_
803 <<
" active " << active()
808 masterFaceCellsPtr_->writeEntry(
"masterFaceCells", os);
809 slaveFaceCellsPtr_->writeEntry(
"slaveFaceCells", os);
810 masterStickOutFacesPtr_->writeEntry(
"masterStickOutFaces", os);
811 slaveStickOutFacesPtr_->writeEntry(
"slaveStickOutFaces", os);
813 os <<
" retiredPointMap " << retiredPointMap()
815 <<
" cutPointEdgePairMap " << cutPointEdgePairMap()