43#ifndef Foam_coupledFaPatch_H
44#define Foam_coupledFaPatch_H
125 const label nbrPolyPatchIndex,
126 const word& patchType
139 const word& patchType
161 virtual bool owner()
const = 0;
179 return separation_.size();
186 if (!separation_.size())
189 <<
"Coupled patches are not separated"
199 if (!forwardT_.
size())
202 <<
"Coupled planes do not need transformation"
212 if (!reverseT_.size())
215 <<
"Coupled planes do not need transformation"
225 return forwardT_.
size() == 0;
Buffers for inter-processor communications streams (UOPstream, UIPstream).
void size(const label n)
Older name for setAddressableSize.
commsTypes
Communications types.
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 label referPatchID() const
The referring patchID (eg, for cyclics).
virtual void makeLPN(scalarField &) const =0
Make patch geodesic distance between P and N.
virtual void makeWeights(scalarField &) const =0
Make patch weighting factors.
virtual void makeCorrectionVectors(vectorField &) const =0
Make non-orthogonality correction vectors.
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 bool owner() const =0
Does this side own the patch ?
TypeNameNoDebug("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.
coupledFaPatch(const word &name, const labelUList &edgeLabels, const label index, const faBoundaryMesh &bm, const label nbrPolyPatchIndex, const word &patchType)
Construct from components.
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 ?
virtual tmp< vectorField > delta() const =0
Return delta (P to N) vectors across coupled 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,...
const labelList & edgeLabels() const noexcept
Return the list of edges.
friend class faBoundaryMesh
The faPatch geometry initialisation is called by faBoundaryMesh.
const labelUList & edgeFaces() const
Return edge-face addressing.
lduInterface() noexcept=default
Default construct.
label index() const noexcept
The index of this patch in the boundaryMesh.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
errorManip< error > abort(error &err)
Field< vector > vectorField
Specialisation of Field<T> for vector.
Field< tensor > tensorField
Specialisation of Field<T> for tensor.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
vectorField pointField
pointField is a vectorField.
UList< label > labelUList
A UList of labels.
#define TypeNameNoDebug(TypeNameString)
Declare a ClassNameNoDebug() with extra virtual type info.