Go to the documentation of this file.
70 nbrPatch.
nf() & nbrPatch.coupledFvPatch::delta()
79 scalar di =
mag(deltas[facei]);
80 scalar dni =
mag(nbrDeltas[facei]);
91 w[facei] = dni/(di + dni);
129 const vector& ddi = patchD[facei];
130 const vector& dni = nbrPatchD[facei];
132 pdv[facei] = ddi - dni;
139 const vector& ddi = patchD[facei];
140 const vector& dni = nbrPatchD[facei];
142 pdv[facei] = ddi -
transform(forwardT()[0], dni);
160 return patchInternalField(internalData);
170 return neighbFvPatch().patchInternalField(iF);
176 if (!cyclicACMIPolyPatch_.owner())
184 const fvPatch& nonOverlapPatch = this->nonOverlapPatch();
188 resetPatchAreas(*
this);
189 resetPatchAreas(nonOverlapPatch);
190 resetPatchAreas(nbrACMI);
191 resetPatchAreas(nbrNonOverlapPatch);
200 surfaceScalarField::Boundary& meshPhiBf =
meshPhi.boundaryFieldRef();
204 scalarField& phip = meshPhiBf[cyclicACMIPolyPatch_.index()];
208 const auto& localFaces = cyclicACMIPolyPatch_.localFaces();
209 const auto& localPoints = cyclicACMIPolyPatch_.localPoints();
213 if (newSrcAddr[facei].empty())
221 const face& fAMI = localFaces[facei];
226 const scalar geomArea = fAMI.
mag(localPoints);
227 phip[facei] *= magSf()[facei]/geomArea;
231 forAll(phiNonOverlapp, facei)
233 const scalar w = 1.0 - cyclicACMIPolyPatch_.srcMask()[facei];
234 phiNonOverlapp[facei] *= w;
239 meshPhiBf[nbrNonOverlapPatch.
patch().
index()];
246 if (newTgtAddr[facei].empty())
248 nbrPhip[facei] = 0.0;
252 const face& fAMI = nbrLocalFaces[facei];
257 const scalar geomArea = fAMI.
mag(nbrLocalPoints);
258 nbrPhip[facei] *= nbrACMI.
magSf()[facei]/geomArea;
262 forAll(nbrPhiNonOverlapp, facei)
264 const scalar w = 1.0 - cyclicACMIPolyPatch_.tgtMask()[facei];
265 nbrPhiNonOverlapp[facei] *= w;
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
const bMesh & mesh() const
const vectorField & Sf() const
Return face area vectors.
A class for managing temporary objects.
scalar mag(const UList< point > &p) const
Magnitude of face area.
virtual tmp< vectorField > delta() const =0
Return delta (P to N) vectors across coupled patch.
static bool & parRun()
Is this a parallel run?
static scalar tolerance()
Overlap tolerance.
tmp< surfaceScalarField > meshPhi(const volVectorField &U)
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensionSet transform(const dimensionSet &ds)
Return the argument; transformations do not change the dimensions.
virtual tmp< vectorField > delta() const
Return delta (P to N) vectors across coupled patch.
virtual bool coupled() const
virtual tmp< labelField > internalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &internalData) const
Return neighbour field.
#define forAll(list, i)
Loop across all elements in list.
tmp< vectorField > nf() const
Return face normals.
bool interpolate(const vector &p1, const vector &p2, const vector &o, vector &n, scalar l)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
const vectorField & Cf() const
Return face centres.
virtual void movePoints()
Correct patches after moving points.
virtual const fvPatch & nonOverlapPatch() const
Return non-overlapping fvPatch.
Macros for easy insertion into run-time selection tables.
const List< face_type > & localFaces() const
Return patch faces addressing into local point list.
Mesh data needed to do the Finite Volume discretisation.
#define DebugPout
Report an information message using Foam::Pout.
const Field< point_type > & localPoints() const
Return pointField of points in patch.
commsTypes
Types of communications.
const vectorField::subField faceCentres() const
Return face centres.
void resetPatchAreas(const fvPatch &fvp) const
Helper function to reset the FV patch areas from the primitive patch.
const vectorField::subField faceAreas() const
Return face normals.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static tmp< T > New(Args &&... args)
Construct tmp of T with forwarding arguments.
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
virtual tmp< labelField > interfaceInternalField(const labelUList &internalData) const
const polyPatch & patch() const
Return the polyPatch.
Addressing for all faces on surface of mesh. Can either be read from polyMesh or from triSurface....
A face is a list of labels corresponding to mesh vertices.
const scalarField & magSf() const
Return face area magnitudes.
void makeWeights(scalarField &) const
Make patch weighting factors.
defineTypeNameAndDebug(combustionModel, 0)
const word & name() const
The patch name.
label index() const
The index of this patch in the boundaryMesh.
virtual void makeWeights(scalarField &) const
Make patch weighting factors.
Cyclic patch for Arbitrarily Coupled Mesh Interface (ACMI)