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 "wallPolyPatch.H"
|
||||||
#include "processorPolyPatch.H"
|
#include "processorPolyPatch.H"
|
||||||
#include "zeroGradientFvPatchFields.H"
|
#include "zeroGradientFvPatchFields.H"
|
||||||
|
#include "globalIndex.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -782,7 +783,8 @@ private:
|
|||||||
void indexDualVertices
|
void indexDualVertices
|
||||||
(
|
(
|
||||||
pointField& pts,
|
pointField& pts,
|
||||||
PackedBoolList& boundaryPts
|
PackedBoolList& boundaryPts,
|
||||||
|
const globalIndex& globalParallelPointIndices
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Re-index all of the the Delaunay cells
|
//- Re-index all of the the Delaunay cells
|
||||||
|
|||||||
@ -58,73 +58,90 @@ void Foam::conformalVoronoiMesh::calcDualMesh
|
|||||||
++cit
|
++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;
|
cit->filterCount() = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
// for
|
||||||
(
|
// (
|
||||||
Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
|
// Delaunay::Finite_cells_iterator cit = finite_cells_begin();
|
||||||
vit != finite_vertices_end();
|
// cit != finite_cells_end();
|
||||||
vit++
|
// ++cit
|
||||||
)
|
// )
|
||||||
{
|
// {
|
||||||
std::list<Cell_handle> cells;
|
// if
|
||||||
incident_cells(vit, std::back_inserter(cells));
|
// (
|
||||||
|
// !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
|
// bool hasProcPt = false;
|
||||||
(
|
|
||||||
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;
|
|
||||||
|
|
||||||
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)
|
// break;
|
||||||
{
|
// }
|
||||||
for
|
// }
|
||||||
(
|
|
||||||
std::list<Cell_handle>::iterator cit=cells.begin();
|
// if (hasProcPt)
|
||||||
cit != cells.end();
|
// {
|
||||||
++cit
|
// for
|
||||||
)
|
// (
|
||||||
{
|
// std::list<Cell_handle>::iterator cit=cells.begin();
|
||||||
(*cit)->filterCount() = 100;
|
// cit != cells.end();
|
||||||
}
|
// ++cit
|
||||||
}
|
// )
|
||||||
}
|
// {
|
||||||
|
// (*cit)->filterCount() = 100;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
PackedBoolList boundaryPts(number_of_cells(), false);
|
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
|
// 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
|
// Reindexing the Delaunay cells and regenerating the
|
||||||
// points resets the mesh to the starting condition.
|
// points resets the mesh to the starting condition.
|
||||||
|
|
||||||
indexDualVertices(points, boundaryPts);
|
indexDualVertices
|
||||||
|
(
|
||||||
|
points,
|
||||||
|
boundaryPts,
|
||||||
|
globalParallelPointIndices
|
||||||
|
);
|
||||||
|
|
||||||
{
|
{
|
||||||
Info<< nl << "Merging close points" << endl;
|
Info<< nl << "Merging close points" << endl;
|
||||||
@ -1529,65 +1551,65 @@ Foam::labelHashSet Foam::conformalVoronoiMesh::checkPolyMeshQuality
|
|||||||
|
|
||||||
List<polyPatch*> patches(patchStarts.size());
|
List<polyPatch*> patches(patchStarts.size());
|
||||||
|
|
||||||
label nValidPatches = 0;
|
// 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;
|
|
||||||
|
|
||||||
// forAll(patches, p)
|
// forAll(patches, p)
|
||||||
// {
|
// {
|
||||||
// patches[p] = new polyPatch
|
// if (patchTypes[p] == processorPolyPatch::typeName)
|
||||||
// (
|
// {
|
||||||
// patchNames[p],
|
// // Do not create empty processor patches
|
||||||
// patchSizes[p],
|
|
||||||
// patchStarts[p],
|
// if (patchSizes[p] > 0)
|
||||||
// p,
|
// {
|
||||||
// pMesh.boundaryMesh()
|
// 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);
|
// pMesh.overrideCellCentres(cellCentres);
|
||||||
|
|
||||||
@ -1785,7 +1807,8 @@ Foam::labelHashSet Foam::conformalVoronoiMesh::checkPolyMeshQuality
|
|||||||
void Foam::conformalVoronoiMesh::indexDualVertices
|
void Foam::conformalVoronoiMesh::indexDualVertices
|
||||||
(
|
(
|
||||||
pointField& pts,
|
pointField& pts,
|
||||||
PackedBoolList& boundaryPts
|
PackedBoolList& boundaryPts,
|
||||||
|
const globalIndex& globalParallelPointIndices
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Indexing Delaunay cells, which are the dual vertices
|
// Indexing Delaunay cells, which are the dual vertices
|
||||||
@ -1798,6 +1821,16 @@ void Foam::conformalVoronoiMesh::indexDualVertices
|
|||||||
|
|
||||||
boundaryPts = false;
|
boundaryPts = false;
|
||||||
|
|
||||||
|
OFstream tetStr
|
||||||
|
(
|
||||||
|
runTime_.path()
|
||||||
|
/"processor_"
|
||||||
|
+ name(Pstream::myProcNo())
|
||||||
|
+ "_parallelTets.obj"
|
||||||
|
);
|
||||||
|
|
||||||
|
label pTetI = 0;
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
Delaunay::Finite_cells_iterator cit = finite_cells_begin();
|
Delaunay::Finite_cells_iterator cit = finite_cells_begin();
|
||||||
@ -1807,23 +1840,35 @@ void Foam::conformalVoronoiMesh::indexDualVertices
|
|||||||
{
|
{
|
||||||
if (cit->internalOrBoundaryDualVertex())
|
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));
|
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++;
|
dualVertI++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -423,10 +423,10 @@ void Foam::conformalVoronoiMesh::writeMesh
|
|||||||
|
|
||||||
patches.setSize(nValidPatches);
|
patches.setSize(nValidPatches);
|
||||||
|
|
||||||
mesh.addFvPatches(patches);
|
// mesh.addFvPatches(patches);
|
||||||
|
|
||||||
// Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
|
Info<< "ADDPATCHES NOT IN PARALLEL" << endl;
|
||||||
// mesh.addFvPatches(patches, false);
|
mesh.addFvPatches(patches, false);
|
||||||
|
|
||||||
if (!mesh.write())
|
if (!mesh.write())
|
||||||
{
|
{
|
||||||
@ -456,7 +456,7 @@ void Foam::conformalVoronoiMesh::writeMesh
|
|||||||
|
|
||||||
// cellCs.write();
|
// cellCs.write();
|
||||||
|
|
||||||
writeCellSizes(mesh);
|
// writeCellSizes(mesh);
|
||||||
|
|
||||||
findRemainingProtrusionSet(mesh);
|
findRemainingProtrusionSet(mesh);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user