43#ifndef Foam_coupledFaPatch_H
44#define Foam_coupledFaPatch_H
119 const label nbrPolyPatchIndex,
120 const word& patchType
133 const word& patchType
155 virtual bool owner()
const = 0;
166 return separation_.
size();
173 if (!separation_.
size())
176 <<
"Coupled patches are not separated"
186 if (!forwardT_.
size())
189 <<
"Coupled planes do not need transformation"
199 if (!reverseT_.
size())
202 <<
"Coupled planes do not need transformation"
212 return forwardT_.
size() == 0;
Buffers for inter-processor communications streams (UOPstream, UIPstream).
void size(const label n)
Older name for setAddressableSize.
commsTypes
Types of communications.
coupledFaPatch is an abstract base class for patches that couple regions of the computational domain ...
virtual ~coupledFaPatch()=default
Destructor.
bool separated() const
Are the coupled planes separated?
const vectorField & separation() const
Return the offset (distance) vector from one side of the couple.
const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
virtual void makeDeltaCoeffs(scalarField &) const =0
Make patch face - neighbour cell distances.
virtual void initInternalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &iF) const
Initialise neighbour field transfer.
virtual void initMovePoints(PstreamBuffers &, const pointField &)=0
Initialise the patches for moving points.
virtual bool coupled() const
Return true because this patch is coupled.
virtual tmp< labelField > transfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const =0
Transfer and return neighbour field.
virtual void calcGeometry(PstreamBuffers &)=0
Calculate the patch geometry.
const tensorField & forwardT() const
Return face transformation tensor.
bool parallel() const
Are the cyclic planes parallel.
virtual void makeWeights(scalarField &) const =0
Make patch weighting factors.
coupledFaPatch(const word &name, const labelList &edgeLabels, const label index, const faBoundaryMesh &bm, const label nbrPolyPatchIndex, const word &patchType)
Construct from components.
virtual const labelUList & faceCells() const
Return faceCell addressing: lduInterface virtual function.
virtual void initTransfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const
Initialise interface data transfer.
virtual void movePoints(PstreamBuffers &, const pointField &)=0
Correct patches after moving points.
virtual tmp< vectorField > delta() const =0
Return delta (P to N) vectors across coupled patch.
virtual bool owner() const =0
Does this side own the patch ?
TypeName("coupled")
Runtime type information.
virtual tmp< labelField > internalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &iF) const =0
Return neighbour field.
virtual tmp< labelField > interfaceInternalField(const labelUList &internalData) const =0
Return the values of the given internal data adjacent to.
void calcTransformTensors(const vector &Cf, const vector &Cr, const vector &nf, const vector &nr) const
Calculate the uniform transformation tensors.
virtual bool neighbour() const
Does the coupled side own the patch ?
coupledFaPatch(const word &name, const dictionary &dict, const label index, const faBoundaryMesh &bm, const word &patchType)
Construct from dictionary.
virtual void initGeometry(PstreamBuffers &)=0
Initialise the calculation of the patch geometry.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Finite area boundary mesh.
Finite area patch class. Used for 2-D non-Euclidian finite area method.
const labelList & edgeLabels() const noexcept
Return the list of edges.
const labelUList & edgeFaces() const
Return edge-face addressing.
An abstract base class for implicitly-coupled interfaces e.g. processor and cyclic patches.
label index() const noexcept
The index of this patch in the boundaryMesh.
const word & name() const noexcept
The patch name.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
errorManip< error > abort(error &err)
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.