Go to the documentation of this file.
54 pointLabelInMeshSurface_(),
55 meshSurfacePointLabelInTriMesh_(),
57 globalPointLabelPtr_(NULL),
59 globalToLocalPointAddressingPtr_(NULL),
61 pAtParallelBoundariesPtr_(NULL),
62 pAtBufferLayersPtr_(NULL)
74 const label additionalLayers
79 pointLabelInMeshSurface_(),
80 meshSurfacePointLabelInTriMesh_(),
82 globalPointLabelPtr_(NULL),
84 globalToLocalPointAddressingPtr_(NULL),
86 pAtParallelBoundariesPtr_(NULL),
87 pAtBufferLayersPtr_(NULL)
99 if( invertedPoints.
found(bPoints[bpI]) )
102 useFace[pointFaces(bpI, pfI)] = 1;
109 if( useFace[bfI] == layerI )
111 const face& bf = bFaces[bfI];
115 const label bpI = bp[bf[pI]];
119 const label fLabel = pointFaces(bpI, pfI);
121 if( !useFace[fLabel] )
122 useFace[fLabel] = layerI + 1;
135 std::map<label, labelLongList> eData;
138 const label bpI = iter();
142 const label neiProc = pProcs(bpI, procI);
146 if( eData.find(neiProc) == eData.end() )
155 if( useFace[pointFaces(bpI, pfI)] == layerI )
157 eData[neiProc].append(globalPointLabel[bpI]);
169 const label bpI = globalToLocal[receivedData[i]];
173 const label fLabel = pointFaces(bpI, pfI);
174 if( !useFace[fLabel] )
175 useFace[fLabel] = layerI + 1;
181 createPointsAndTrias(useFace);
206 Warning <<
"Smoothing auxiliary vertex."
207 <<
" This has no effect on the original mesh" <<
endl;
215 const label centreI =
surf_[pointFacets(pI, ptI)][2];
223 const label centreI = helper[i];
226 scalar faceArea(0.0);
231 for(
label i=0;i<3;++i)
234 const scalar area = tri.
mag(pts) + VSMALL;
240 pts[centreI] = centre / faceArea;
253 # pragma omp parallel num_threads(np.size())
268 updateType[pointI] |=
SMOOTH;
290 std::map<label, LongList<labelledPoint> > exchangeData;
302 if( !(updateType[pointI] &
SMOOTH) )
307 const label neiProc = pProcs(pointI, i);
312 exchangeData[neiProc].append
341 # pragma omp parallel for schedule(dynamic, 20)
348 scalar faceArea(0.0);
353 for(
label i=0;i<3;++i)
356 const scalar area = tri.
mag(pts) + VSMALL;
362 pts[pI] = centre / faceArea;
396 # pragma omp parallel for schedule(dynamic, 50)
400 const label bpI = movedPoints[i];
401 const label pointI = bPoints[bpI];
407 pts[triPointI] =
points[pointI];
408 updateType[triPointI] |=
SMOOTH;
429 std::map<label, LongList<labelledPoint> > exchangeData;
441 if( !(updateType[pointI] &
SMOOTH) )
446 const label neiProc = pProcs(pointI, i);
451 exchangeData[neiProc].append
480 # pragma omp parallel for schedule(dynamic, 20)
487 scalar faceArea(0.0);
492 for(
label i=0;i<3;++i)
495 const scalar area = tri.
mag(pts) + VSMALL;
501 pts[pI] = centre / faceArea;
const VRWGraph & bpAtProcs() const
processors which contain the vertex
const labelList & bp() const
const point & coordinates() const
return point coordinates
const Map< label > & globalToLocalPointAddressing() const
triSurf surf_
surface triangulation created from
#define forAll(list, i)
Loop across all elements in list.
const pointField & points() const
access to points, tets and other data
const labelList & globalBoundaryPointLabel() const
global boundary point label
const labelLongList & bufferLayerPoints() const
Template functions to aid in the implementation of demand driven data.
A List obtained as a section of another List.
static bool & parRun()
Is this a parallel run?
const VRWGraph & pointFaces() const
Ostream & endl(Ostream &os)
Add newline and flush stream.
const meshSurfaceEngine & surfaceEngine() const
return const reference to meshSurfaceEngine
Map< label > * globalToLocalPointAddressingPtr_
mapping between global and local point labels
VRWGraph * pAtProcsPtr_
processor for containing points
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
const meshSurfacePartitioner & mPart_
const reference to the meshSurfacePartitioner
void deleteDemandDrivenData(DataPtr &dataPtr)
LongList< direction > pointType_
shall a node be used for smoothing or not
scalar mag(const pointField &) const
Magnitude of face area.
const faceList::subList & boundaryFaces() const
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void updateBufferLayers()
update buffer layer points
Pre-declare SubField and related Field type.
labelLongList * pAtParallelBoundariesPtr_
labels of points at parallel boundaries
pointField & pointsAccess()
non-const access to points
void updateVertex(const label pointI, const point &newP)
move the vertex to a new position
void appendIfNotIn(const T &e)
#define forAllRow(graph, rowI, index)
partTriMesh(const partTriMesh &)
disallow bitwise copy construct
DynList< label > * neiProcsPtr_
processors which should communicate with the current one
const VRWGraph & pointFacets() const
return point-facets addressing
const pointFieldPMG & points() const
void updateVerticesSMP(const List< LongList< labelledPoint > > &)
const DynList< label > & neiProcs() const
bool found(const Key &) const
Return true if hashedEntry is found in table.
void createPointsAndTrias(const List< direction > &)
create surface triangulation
labelLongList * globalPointLabelPtr_
global point label
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
const labelLongList & globalPointLabel() const
const VRWGraph & pointAtProcs() const
void exchangeMap(const std::map< label, ListType > &m, LongList< T > &data, const Pstream::commsTypes commsType)
Triangle with additional region number.
const dimensionedScalar c
Speed of light in a vacuum.
const labelList & boundaryPoints() const
A face is a list of labels corresponding to mesh vertices.
const Map< label > & globalToLocalBndPointAddressing() const
global point label to local label. Only for processors points
void size(const label)
Override size to be inconsistent with allocated storage.
label size() const
Return the number of elements in the UList.
LongList< label > labelLongList
labelLongList * pAtBufferLayersPtr_
labels of points serving as buffer layers on other processors
labelList meshSurfacePointLabelInTriMesh_
label of mesh surface point in the partTriMesh
label pointLabel() const
return point label