Revert "ENH: rolling back WIP on face filtering."

This reverts commit bd87fc30a4.
This commit is contained in:
graham
2011-06-30 09:44:01 +01:00
parent 8898bc4622
commit cb48cefe70
3 changed files with 178 additions and 131 deletions

View File

@ -67,6 +67,7 @@ SourceFiles
#include "wallPolyPatch.H"
#include "processorPolyPatch.H"
#include "zeroGradientFvPatchFields.H"
#include "globalIndex.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -782,7 +783,8 @@ private:
void indexDualVertices
(
pointField& pts,
PackedBoolList& boundaryPts
PackedBoolList& boundaryPts,
const globalIndex& globalParallelPointIndices
);
//- Re-index all of the the Delaunay cells

View File

@ -58,73 +58,90 @@ void Foam::conformalVoronoiMesh::calcDualMesh
++cit
)
{
if
(
!cit->vertex(0)->real()
|| !cit->vertex(1)->real()
|| !cit->vertex(2)->real()
|| !cit->vertex(3)->real()
)
{
cit->filterCount() = 100;
}
else
{
cit->filterCount() = 0;
}
}
for
(
Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
vit != finite_vertices_end();
vit++
)
{
std::list<Cell_handle> cells;
incident_cells(vit, std::back_inserter(cells));
// for
// (
// Delaunay::Finite_cells_iterator cit = finite_cells_begin();
// cit != finite_cells_end();
// ++cit
// )
// {
// if
// (
// !cit->vertex(0)->real()
// || !cit->vertex(1)->real()
// || !cit->vertex(2)->real()
// || !cit->vertex(3)->real()
// )
// {
// cit->filterCount() = 100;
// }
// else
// {
// cit->filterCount() = 0;
// }
// }
bool hasProcPt = false;
// for
// (
// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
// vit != finite_vertices_end();
// vit++
// )
// {
// std::list<Cell_handle> cells;
// incident_cells(vit, std::back_inserter(cells));
for
(
std::list<Cell_handle>::iterator cit=cells.begin();
cit != cells.end();
++cit
)
{
if
(
!(*cit)->vertex(0)->real()
|| !(*cit)->vertex(1)->real()
|| !(*cit)->vertex(2)->real()
|| !(*cit)->vertex(3)->real()
)
{
hasProcPt = true;
// bool hasProcPt = false;
break;
}
}
// for
// (
// std::list<Cell_handle>::iterator cit=cells.begin();
// cit != cells.end();
// ++cit
// )
// {
// if
// (
// !(*cit)->vertex(0)->real()
// || !(*cit)->vertex(1)->real()
// || !(*cit)->vertex(2)->real()
// || !(*cit)->vertex(3)->real()
// )
// {
// hasProcPt = true;
if (hasProcPt)
{
for
(
std::list<Cell_handle>::iterator cit=cells.begin();
cit != cells.end();
++cit
)
{
(*cit)->filterCount() = 100;
}
}
}
// break;
// }
// }
// if (hasProcPt)
// {
// for
// (
// std::list<Cell_handle>::iterator cit=cells.begin();
// cit != cells.end();
// ++cit
// )
// {
// (*cit)->filterCount() = 100;
// }
// }
// }
PackedBoolList boundaryPts(number_of_cells(), false);
indexDualVertices(points, boundaryPts);
globalIndex globalParallelPointIndices(number_of_cells());
indexDualVertices
(
points,
boundaryPts,
globalParallelPointIndices
);
{
// Ideally requires a no-risk face filtering to get rid of zero area
@ -182,7 +199,12 @@ void Foam::conformalVoronoiMesh::calcDualMesh
// Reindexing the Delaunay cells and regenerating the
// points resets the mesh to the starting condition.
indexDualVertices(points, boundaryPts);
indexDualVertices
(
points,
boundaryPts,
globalParallelPointIndices
);
{
Info<< nl << "Merging close points" << endl;
@ -1529,65 +1551,65 @@ Foam::labelHashSet Foam::conformalVoronoiMesh::checkPolyMeshQuality
List<polyPatch*> patches(patchStarts.size());
label nValidPatches = 0;
forAll(patches, p)
{
if (patchTypes[p] == processorPolyPatch::typeName)
{
// Do not create empty processor patches
if (patchSizes[p] > 0)
{
patches[nValidPatches] = new processorPolyPatch
(
patchNames[p],
patchSizes[p],
patchStarts[p],
nValidPatches,
pMesh.boundaryMesh(),
Pstream::myProcNo(),
procNeighbours[p]
);
nValidPatches++;
}
}
else
{
patches[nValidPatches] = polyPatch::New
(
patchTypes[p],
patchNames[p],
patchSizes[p],
patchStarts[p],
nValidPatches,
pMesh.boundaryMesh()
).ptr();
nValidPatches++;
}
}
patches.setSize(nValidPatches);
pMesh.addPatches(patches);
// Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
// label nValidPatches = 0;
// forAll(patches, p)
// {
// patches[p] = new polyPatch
// (
// patchNames[p],
// patchSizes[p],
// patchStarts[p],
// p,
// pMesh.boundaryMesh()
// );
// if (patchTypes[p] == processorPolyPatch::typeName)
// {
// // Do not create empty processor patches
// if (patchSizes[p] > 0)
// {
// patches[nValidPatches] = new processorPolyPatch
// (
// patchNames[p],
// patchSizes[p],
// patchStarts[p],
// nValidPatches,
// pMesh.boundaryMesh(),
// Pstream::myProcNo(),
// procNeighbours[p]
// );
// nValidPatches++;
// }
// }
// else
// {
// patches[nValidPatches] = polyPatch::New
// (
// patchTypes[p],
// patchNames[p],
// patchSizes[p],
// patchStarts[p],
// nValidPatches,
// pMesh.boundaryMesh()
// ).ptr();
// nValidPatches++;
// }
// }
// pMesh.addPatches(patches, false);
// patches.setSize(nValidPatches);
// pMesh.addPatches(patches);
Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
forAll(patches, p)
{
patches[p] = new polyPatch
(
patchNames[p],
patchSizes[p],
patchStarts[p],
p,
pMesh.boundaryMesh()
);
}
pMesh.addPatches(patches, false);
// pMesh.overrideCellCentres(cellCentres);
@ -1785,7 +1807,8 @@ Foam::labelHashSet Foam::conformalVoronoiMesh::checkPolyMeshQuality
void Foam::conformalVoronoiMesh::indexDualVertices
(
pointField& pts,
PackedBoolList& boundaryPts
PackedBoolList& boundaryPts,
const globalIndex& globalParallelPointIndices
)
{
// Indexing Delaunay cells, which are the dual vertices
@ -1798,6 +1821,16 @@ void Foam::conformalVoronoiMesh::indexDualVertices
boundaryPts = false;
OFstream tetStr
(
runTime_.path()
/"processor_"
+ name(Pstream::myProcNo())
+ "_parallelTets.obj"
);
label pTetI = 0;
for
(
Delaunay::Finite_cells_iterator cit = finite_cells_begin();
@ -1807,23 +1840,35 @@ void Foam::conformalVoronoiMesh::indexDualVertices
{
if (cit->internalOrBoundaryDualVertex())
{
cit->cellIndex() = dualVertI;
if (cit->parallelDualVertex())
{
cit->cellIndex() = globalParallelPointIndices.toGlobal
(
dualVertI
);
drawDelaunayCell(tetStr, cit, pTetI++);
}
else
{
cit->cellIndex() = dualVertI;
if
(
!cit->vertex(0)->internalOrBoundaryPoint()
|| !cit->vertex(1)->internalOrBoundaryPoint()
|| !cit->vertex(2)->internalOrBoundaryPoint()
|| !cit->vertex(3)->internalOrBoundaryPoint()
)
{
// This is a boundary dual vertex
boundaryPts[dualVertI] = true;
}
}
pts[dualVertI] = topoint(dual(cit));
if
(
!cit->vertex(0)->internalOrBoundaryPoint()
|| !cit->vertex(1)->internalOrBoundaryPoint()
|| !cit->vertex(2)->internalOrBoundaryPoint()
|| !cit->vertex(3)->internalOrBoundaryPoint()
)
{
// This is a boundary dual vertex
boundaryPts[dualVertI] = true;
}
dualVertI++;
}
else

View File

@ -423,10 +423,10 @@ void Foam::conformalVoronoiMesh::writeMesh
patches.setSize(nValidPatches);
mesh.addFvPatches(patches);
// mesh.addFvPatches(patches);
// Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
// mesh.addFvPatches(patches, false);
Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
mesh.addFvPatches(patches, false);
if (!mesh.write())
{
@ -456,7 +456,7 @@ void Foam::conformalVoronoiMesh::writeMesh
// cellCs.write();
writeCellSizes(mesh);
// writeCellSizes(mesh);
findRemainingProtrusionSet(mesh);
}