Go to the documentation of this file.
69 # pragma omp parallel for if( nIntFaces > 100 ) schedule(dynamic, 20)
71 for(
label fI=0;fI<nIntFaces;++fI)
73 const face&
f = faces[fI];
77 const label bpI = bp[
f[pI]];
84 const edge ePrev =
f.faceEdge(
f.rcIndex(pI));
85 const edge eNext =
f.faceEdge(pI);
87 bool foundNext(
false), foundPrev(
false);
90 const label beI = pointEdges(bpI, peI);
92 if( edges[beI] == ePrev )
96 else if( edges[beI] == eNext )
102 if( !(foundPrev && foundNext) )
119 forAll(procBoundaries, patchI)
121 const label start = procBoundaries[patchI].patchStart();
122 const label end = start + procBoundaries[patchI].patchSize();
125 # pragma omp parallel for schedule(dynamic, 10)
127 for(
label faceI=start;faceI<end;++faceI)
129 const face&
f = faces[faceI];
133 const label bpI = bp[
f[pI]];
140 const edge ePrev =
f.faceEdge(
f.rcIndex(pI));
141 const edge eNext =
f.faceEdge(pI);
143 bool foundNext(
false), foundPrev(
false);
146 const label beI = pointEdges(bpI, peI);
148 if( edges[beI] == ePrev )
152 else if( edges[beI] == eNext )
158 if( !(foundPrev && foundNext) )
174 std::map<label, labelLongList> exchangeData;
176 exchangeData.insert(std::make_pair(bpNei[i],
labelLongList()));
180 const label bpI = it();
188 const label neiProc = bpAtProcs(bpI, i);
192 exchangeData[neiProc].append(it.key());
224 std::map<label, labelLongList> exchangeData;
226 exchangeData.insert(std::make_pair(neiProcs[i],
labelLongList()));
230 const label bpI = it();
234 const label neiProc = bpAtProcs(bpI, i);
239 data.append(it.key());
249 while( counter < receivedData.
size() )
251 const label bpI = globalToLocal[receivedData[counter++]];
267 # pragma omp parallel for if( nIntFaces > 100 ) schedule(dynamic, 10)
269 for(
label faceI=0;faceI<nIntFaces;++faceI)
271 const face&
f = faces[faceI];
276 const label bpI = bp[
f[pI]];
287 if( newF.
size() <
f.size() )
303 # pragma omp parallel for if( end - start > 100 ) \
304 schedule(dynamic, 10)
306 for(
label faceI=start;faceI<end;++faceI)
308 const face&
f = faces[faceI];
313 const label bpI = bp[
f[pI]];
321 if( newF.
size() <
f.size() )
339 # pragma omp parallel for if( patch.patchSize() > 100 ) \
340 schedule(dynamic, 10)
342 for(
label faceI=start;faceI<end;++faceI)
344 const face&
f = faces[faceI];
349 const label bpI = bp[
f[pI]];
360 if( newF.
size() <
f.size() )
365 if( !patch.
owner() && (newF[0] !=
f[0]) )
368 mf[i] = newF[mf.rcIndex(i)];
389 label nDecomposed(0);
390 const label nIntFaces = mesh_.nInternalFaces();
393 # pragma omp parallel for if( bFaces.size() > 100 ) \
394 schedule(dynamic, 10) reduction(+ : nDecomposed)
398 const face& bf = bFaces[bfI];
402 const label bpI = bp[bf[pI]];
404 if( nBndFacesAtBndPoint_[bpI] == 2 )
407 decomposeFace[nIntFaces+bfI] =
true;
426 meshSurfacePtr_(NULL),
427 nBndFacesAtBndPoint_(),
453 badPoints.
insert(bPoints[bpI]);
470 Info <<
"Marked " << nDecomposed <<
" faces for decomposition" <<
endl;
472 if( nDecomposed != 0 )
480 forAll(decomposeFace, faceI)
482 if( decomposeFace[faceI] )
483 decomposeCell[owner[faceI]];
const VRWGraph & boundaryPointEdges() const
const VRWGraph & bpAtProcs() const
processors which contain the vertex
const labelList & owner() const
owner and neighbour cells for faces
const labelList & bp() const
void decomposeMesh(const boolList &)
perform decomposition of selected cell into pyramids
#define forAll(list, i)
Loop across all elements in list.
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 DynList< label > & bpNeiProcs() const
communication matrix for sending point data
const VRWGraph & pointFaces() const
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
void findBndFacesAtBndVertex()
find the number of faces connected to the boundary vertex
Ostream & endl(Ostream &os)
Add newline and flush stream.
const pointFieldPMG & points() const
access to points
label size() const
Size of the active part of the list.
labelList nBndFacesAtBndPoint_
number of boundary faces attached to a boundary vertex
~checkBoundaryFacesSharingTwoEdges()
const faceListPMG & faces() const
access to faces
label nInternalFaces() const
return number of internal faces
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
void deleteDemandDrivenData(DataPtr &dataPtr)
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
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.
const cellListPMG & cells() const
access to cells
label size() const
Returns the number of rows.
void findPoints(labelHashSet &badPoints)
find boundary points connected to two boundary faces, only
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
#define forAllRow(graph, rowI, index)
bool owner() const
check if the processor is the owner of the interface
label size() const
return the number of used elements
void removeUnusedVertices()
remove unused vertices
const meshSurfaceEngine & meshSurface() const
returns mesh surface
label sizeOfRow(const label rowI) const
Returns the number of elements in the given row.
polyMeshGen & mesh_
Reference to polyMeshGen.
label findBndFacesForDecomposition(boolList &decomposeFace)
find boundary faces which shall be decomposed into triangles
meshSurfaceEngine * meshSurfacePtr_
pointer to meshSurfaceEngine
void decomposeMeshFaces(const boolList &decomposeFace)
decompose selected faces into triangles using midnode subdivision
const edgeList & edges() const
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
void setSize(const label)
Reset size of List.
void createMeshSurface() const
creates meshSurfaceEngine
void findFacesAtBndEdge()
void removeExcessiveVertices()
remove vertices from the faces
void clear()
Clear all entries from table.
label size() const
return the number of used elements
const PtrList< boundaryPatch > & boundaries() const
ordinary boundaries
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
void exchangeMap(const std::map< label, ListType > &m, LongList< T > &data, const Pstream::commsTypes commsType)
bool insert(const Key &key)
Insert a new entry.
const PtrList< processorBoundaryPatch > & procBoundaries() const
inter-processor boundaries
const labelList & boundaryPoints() const
boolList removeBndPoint_
a list of boundary points which can be removed from the mesh
A face is a list of labels corresponding to mesh vertices.
checkBoundaryFacesSharingTwoEdges(const checkBoundaryFacesSharingTwoEdges &)
Disallow default bitwise copy construct.
const Map< label > & globalToLocalBndPointAddressing() const
global point label to local label. Only for processors points
LongList< label > labelLongList
Database for solution data, solver performance and other reduced data.
label size() const
return the number of used elements
void append(const T &e)
Append an element at the end of the list.