Go to the documentation of this file.
40 #ifndef coupledPolyPatch_H
41 #define coupledPolyPatch_H
79 static const scalar defaultMatchTol_;
82 const scalar matchTolerance_;
197 const word& patchType,
208 const word& patchType
255 virtual bool owner()
const = 0;
286 return separation_.size();
298 return forwardT_.empty();
321 return matchTolerance_;
static pointField getAnchorPoints(const UList< face > &, const pointField &, const transformType)
Get a unique anchor point for all faces.
const Field< point_type > & points() const noexcept
Return reference to global points.
vectorField pointField
pointField is a vectorField.
virtual const vectorField & separation() const
If the planes are separated the separation vector.
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
A class for handling words, derived from Foam::string.
A class for handling file names.
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
virtual const tensorField & forwardT() const
Return face transformation tensor.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
static const Enum< transformType > transformTypeNames
virtual bool neighbour() const
Does the coupled side own the patch ?
The coupledPolyPatch is an abstract base class for patches that couple regions of the computational d...
virtual bool owner() const =0
Does this side own the patch ?
virtual void updateMesh(PstreamBuffers &)=0
Update of the patch topology.
virtual void write(Ostream &os) const
Write the polyPatch data as a dictionary.
virtual bool parallel() const
Are the cyclic planes parallel.
virtual bool separated() const
Are the planes separated.
A patch is a list of labels that address the faces in the global face list.
static label getRotation(const pointField &points, const face &f, const point &anchor, const scalar tol)
Get the number of vertices face f needs to be rotated such that.
virtual void initGeometry(PstreamBuffers &)=0
Initialise the calculation of the patch geometry.
virtual void movePoints(PstreamBuffers &, const pointField &)=0
Correct patches after moving points.
TypeName("coupled")
Runtime type information.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
OBJstream os(runTime.globalPath()/outputName)
scalar matchTolerance() const
virtual void initUpdateMesh(PstreamBuffers &)=0
Initialise the update of the patch topology.
virtual void initOrder(PstreamBuffers &, const primitivePatch &) const =0
Initialize ordering for primitivePatch. Does not.
label index() const noexcept
The index of this patch in the boundaryMesh.
static scalarField calcFaceTol(const UList< face > &faces, const pointField &points, const pointField &faceCentres)
Calculate typical tolerance per face. Is currently max distance.
label start() const
Return start label of this patch in the polyMesh face list.
virtual transformType transform() const
Type of transform.
virtual bool order(PstreamBuffers &, const primitivePatch &, labelList &faceMap, labelList &rotation) const =0
Return new ordering for primitivePatch.
const vectorField::subField faceCentres() const
Return face centres.
virtual void transformPosition(pointField &) const =0
Transform a patch-based position from other side to this side.
virtual ~coupledPolyPatch()
Destructor.
void calcTransformTensors(const vectorField &Cf, const vectorField &Cr, const vectorField &nf, const vectorField &nr, const scalarField &smallDist, const scalar absTol, const transformType=UNKNOWN) const
Calculate the transformation tensors.
virtual void initMovePoints(PstreamBuffers &, const pointField &)=0
Initialise the patches for moving points.
virtual bool coupled() const
Return true because this patch is coupled.
A face is a list of labels corresponding to mesh vertices.
const word & name() const noexcept
The patch name.
virtual const boolList & collocated() const
Are faces collocated. Either size 0,1 or length of patch.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
const volScalarField & p0
static void writeOBJ(Ostream &os, const point &pt)
Write point in OBJ format.
vector point
Point is a vector.
virtual void calcGeometry(PstreamBuffers &)=0
Calculate the patch geometry.
coupledPolyPatch(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType, const transformType transform)
Construct from components.
Smooth ATC in cells next to a set of patches supplied by type.
A list of faces which address into the list of points.