ENH: foamyHexMesh: Split location of infinite cells and processor boundary cells

This commit is contained in:
laurence
2013-06-11 14:30:20 +01:00
parent febb41f647
commit 3d2a4ece30

View File

@ -254,15 +254,22 @@ void Foam::DistributedDelaunayMesh<Triangulation>::findProcessorBoundaryCells
/Pstream::nProcs() /Pstream::nProcs()
); );
std::list<Cell_handle> infinite_cells;
Triangulation::incident_cells
(
Triangulation::infinite_vertex(),
std::back_inserter(infinite_cells)
);
for for
( (
All_cells_iterator cit = Triangulation::all_cells_begin(); typename std::list<Cell_handle>::iterator vcit = infinite_cells.begin();
cit != Triangulation::all_cells_end(); vcit != infinite_cells.end();
++cit ++vcit
) )
{ {
if (Triangulation::is_infinite(cit)) Cell_handle cit = *vcit;
{
// Index of infinite vertex in this cell. // Index of infinite vertex in this cell.
int i = cit->index(Triangulation::infinite_vertex()); int i = cit->index(Triangulation::infinite_vertex());
@ -278,7 +285,16 @@ void Foam::DistributedDelaunayMesh<Triangulation>::findProcessorBoundaryCells
} }
} }
} }
else if (cit->parallelDualVertex())
for
(
Finite_cells_iterator cit = Triangulation::finite_cells_begin();
cit != Triangulation::finite_cells_end();
++cit
)
{
if (cit->parallelDualVertex())
{ {
if (cit->unassigned()) if (cit->unassigned())
{ {
@ -315,13 +331,21 @@ void Foam::DistributedDelaunayMesh<Triangulation>::findProcessorBoundaryCells
continue; continue;
} }
if
(
checkProcBoundaryCell checkProcBoundaryCell
( (
citNeighbor, citNeighbor,
circumsphereOverlaps circumsphereOverlaps
); )
)
{
cellToCheck.insert(citNeighbor->cellIndex());
} }
} }
cellToCheck.unset(cit->cellIndex());
}
} }
} }
@ -521,7 +545,6 @@ Foam::label Foam::DistributedDelaunayMesh<Triangulation>::referVertices
<< originalParallelVertices[vI].procIndex() << originalParallelVertices[vI].procIndex()
<< " " << originalParallelVertices[vI].index() << endl; << " " << originalParallelVertices[vI].index() << endl;
} }
} }
} }
} }