/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration |
\\ / A nd | For copyright notice see file Copyright
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
foam-extend is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with foam-extend. If not, see .
Description
For mesh debugging: writes mesh as three separate OBJ files which can
be viewed with e.g. javaview.
meshPoints_XXX.obj : all points and edges as lines.
meshFaceCentres_XXX.obj : all face centres.
meshCellCentres_XXX.obj : all cell centres.
patch_YYY_XXX.obj : all face centres of patch YYY
Optional: - patch faces (as polygons) : patchFaces_YYY_XXX.obj
- non-manifold edges : patchEdges_YYY_XXX.obj
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "timeSelector.H"
#include "objectRegistry.H"
#include "Time.H"
#include "polyMesh.H"
#include "OFstream.H"
#include "meshTools.H"
#include "cellSet.H"
#include "faceSet.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void writeOBJ(const point& pt, Ostream& os)
{
os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl;
}
// All edges of mesh
void writePoints(const polyMesh& mesh, const fileName& timeName)
{
label vertI = 0;
fileName pointFile(mesh.time().path()/"meshPoints_" + timeName + ".obj");
Info << "Writing mesh points and edges to " << pointFile << endl;
OFstream pointStream(pointFile);
forAll(mesh.points(), pointI)
{
writeOBJ(mesh.points()[pointI], pointStream);
vertI++;
}
forAll(mesh.edges(), edgeI)
{
const edge& e = mesh.edges()[edgeI];
pointStream << "l " << e.start() + 1 << ' ' << e.end() + 1 << nl;
}
}
// Edges for subset of cells
void writePoints
(
const polyMesh& mesh,
const labelList& cellLabels,
const fileName& timeName
)
{
fileName fName(mesh.time().path()/"meshPoints_" + timeName + ".obj");
Info << "Writing mesh points and edges to " << fName << endl;
OFstream str(fName);
// OBJ file vertex
label vertI = 0;
// From point to OBJ file vertex
Map