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;
173 return separation_.
size();
180 if (!separation_.
size())
183 <<
"Coupled patches are not separated" 193 if (!forwardT_.
size())
196 <<
"Coupled planes do not need transformation" 206 if (!reverseT_.
size())
209 <<
"Coupled planes do not need transformation" 219 return forwardT_.
size() == 0;
coupledFaPatch(const word &name, const labelList &edgeLabels, const label index, const faBoundaryMesh &bm, const label nbrPolyPatchIndex, const word &patchType)
Construct from components.
virtual label referPatchID() const
The referring patchID (eg, for cyclics).
void size(const label n)
Older name for setAddressableSize.
const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
virtual void initTransfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const
Initialise interface data transfer.
commsTypes
Communications types.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual bool coupled() const
Return true because this patch is coupled.
virtual void calcGeometry(PstreamBuffers &)=0
Calculate the patch geometry.
const vectorField & separation() const
Return the offset (distance) vector from one side of the couple.
const labelList & edgeLabels() const noexcept
Return the list of edges.
virtual tmp< vectorField > delta() const =0
Return delta (P to N) vectors across coupled patch.
UList< label > labelUList
A UList of labels.
virtual const labelUList & faceCells() const
Return faceCell addressing: lduInterface virtual function.
bool separated() const
Are the coupled planes separated?
A class for handling words, derived from Foam::string.
virtual void initGeometry(PstreamBuffers &)=0
Initialise the calculation of the patch geometry.
virtual void makeDeltaCoeffs(scalarField &) const =0
Make patch face - neighbour cell distances.
virtual void makeWeights(scalarField &) const =0
Make patch weighting factors.
virtual bool neighbour() const
Does the coupled side own the patch ?
const labelUList & edgeFaces() const
Return edge-face addressing.
errorManip< error > abort(error &err)
virtual void initInternalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &iF) const
Initialise neighbour field transfer.
const word & name() const noexcept
The patch name.
virtual void initMovePoints(PstreamBuffers &, const pointField &)=0
Initialise the patches for moving points.
virtual ~coupledFaPatch()=default
Destructor.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
Finite area patch class. Used for 2-D non-Euclidian finite area method.
virtual void movePoints(PstreamBuffers &, const pointField &)=0
Correct patches after moving points.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
virtual tmp< labelField > transfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const =0
Transfer and return neighbour field.
bool parallel() const
Are the cyclic planes parallel.
virtual tmp< labelField > interfaceInternalField(const labelUList &internalData) const =0
Return the values of the given internal data adjacent to.
TypeNameNoDebug("coupled")
Runtime type information.
coupledFaPatch is an abstract base class for patches that couple regions of the computational domain ...
An abstract base class for implicitly-coupled interfaces e.g. processor and cyclic patches...
Finite area boundary mesh.
virtual bool owner() const =0
Does this side own the patch ?
Field< vector > vectorField
Specialisation of Field<T> for vector.
const tensorField & forwardT() const
Return face transformation tensor.
label index() const noexcept
The index of this patch in the boundaryMesh.
A class for managing temporary objects.
virtual tmp< labelField > internalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &iF) const =0
Return neighbour field.
void calcTransformTensors(const vector &Cf, const vector &Cr, const vector &nf, const vector &nr) const
Calculate the uniform transformation tensors.