136#ifndef Foam_faceCoupleInfo_H
137#define Foam_faceCoupleInfo_H
162 static const scalar angleTol_;
165 std::unique_ptr<indirectPrimitivePatch> masterPatchPtr_;
168 std::unique_ptr<indirectPrimitivePatch> slavePatchPtr_;
186 std::unique_ptr<primitiveFacePatch> cutFacesPtr_;
212 template<
template<
class>
class FaceList>
215 const FaceList<face>&,
222 template<
template<
class>
class FaceList>
225 const FaceList<face>&,
237 const bool compact =
true
250 void writePointsFaces()
const;
269 bool regionEdge(
const polyMesh&,
const label slaveEdgeI)
const;
272 label mostAlignedCutEdge
276 const bool patchDivision,
280 const label edgeStart,
287 void setCutEdgeToPoints(
const labelList& cutToMasterEdges);
294 static label matchFaces
301 const bool sameOrientation
305 static bool matchPointsThroughFaces
312 const bool sameOrientation,
320 static scalar maxDistance
330 static void findPerfectMatchingFaces
342 static void findSlavesCoveringMaster
355 void checkMatch(
const labelList& cutToMasterEdges)
const;
370 void perfectSlavePointMatch(
const scalar absTol);
373 void perfectPointMatch(
const scalar absTol,
const bool);
377 void subDivisionMatch
380 const bool patchDivision,
405 const bool perfectMatch
426 const bool perfectMatch,
427 const bool orderedFaces,
428 const bool patchDivision
454 return *masterPatchPtr_;
460 return *slavePatchPtr_;
466 return *cutFacesPtr_;
483 return cutToMasterFaces_;
487 return masterToCutPoints_;
492 return cutToSlaveFaces_;
496 return slaveToCutPoints_;
502 return cutEdgeToPoints_;
Map from edge (expressed as its endpoints) to value. Hashing (and ==) on an edge is symmetric.
A HashTable to objects of type <T> with a label key.
const labelList & masterToCutPoints() const
const indirectPrimitivePatch & masterPatch() const
Addressing engine for coupled faces on mesh0.
const pointField & cutPoints() const
Points for combined set of faces.
static labelList faceLabels(const polyPatch &)
Utility functions.
const labelList & slaveToCutPoints() const
const indirectPrimitivePatch & slavePatch() const
Addressing engine for coupled faces on mesh1.
static Map< label > makeMap(const labelList &)
Create Map from List.
const EdgeMap< labelList > & cutEdgeToPoints() const noexcept
From two cut points (original edge) to list of inserted points.
~faceCoupleInfo()=default
Destructor.
ClassName("faceCoupleInfo")
Runtime type information.
faceCoupleInfo(const polyMesh &mesh0, const polyMesh &mesh1, const scalar absTol, const bool perfectMatch)
Construct from two meshes and absolute tolerance.
const primitiveFacePatch & cutFaces() const
Addressing engine for combined set of faces.
const labelList & cutToMasterFaces() const
Master face for every face on cut. Will always be at least.
const labelList & cutToSlaveFaces() const
A face is a list of labels corresponding to mesh vertices.
A class for handling file names.
Mesh consisting of general polyhedral cells.
A patch is a list of labels that address the faces in the global face list.
Cell-face mesh analysis engine.
#define ClassName(TypeNameString)
Add typeName information from argument TypeNameString to a class.
List< edge > edgeList
List of edge.
List< labelList > labelListList
List of labelList.
List< label > labelList
A List of labels.
List< face > faceList
List of faces.
PrimitivePatch< List< face >, const pointField & > primitiveFacePatch
A PrimitivePatch with List storage for the faces, const reference for the point field.
PrimitivePatch< IndirectList< face >, const pointField & > indirectPrimitivePatch
A PrimitivePatch with an IndirectList for the faces, const reference for the point field.
vectorField pointField
pointField is a vectorField.
pointField points0(pointIOField(IOobject("points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, IOobject::NO_REGISTER)))