Skip to content
Snippets Groups Projects
Commit 9b24f6c5 authored by Mark Olesen's avatar Mark Olesen
Browse files

ENH: add first provisioning for foamToVTK without polyhedral decomposition

parent dae4d905
No related merge requests found
......@@ -262,6 +262,14 @@ int main(int argc, char *argv[])
"ascii",
"write in ASCII format instead of binary"
);
/*
argList::addBoolOption
(
"noDecompose",
"do not decompose polyhedral cells into tets/prism cells"
"- NOT YET IMPLEMENTED"
);
*/
argList::addBoolOption
(
"surfaceFields",
......@@ -318,6 +326,10 @@ int main(int argc, char *argv[])
const bool binary = !args.optionFound("ascii");
const bool useTimeName = args.optionFound("useTimeName");
// decomposition of polyhedral cells into tets/prism cells
// vtkTopo::decomposePoly = !args.optionFound("noDecompose");
if (binary && (sizeof(floatScalar) != 4 || sizeof(label) != 4))
{
FatalErrorIn(args.executable())
......
......@@ -34,6 +34,11 @@ Description
#include "cellModeller.H"
#include "Swap.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
bool Foam::vtkTopo::decomposePoly = true;
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::vtkTopo::vtkTopo(const polyMesh& mesh)
......@@ -50,10 +55,8 @@ Foam::vtkTopo::vtkTopo(const polyMesh& mesh)
const cellModel& tetWedge = *(cellModeller::lookup("tetWedge"));
const cellModel& hex = *(cellModeller::lookup("hex"));
const cellShapeList& cellShapes = mesh_.cellShapes();
// Number of additional points needed by the decomposition of polyhedra
label nAddPoints = 0;
......@@ -65,38 +68,45 @@ Foam::vtkTopo::vtkTopo(const polyMesh& mesh)
// Scan for cells which need to be decomposed and count additional points
// and cells
forAll(cellShapes, cellI)
if (decomposePoly)
{
const cellModel& model = cellShapes[cellI].model();
if
(
model != hex
// && model != wedge // See above.
&& model != prism
&& model != pyr
&& model != tet
&& model != tetWedge
)
forAll(cellShapes, cellI)
{
const cell& cFaces = mesh_.cells()[cellI];
forAll(cFaces, cFaceI)
const cellModel& model = cellShapes[cellI].model();
if
(
model != hex
// && model != wedge // See above.
&& model != prism
&& model != pyr
&& model != tet
&& model != tetWedge
)
{
const face& f = mesh_.faces()[cFaces[cFaceI]];
const cell& cFaces = mesh_.cells()[cellI];
label nQuads = 0;
label nTris = 0;
f.nTrianglesQuads(mesh_.points(), nTris, nQuads);
forAll(cFaces, cFaceI)
{
const face& f = mesh_.faces()[cFaces[cFaceI]];
nAddCells += nQuads + nTris;
}
label nQuads = 0;
label nTris = 0;
f.nTrianglesQuads(mesh_.points(), nTris, nQuads);
nAddCells--;
nAddPoints++;
nAddCells += nQuads + nTris;
}
nAddCells--;
nAddPoints++;
}
}
}
else
{
notImplemented("vtkTopo: non-decomposed polyhedron");
}
// Set size of additional point addressing array
// (from added point to original cell)
......@@ -179,7 +189,7 @@ Foam::vtkTopo::vtkTopo(const polyMesh& mesh)
cellTypes_[cellI] = VTK_HEXAHEDRON;
}
else
else if (decomposePoly)
{
// Polyhedral cell. Decompose into tets + prisms.
......@@ -300,13 +310,23 @@ Foam::vtkTopo::vtkTopo(const polyMesh& mesh)
addPointI++;
}
else
{
// Polyhedral cell - not decomposed
cellTypes_[cellI] = VTK_POLYHEDRON;
}
}
if (decomposePoly)
{
Pout<< " Original cells:" << mesh_.nCells()
<< " points:" << mesh_.nPoints()
<< " Additional cells:" << superCells_.size()
<< " additional points:" << addPointCellLabels_.size()
<< nl << endl;
}
Pout<< " Original cells:" << mesh_.nCells()
<< " points:" << mesh_.nPoints()
<< " Additional cells:" << superCells_.size()
<< " additional points:" << addPointCellLabels_.size()
<< nl << endl;
}
// ************************************************************************* //
......@@ -93,11 +93,14 @@ public:
VTK_POLYHEDRON = 42
};
//- Enable/disable polyhedron decomposition. Default = true
static bool decomposePoly;
// Constructors
//- Construct from components
vtkTopo(const polyMesh& mesh);
vtkTopo(const polyMesh&);
// Member Functions
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment