mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Revert "ENH: rolling back WIP on face filtering."
This reverts commit bd87fc30a4.
This commit is contained in:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user