Go to the documentation of this file.
89 boundaryMesh().mesh()().globalData().sharedPointLabels();
92 labelList& ngpp = *nonGlobalPatchPointsPtr_;
97 boundaryMesh().mesh().patch().meshPoints();
99 label noFiltPoints = 0;
101 forAll(faMeshPatchPoints, pointI)
103 label curP = meshPoints[faMeshPatchPoints[pointI]];
107 forAll(sharedPoints, sharedI)
109 if (sharedPoints[sharedI] == curP)
118 ngpp[noFiltPoints] = pointI;
123 ngpp.setSize(noFiltPoints);
168 OPstream toNeighbProc
172 3*(
sizeof(label) + size()*
sizeof(
vector))
178 << edgeFaceCentres();
188 IPstream fromNeighbProc
192 3*(
sizeof(label) + size()*
sizeof(
vector))
195 >> neighbEdgeCentres_
196 >> neighbEdgeLengths_
197 >> neighbEdgeFaceCentres_;
204 scalar nmagEl =
mag(neighbEdgeLengths_[edgei]);
205 scalar avEl = (magEl[edgei] + nmagEl)/2.0;
207 if (
mag(magEl[edgei] - nmagEl)/avEl > 1
e-6)
211 <<
" length does not match neighbour by "
212 << 100*
mag(magEl[edgei] - nmagEl)/avEl
213 <<
"% -- possible edge ordering problem"
223 neighbEdgeLengths_/
mag(neighbEdgeLengths_)
260 for (label patchPointI = 0; patchPointI <
nPoints(); ++patchPointI)
262 label edgeI = ptEdges[patchPointI][0];
264 patchEdge[patchPointI] = edgeI;
266 const edge&
e = patchEdges[edgeI];
268 indexInEdge[patchPointI] =
e.find(
pointLabels()[patchPointI]);
271 OPstream toNeighbProc
275 2*
sizeof(label) + 2*
nPoints()*
sizeof(label)
298 IPstream fromNeighbProc
309 if (nbrPatchEdge.size() ==
nPoints())
314 labelList& neighbPoints = *neighbPointsPtr_;
317 patchSlice(boundaryMesh().
mesh().edges());
319 forAll(nbrPatchEdge, nbrPointI)
322 const edge&
e = patchEdges[nbrPatchEdge[nbrPointI]];
324 const label index = 1 - nbrIndexInEdge[nbrPointI];
328 neighbPoints[patchPointI] = nbrPointI;
335 neighbPointsPtr_ =
nullptr;
343 if (!neighbPointsPtr_)
351 <<
"No extended addressing calculated for patch " <<
name()
353 <<
"This can happen if the number of points on both"
354 <<
" sides of the two coupled patches differ." <<
nl
355 <<
"This happens if the processorPatch was constructed from"
356 <<
" part of a cyclic patch."
360 return *neighbPointsPtr_;
373 /
mag(neighbEdgeLengths())
377 - neighbEdgeFaceCentres()
381 w = neighbEdgeCentresCn/
384 + neighbEdgeCentresCn
418 - neighbEdgeFaceCentres()
430 - neighbEdgeFaceCentres()
444 if (!nonGlobalPatchPointsPtr_)
446 makeNonGlobalPatchPoints();
449 return *nonGlobalPatchPointsPtr_;
458 return patchInternalField(internalData);
468 return patchInternalField(internalData, edgeFaces);
478 send(commsType, interfaceData);
488 return receive<label>(commsType, this->size());
498 send(commsType, patchInternalField(iF)());
508 return receive<label>(commsType, this->size());
519 return receive<label>(commsType, this->size());
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
virtual label comm() const
List< label > labelList
A List of labels.
const bMesh & mesh() const
void movePoints(const pointField &)
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
virtual void updateMesh()
virtual void write(Ostream &os) const
virtual void initTransfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const
A class for managing temporary objects.
virtual void movePoints(const pointField &)
Output inter-processor communications stream.
Template functions to aid in the implementation of demand driven data.
A List obtained as a section of another List.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
virtual tmp< labelField > transfer(const Pstream::commsTypes commsType, const labelUList &interfaceData) const
dimensionSet transform(const dimensionSet &ds)
virtual void initInternalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &internalData) const
virtual tmp< vectorField > delta() const
virtual void initUpdateMesh()
void deleteDemandDrivenData(DataPtr &dataPtr)
Generic templated field type.
const labelList & neighbPoints() const
virtual void initUpdateMesh()
void setSize(const label n)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
OBJstream os(runTime.globalPath()/outputName)
Macros for easy insertion into run-time selection tables.
errorManip< error > abort(error &err)
Vector< scalar > vector
A scalar version of the templated Vector.
void makeNonGlobalPatchPoints() const
errorManipArg< error, int > exit(error &err, const int errNo=1)
virtual void updateMesh()
void makeDeltaCoeffs(scalarField &) const
const labelList & nonGlobalPatchPoints() const
#define FatalErrorInFunction
virtual ~processorFaPatch()
static int & msgType() noexcept
virtual void write(Ostream &) const
virtual tmp< labelField > interfaceInternalField(const labelUList &internalData) const
static bool & parRun() noexcept
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
void makeWeights(scalarField &) const
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
virtual tmp< labelField > internalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &internalData) const
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
const dimensionedScalar e
labelList identity(const label len, label start=0)
Ostream & writeEntry(const keyType &key, const T &value)
word name(const expressions::valueTypeCode typeCode)
Addressing for all faces on surface of mesh. Can either be read from polyMesh or from triSurface....
Input inter-processor communications stream.
virtual tmp< vectorField > delta() const
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
UList< label > labelUList
A UList of labels.
const labelList & meshPoints() const
Finite area patch class. Used for 2-D non-Euclidian finite area method.
defineTypeNameAndDebug(combustionModel, 0)
void initMovePoints(const pointField &)
labelList pointLabels(nPoints, -1)