/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM 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. OpenFOAM 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 OpenFOAM. If not, see . Class Foam::ensightMesh Description SourceFiles ensightMesh.C \*---------------------------------------------------------------------------*/ #ifndef ensightMesh_H #define ensightMesh_H #include "cellSets.H" #include "faceSets.H" #include "HashTable.H" #include "HashSet.H" #include "fvMesh.H" #include "OFstream.H" #include #include "PackedBoolList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { class fvMesh; class argList; class globalIndex; /*---------------------------------------------------------------------------*\ Class ensightMesh Declaration \*---------------------------------------------------------------------------*/ class ensightMesh { public: class nFacePrimitives { public: label nTris; label nQuads; label nPolys; nFacePrimitives() : nTris(0), nQuads(0), nPolys(0) {} }; private: // Private data //- Reference to the OpenFOAM mesh const fvMesh& mesh_; //- Set binary file output bool binary_; //- The ensight part id for the first patch label patchPartOffset_; cellSets meshCellSets_; List boundaryFaceSets_; wordList allPatchNames_; wordHashSet patchNames_; HashTable nPatchPrims_; // faceZone - related variables List faceZoneFaceSets_; wordHashSet faceZoneNames_; HashTable nFaceZonePrims_; //- Per boundary face whether to include or not PackedBoolList boundaryFaceToBeIncluded_; // Private Member Functions //- Disallow default bitwise copy construct ensightMesh(const ensightMesh&); //- Disallow default bitwise assignment void operator=(const ensightMesh&); void writePoints ( const scalarField& pointsComponent, OFstream& ensightGeometryFile ) const; cellShapeList map ( const cellShapeList& cellShapes, const labelList& prims, const labelList& pointToGlobal ) const; cellShapeList map ( const cellShapeList& cellShapes, const labelList& hexes, const labelList& wedges, const labelList& pointToGlobal ) const; void writePrims ( const cellShapeList& cellShapes, OFstream& ensightGeometryFile ) const; void writePolysNFaces ( const labelList& polys, const cellList& cellFaces, OFstream& ensightGeometryFile ) const; void writePolysNPointsPerFace ( const labelList& polys, const cellList& cellFaces, const faceList& faces, OFstream& ensightGeometryFile ) const; void writePolysPoints ( const labelList& polys, const cellList& cellFaces, const faceList& faces, OFstream& ensightGeometryFile ) const; void writeAllPolys ( const labelList& pointToGlobal, OFstream& ensightGeometryFile ) const; void writeAllPrims ( const char* key, const label nPrims, const cellShapeList& cellShapes, OFstream& ensightGeometryFile ) const; void writeFacePrims ( const faceList& patchFaces, OFstream& ensightGeometryFile ) const; void writeAllFacePrims ( const char* key, const labelList& prims, const label nPrims, const faceList& patchFaces, OFstream& ensightGeometryFile ) const; void writeNSidedNPointsPerFace ( const faceList& patchFaces, OFstream& ensightGeometryFile ) const; void writeNSidedPoints ( const faceList& patchFaces, OFstream& ensightGeometryFile ) const; void writeAllNSided ( const labelList& prims, const label nPrims, const faceList& patchFaces, OFstream& ensightGeometryFile ) const; void writeAllInternalPoints ( const pointField& uniquePoints, const label nPoints, OFstream& ensightGeometryFile ) const; void writeAllPatchPoints ( label ensightPatchI, const word& patchName, const pointField& uniquePoints, const label nPoints, OFstream& ensightGeometryFile ) const; void writeAllInternalPointsBinary ( const pointField& uniquePoints, const label nPoints, std::ofstream& ensightGeometryFile ) const; void writeAllPatchPointsBinary ( label ensightPatchI, const word& patchName, const pointField& uniquePoints, const label nPoints, std::ofstream& ensightGeometryFile ) const; void writeAscii ( const fileName& postProcPath, const word& prepend, const label timeIndex, Ostream& ensightCaseFile, const labelList& pointToGlobal, const pointField& uniquePoints, const globalIndex& globalPoints ) const; void writeBinary ( const fileName& postProcPath, const word& prepend, const label timeIndex, Ostream& ensightCaseFile, const labelList& pointToGlobal, const pointField& uniquePoints, const globalIndex& globalPoints ) const; void writePrimsBinary ( const cellShapeList& cellShapes, std::ofstream& ensightGeometryFile ) const; void writeAllPrimsBinary ( const char* key, const label nPrims, const cellShapeList& cellShapes, std::ofstream& ensightGeometryFile ) const; void writePolysNFacesBinary ( const labelList& polys, const cellList& cellFaces, std::ofstream& ensightGeometryFile ) const; void writePolysNPointsPerFaceBinary ( const labelList& polys, const cellList& cellFaces, const faceList& faces, std::ofstream& ensightGeometryFile ) const; void writePolysPointsBinary ( const labelList& polys, const cellList& cellFaces, const faceList& faces, std::ofstream& ensightGeometryFile ) const; void writeAllPolysBinary ( const labelList& pointToGlobal, std::ofstream& ensightGeometryFile ) const; void writeAllFacePrimsBinary ( const char* key, const labelList& prims, const label nPrims, const faceList& patchFaces, std::ofstream& ensightGeometryFile ) const; void writeFacePrimsBinary ( const faceList& patchFaces, std::ofstream& ensightGeometryFile ) const; void writeNSidedPointsBinary ( const faceList& patchFaces, std::ofstream& ensightGeometryFile ) const; void writeNSidedNPointsPerFaceBinary ( const faceList& patchFaces, std::ofstream& ensightGeometryFile ) const; void writeAllNSidedBinary ( const labelList& prims, const label nPrims, const faceList& patchFaces, std::ofstream& ensightGeometryFile ) const; public: // Constructors //- Construct from fvMesh ensightMesh ( const fvMesh&, const argList& args, const bool binary ); //- Destructor ~ensightMesh(); // Member Functions // Access const fvMesh& mesh() const { return mesh_; } const cellSets& meshCellSets() const { return meshCellSets_; } const List& boundaryFaceSets() const { return boundaryFaceSets_; } const wordList& allPatchNames() const { return allPatchNames_; } const wordHashSet& patchNames() const { return patchNames_; } const HashTable& nPatchPrims() const { return nPatchPrims_; } const List& faceZoneFaceSets() const { return faceZoneFaceSets_; } const wordHashSet& faceZoneNames() const { return faceZoneNames_; } const HashTable& nFaceZonePrims() const { return nFaceZonePrims_; } //- The ensight part id for the first patch label patchPartOffset() const { return patchPartOffset_; } // Other //- When exporting faceZones, check if a given face has to be included // or not (i.e. faces on processor boundaries) bool faceToBeIncluded(const label faceI) const; //- Helper to cause barrier. Necessary on Quadrics. static void barrier(); // I-O void write ( const fileName& postProcPath, const word& prepend, const label timeIndex, Ostream& ensightCaseFile ) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //