From a5179ff417a7f20745e7f67b940eac6ee877e482 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 19 Nov 2008 18:39:47 +0100 Subject: [PATCH] surfMesh changes - use new HashSet capabilities and sortedOrder function - make STL format a MeshedSurface instead of an UnsortedMeshedSurface for better (MeshedSurface) reader efficiency --- src/surfMesh/MeshedSurface/MeshedSurface.C | 49 ++++------- src/surfMesh/MeshedSurface/MeshedSurfaceNew.C | 2 +- .../UnsortedMeshedSurface.C | 51 ++++------- .../surfaceFormats/ac3d/AC3DsurfaceFormat.H | 34 ++++---- .../ac3d/AC3DsurfaceFormatRunTime.C | 8 +- .../surfaceFormats/gts/GTSsurfaceFormat.H | 34 ++++---- .../gts/GTSsurfaceFormatRunTime.C | 9 +- .../surfaceFormats/obj/OBJsurfaceFormat.H | 34 ++++---- .../obj/OBJsurfaceFormatRunTime.C | 38 ++++----- .../surfaceFormats/smesh/SMESHsurfaceFormat.H | 34 ++++---- .../smesh/SMESHsurfaceFormatRunTime.C | 9 +- .../starcd/STARCDsurfaceFormat.H | 14 +-- .../starcd/STARCDsurfaceFormatRunTime.C | 8 +- .../surfaceFormats/stl/STLsurfaceFormat.C | 74 +++++++++++----- .../surfaceFormats/stl/STLsurfaceFormat.H | 41 ++++----- .../stl/STLsurfaceFormatASCII.L | 45 +++++----- .../surfaceFormats/stl/STLsurfaceFormatCore.C | 41 ++++++--- .../surfaceFormats/stl/STLsurfaceFormatCore.H | 21 ++--- .../stl/STLsurfaceFormatRunTime.C | 85 +++++++++---------- .../surfaceFormats/surfaceFormatsCore.C | 1 + .../surfaceFormats/tri/TRIsurfaceFormat.C | 8 +- .../surfaceFormats/tri/TRIsurfaceFormat.H | 34 ++++---- .../tri/TRIsurfaceFormatRunTime.C | 9 +- .../surfaceFormats/vtk/VTKsurfaceFormat.H | 34 ++++---- .../vtk/VTKsurfaceFormatRunTime.C | 38 ++++----- 25 files changed, 379 insertions(+), 376 deletions(-) diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.C b/src/surfMesh/MeshedSurface/MeshedSurface.C index 65561dfcb7..cb4f795bc6 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -29,7 +29,6 @@ License #include "IFstream.H" #include "OFstream.H" #include "Time.H" -#include "SortableList.H" #include "ListOps.H" #include "polyBoundaryMesh.H" #include "polyMesh.H" @@ -42,38 +41,14 @@ License template Foam::wordHashSet Foam::MeshedSurface::readTypes() { - wordHashSet known(2*fileExtensionConstructorTablePtr_->size()); - - forAllIter - ( - typename fileExtensionConstructorTable::iterator, - *fileExtensionConstructorTablePtr_, - iter - ) - { - known.insert(iter.key()); - } - - return known; + return wordHashSet(*fileExtensionConstructorTablePtr_); } template Foam::wordHashSet Foam::MeshedSurface::writeTypes() { - wordHashSet supported(2*writefileExtensionMemberFunctionTablePtr_->size()); - - forAllIter - ( - typename writefileExtensionMemberFunctionTable::iterator, - *writefileExtensionMemberFunctionTablePtr_, - iter - ) - { - supported.insert(iter.key()); - } - - return supported; + return wordHashSet(*writefileExtensionMemberFunctionTablePtr_); } @@ -91,11 +66,16 @@ bool Foam::MeshedSurface::canReadType { return true; } - - wordHashSet available = readTypes(); - available += SiblingType::readTypes(); - - return checkSupport(available, ext, verbose, "reading"); + else + { + return checkSupport + ( + readTypes() | SiblingType::readTypes(), + ext, + verbose, + "reading" + ); + } } @@ -141,8 +121,9 @@ void Foam::MeshedSurface::write { if (debug) { - Info<< "MeshedSurface::write(const fileName&, const MeshedSurface&) : " - "writing MeshedSurface to " << fName + Info<< "MeshedSurface::write" + "(const fileName&, const MeshedSurface&) : " + "writing to " << fName << endl; } diff --git a/src/surfMesh/MeshedSurface/MeshedSurfaceNew.C b/src/surfMesh/MeshedSurface/MeshedSurfaceNew.C index 07d2110f2d..b37bc84020 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurfaceNew.C +++ b/src/surfMesh/MeshedSurface/MeshedSurfaceNew.C @@ -69,7 +69,7 @@ Foam::MeshedSurface::New ( "MeshedSurface::New" "(const fileName&, const word&) : " - "constructing UnsortedMeshedSurface" + "constructing MeshedSurface" ) << "Unknown file extension " << ext << nl << nl << "Valid types are :" << nl << supported diff --git a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C index 2804d867db..a4273ec540 100644 --- a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C +++ b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C @@ -29,11 +29,8 @@ License #include "IFstream.H" #include "OFstream.H" #include "Time.H" -#include "boundBox.H" #include "polyBoundaryMesh.H" #include "polyMesh.H" -#include "primitivePatch.H" -#include "SortableList.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -42,38 +39,14 @@ License template Foam::wordHashSet Foam::UnsortedMeshedSurface::readTypes() { - wordHashSet supported(2*fileExtensionConstructorTablePtr_->size()); - - forAllIter - ( - typename fileExtensionConstructorTable::iterator, - *fileExtensionConstructorTablePtr_, - iter - ) - { - supported.insert(iter.key()); - } - - return supported; + return wordHashSet(*fileExtensionConstructorTablePtr_); } template Foam::wordHashSet Foam::UnsortedMeshedSurface::writeTypes() { - wordHashSet supported(2*writefileExtensionMemberFunctionTablePtr_->size()); - - forAllIter - ( - typename writefileExtensionMemberFunctionTable::iterator, - *writefileExtensionMemberFunctionTablePtr_, - iter - ) - { - supported.insert(iter.key()); - } - - return supported; + return wordHashSet(*writefileExtensionMemberFunctionTablePtr_); } @@ -89,11 +62,16 @@ bool Foam::UnsortedMeshedSurface::canReadType { return true; } - - wordHashSet available = readTypes(); - available += SiblingType::readTypes();; - - return checkSupport(available, ext, verbose, "reading"); + else + { + return checkSupport + ( + readTypes() | SiblingType::readTypes(), + ext, + verbose, + "reading" + ); + } } @@ -139,8 +117,9 @@ void Foam::UnsortedMeshedSurface::write { if (debug) { - Info<< "UnsortedMeshedSurface::write(const fileName&, const UnsortedMeshedSurface&) : " - "writing UnsortedMeshedSurface to " << fName + Info<< "UnsortedMeshedSurface::write" + "(const fileName&, const UnsortedMeshedSurface&) : " + "writing to " << fName << endl; } diff --git a/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormat.H b/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormat.H index 779a85ba7a..b95dfd7e20 100644 --- a/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormat.H +++ b/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormat.H @@ -107,6 +107,23 @@ public: //- Read from file virtual bool read(const fileName&); + //- Write MeshedSurface + static void write + ( + Ostream&, + const MeshedSurface& + ); + + //- Write MeshedSurface + static void write + ( + const fileName& fName, + const MeshedSurface& surf + ) + { + write(OFstream(fName)(), surf); + } + //- Write UnsortedMeshedSurface // The output is always sorted by regions. static void write @@ -126,23 +143,6 @@ public: write(OFstream(fName)(), surf); } - //- Write MeshedSurface - static void write - ( - Ostream&, - const MeshedSurface& - ); - - //- Write MeshedSurface - static void write - ( - const fileName& fName, - const MeshedSurface& surf - ) - { - write(OFstream(fName)(), surf); - } - //- Write object virtual void write(Ostream& os) const { diff --git a/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormatRunTime.C b/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormatRunTime.C index 852622a8dc..6e2ea87e91 100644 --- a/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormatRunTime.C +++ b/src/surfMesh/surfaceFormats/ac3d/AC3DsurfaceFormatRunTime.C @@ -56,7 +56,7 @@ addNamedTemplatedToRunTimeSelectionTable addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, AC3DsurfaceFormat, face, write, @@ -65,7 +65,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, AC3DsurfaceFormat, triFace, write, @@ -76,7 +76,7 @@ addNamedTemplatedToMemberFunctionSelectionTable addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, AC3DsurfaceFormat, face, write, @@ -85,7 +85,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, AC3DsurfaceFormat, triFace, write, diff --git a/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormat.H b/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormat.H index 1e22ffec4d..fefe168db8 100644 --- a/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormat.H +++ b/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormat.H @@ -95,6 +95,23 @@ public: //- Read from file virtual bool read(const fileName&); + //- Write MeshedSurface + static void write + ( + Ostream&, + const MeshedSurface& + ); + + //- Write MeshedSurface + static void write + ( + const fileName& fName, + const MeshedSurface& surf + ) + { + write(OFstream(fName)(), surf); + } + //- Write UnsortedMeshedSurface // The output is sorted by regions static void write @@ -114,23 +131,6 @@ public: write(OFstream(fName)(), surf); } - //- Write MeshedSurface - static void write - ( - Ostream&, - const MeshedSurface& - ); - - //- Write MeshedSurface - static void write - ( - const fileName& fName, - const MeshedSurface& surf - ) - { - write(OFstream(fName)(), surf); - } - //- Write object virtual void write(Ostream& os) const { diff --git a/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormatRunTime.C b/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormatRunTime.C index a090693ff5..1675ee289a 100644 --- a/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormatRunTime.C +++ b/src/surfMesh/surfaceFormats/gts/GTSsurfaceFormatRunTime.C @@ -55,7 +55,7 @@ addNamedTemplatedToRunTimeSelectionTable addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, GTSsurfaceFormat, face, write, @@ -64,7 +64,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, GTSsurfaceFormat, triFace, write, @@ -72,10 +72,9 @@ addNamedTemplatedToMemberFunctionSelectionTable gts ); - addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, GTSsurfaceFormat, face, write, @@ -84,7 +83,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, GTSsurfaceFormat, triFace, write, diff --git a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.H b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.H index e5c9d92b60..6545592730 100644 --- a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.H +++ b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.H @@ -109,6 +109,23 @@ public: //- Read from file virtual bool read(const fileName&); + //- Write MeshedSurface + static void write + ( + Ostream&, + const MeshedSurface& + ); + + //- Write MeshedSurface + static void write + ( + const fileName& fName, + const MeshedSurface& surf + ) + { + write(OFstream(fName)(), surf); + } + //- Write UnsortedMeshedSurface // The output is sorted by regions static void write @@ -128,23 +145,6 @@ public: write(OFstream(fName)(), surf); } - //- Write MeshedSurface - static void write - ( - Ostream&, - const MeshedSurface& - ); - - //- Write MeshedSurface - static void write - ( - const fileName& fName, - const MeshedSurface& surf - ) - { - write(OFstream(fName)(), surf); - } - //- Write object virtual void write(Ostream& os) const { diff --git a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormatRunTime.C b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormatRunTime.C index f7ec748294..64bc69760f 100644 --- a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormatRunTime.C +++ b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormatRunTime.C @@ -54,6 +54,25 @@ addNamedTemplatedToRunTimeSelectionTable ); +addNamedTemplatedToMemberFunctionSelectionTable +( + MeshedSurface, + OBJsurfaceFormat, + face, + write, + fileExtension, + obj +); +addNamedTemplatedToMemberFunctionSelectionTable +( + MeshedSurface, + OBJsurfaceFormat, + triFace, + write, + fileExtension, + obj +); + addNamedTemplatedToMemberFunctionSelectionTable ( UnsortedMeshedSurface, @@ -74,25 +93,6 @@ addNamedTemplatedToMemberFunctionSelectionTable ); -addNamedTemplatedToMemberFunctionSelectionTable -( - MeshedSurface, - OBJsurfaceFormat, - face, - write, - fileExtension, - obj -); -addNamedTemplatedToMemberFunctionSelectionTable -( - MeshedSurface, - OBJsurfaceFormat, - triFace, - write, - fileExtension, - obj -); - } } diff --git a/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormat.H b/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormat.H index 6b8e8ac695..242bacbd20 100644 --- a/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormat.H +++ b/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormat.H @@ -91,6 +91,23 @@ public: // Member Functions + //- Write MeshedSurface + static void write + ( + Ostream&, + const MeshedSurface& + ); + + //- Write MeshedSurface + static void write + ( + const fileName& fName, + const MeshedSurface& surf + ) + { + write(OFstream(fName)(), surf); + } + //- Write UnsortedMeshedSurface // The output is sorted by region. static void write @@ -110,23 +127,6 @@ public: write(OFstream(fName)(), surf); } - //- Write MeshedSurface - static void write - ( - Ostream&, - const MeshedSurface& - ); - - //- Write MeshedSurface - static void write - ( - const fileName& fName, - const MeshedSurface& surf - ) - { - write(OFstream(fName)(), surf); - } - //- Write object virtual void write(Ostream& os) const { diff --git a/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormatRunTime.C b/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormatRunTime.C index 16ab5a06dc..86cb25aa32 100644 --- a/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormatRunTime.C +++ b/src/surfMesh/surfaceFormats/smesh/SMESHsurfaceFormatRunTime.C @@ -38,7 +38,7 @@ namespace fileFormats addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, SMESHsurfaceFormat, face, write, @@ -47,7 +47,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, SMESHsurfaceFormat, triFace, write, @@ -55,10 +55,9 @@ addNamedTemplatedToMemberFunctionSelectionTable smesh ); - addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, SMESHsurfaceFormat, face, write, @@ -67,7 +66,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, SMESHsurfaceFormat, triFace, write, diff --git a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.H b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.H index 1afb83496b..6a47537881 100644 --- a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.H +++ b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.H @@ -119,6 +119,13 @@ public: //- Read from file virtual bool read(const fileName&); + //- Write MeshedSurface + static void write + ( + const fileName&, + const MeshedSurface& + ); + //- Write UnsortedMeshedSurface // The output is sorted by regions static void write @@ -127,13 +134,6 @@ public: const UnsortedMeshedSurface& ); - //- Write MeshedSurface - static void write - ( - const fileName&, - const MeshedSurface& - ); - //- Write to Ostream as one large file - not really useful virtual void write(Ostream&) const { diff --git a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormatRunTime.C b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormatRunTime.C index 7f34860fea..5cf59da6c8 100644 --- a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormatRunTime.C +++ b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormatRunTime.C @@ -56,7 +56,7 @@ addNamedTemplatedToRunTimeSelectionTable addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, STARCDsurfaceFormat, face, write, @@ -65,7 +65,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - UnsortedMeshedSurface, + MeshedSurface, STARCDsurfaceFormat, triFace, write, @@ -76,7 +76,7 @@ addNamedTemplatedToMemberFunctionSelectionTable addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, STARCDsurfaceFormat, face, write, @@ -85,7 +85,7 @@ addNamedTemplatedToMemberFunctionSelectionTable ); addNamedTemplatedToMemberFunctionSelectionTable ( - MeshedSurface, + UnsortedMeshedSurface, STARCDsurfaceFormat, triFace, write, diff --git a/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C b/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C index cce059b27a..5367e130a6 100644 --- a/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C @@ -25,6 +25,7 @@ License \*---------------------------------------------------------------------------*/ #include "STLsurfaceFormat.H" +#include "ListOps.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -289,35 +290,70 @@ bool Foam::fileFormats::STLsurfaceFormat::read // read in the values STLsurfaceFormatCore reader(fName); - // generate the faces: - List& faceLst = this->storedFaces(); - faceLst.setSize(reader.regions().size()); - - // transfer + // transfer points this->storedPoints().transfer(reader.points()); - this->storedRegions().transfer(reader.regions()); - label ptI = 0; - forAll(faceLst, faceI) + // get the original region information + List names(xferMove(reader.names())); + List