Printing of bounding box of patches

This commit is contained in:
mattijs 2008-05-16 14:00:22 +01:00
parent 9923752218
commit 4b5809ea7b
3 changed files with 47 additions and 30 deletions

View File

@ -101,7 +101,7 @@ int main(int argc, char *argv[])
if (!noTopology) if (!noTopology)
{ {
noFailedChecks += checkTopology(mesh, allTopology); noFailedChecks += checkTopology(mesh, allTopology, allGeometry);
} }
noFailedChecks += checkGeometry(mesh, allGeometry); noFailedChecks += checkGeometry(mesh, allGeometry);

View File

@ -7,7 +7,12 @@
#include "pointSet.H" #include "pointSet.H"
#include "IOmanip.H" #include "IOmanip.H"
Foam::label Foam::checkTopology(const polyMesh& mesh, const bool allTopology) Foam::label Foam::checkTopology
(
const polyMesh& mesh,
const bool allTopology,
const bool allGeometry
)
{ {
label noFailedChecks = 0; label noFailedChecks = 0;
@ -142,39 +147,38 @@ Foam::label Foam::checkTopology(const polyMesh& mesh, const bool allTopology)
<< setw(20) << "Patch" << setw(20) << "Patch"
<< setw(9) << "Faces" << setw(9) << "Faces"
<< setw(9) << "Points" << setw(9) << "Points"
<< " Surface" << endl; << setw(34) << "Surface topology";
if (allGeometry)
{
Pout<< " Bounding box";
}
Pout<< endl;
forAll(patches, patchI) forAll(patches, patchI)
{ {
const polyPatch& pp = patches[patchI]; const polyPatch& pp = patches[patchI];
Pout<< " "
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints();
primitivePatch::surfaceTopo pTyp = pp.surfaceType(); primitivePatch::surfaceTopo pTyp = pp.surfaceType();
if (pp.size() == 0) if (pp.size() == 0)
{ {
Pout<< " " Pout<< setw(34) << "ok (empty)";
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints()
<< " ok (empty)" << endl;
} }
else if (pTyp == primitivePatch::MANIFOLD) else if (pTyp == primitivePatch::MANIFOLD)
{ {
if (pp.checkPointManifold(true, &points)) if (pp.checkPointManifold(true, &points))
{ {
Pout<< " " Pout<< setw(34) << "multiply connected (shared point)";
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints()
<< " multiply connected (shared point)" << endl;
} }
else else
{ {
Pout<< " " Pout<< setw(34) << "ok (closed singly connected)";
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints()
<< " ok (closed singly connected surface)" << endl;
} }
// Add points on non-manifold edges to make set complete // Add points on non-manifold edges to make set complete
@ -186,22 +190,35 @@ Foam::label Foam::checkTopology(const polyMesh& mesh, const bool allTopology)
if (pTyp == primitivePatch::OPEN) if (pTyp == primitivePatch::OPEN)
{ {
Pout<< " " Pout<< setw(34) << "ok (non-closed singly connected)";
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints()
<< " ok (not multiply connected)" << endl;
} }
else else
{ {
Pout<< " " Pout<< setw(34) << "multiply connected (shared edge)";
<< setw(20) << pp.name()
<< setw(9) << pp.size()
<< setw(9) << pp.nPoints()
<< " multiply connected surface (shared edge)"
<< endl;
} }
} }
if (allGeometry)
{
const pointField& pts = pp.points();
const labelList& mp = pp.meshPoints();
boundBox bb(vector::zero, vector::zero);
if (returnReduce(mp.size(), sumOp<label>()) > 0)
{
bb.min() = pts[mp[0]];
bb.max() = pts[mp[0]];
for (label i = 1; i < mp.size(); i++)
{
bb.min() = min(bb.min(), pts[mp[i]]);
bb.max() = max(bb.max(), pts[mp[i]]);
}
reduce(bb.min(), minOp<vector>());
reduce(bb.max(), maxOp<vector>());
}
Pout<< ' ' << bb;
}
Pout<< endl;
} }
if (points.size() > 0) if (points.size() > 0)

View File

@ -4,5 +4,5 @@ namespace Foam
{ {
class polyMesh; class polyMesh;
label checkTopology(const polyMesh& mesh, const bool allTopology); label checkTopology(const polyMesh&, const bool, const bool);
} }