From 6332308c57f62d34c2531cfa13a0e01de17968c4 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Wed, 6 Jun 2012 15:14:48 +0100 Subject: [PATCH] edgeMesh: renamed edgeFormats edgeMeshFormats --- .../edgeMeshFormats/edgeMeshFormatsCore.C | 199 ++++++++++++++++++ .../edgeMeshFormats/edgeMeshFormatsCore.H | 124 +++++++++++ 2 files changed, 323 insertions(+) create mode 100644 src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C create mode 100644 src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H diff --git a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C b/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C new file mode 100644 index 00000000000..05385ce662e --- /dev/null +++ b/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C @@ -0,0 +1,199 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "edgeMeshFormatsCore.H" + +#include "Time.H" +#include "IFstream.H" +#include "OFstream.H" +#include "edgeMesh.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +Foam::word Foam::fileFormats::edgeMeshFormatsCore::nativeExt("eMesh"); + + +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +Foam::string Foam::fileFormats::edgeMeshFormatsCore::getLineNoComment +( + IFstream& is +) +{ + string line; + do + { + is.getLine(line); + } + while ((line.empty() || line[0] == '#') && is.good()); + + return line; +} + + +#if 0 +Foam::fileName Foam::fileFormats::edgeMeshFormatsCore::localMeshFileName +( + const word& meshName +) +{ + const word name(meshName.size() ? meshName : surfaceRegistry::defaultName); + + return fileName + ( + surfaceRegistry::prefix/name/surfMesh::meshSubDir + / name + "." + nativeExt + ); +} + + +Foam::fileName Foam::fileFormats::edgeMeshFormatsCore::findMeshInstance +( + const Time& t, + const word& meshName +) +{ + fileName localName = localMeshFileName(meshName); + + // Search back through the time directories list to find the time + // closest to and lower than current time + + instantList ts = t.times(); + label instanceI; + + for (instanceI = ts.size()-1; instanceI >= 0; --instanceI) + { + if (ts[instanceI].value() <= t.timeOutputValue()) + { + break; + } + } + + // Noting that the current directory has already been searched + // for mesh data, start searching from the previously stored time directory + + if (instanceI >= 0) + { + for (label i = instanceI; i >= 0; --i) + { + if (isFile(t.path()/ts[i].name()/localName)) + { + return ts[i].name(); + } + } + } + + return "constant"; +} + + +Foam::fileName Foam::fileFormats::edgeMeshFormatsCore::findMeshFile +( + const Time& t, + const word& meshName +) +{ + fileName localName = localMeshFileName(meshName); + + // Search back through the time directories list to find the time + // closest to and lower than current time + + instantList ts = t.times(); + label instanceI; + + for (instanceI = ts.size()-1; instanceI >= 0; --instanceI) + { + if (ts[instanceI].value() <= t.timeOutputValue()) + { + break; + } + } + + // Noting that the current directory has already been searched + // for mesh data, start searching from the previously stored time directory + + if (instanceI >= 0) + { + for (label i = instanceI; i >= 0; --i) + { + fileName testName(t.path()/ts[i].name()/localName); + + if (isFile(testName)) + { + return testName; + } + } + } + + // fallback to "constant" + return t.path()/"constant"/localName; +} +#endif + + +bool Foam::fileFormats::edgeMeshFormatsCore::checkSupport +( + const wordHashSet& available, + const word& ext, + const bool verbose, + const word& functionName +) +{ + if (available.found(ext)) + { + return true; + } + else if (verbose) + { + wordList known = available.sortedToc(); + + Info<<"Unknown file extension for " << functionName + << " : " << ext << nl + <<"Valid types: ("; + // compact output: + forAll(known, i) + { + Info<<" " << known[i]; + } + Info<<" )" << endl; + } + + return false; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::fileFormats::edgeMeshFormatsCore::edgeMeshFormatsCore() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::fileFormats::edgeMeshFormatsCore::~edgeMeshFormatsCore() +{} + + +// ************************************************************************* // diff --git a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H b/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H new file mode 100644 index 00000000000..42e92394eed --- /dev/null +++ b/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H @@ -0,0 +1,124 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ 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 <http://www.gnu.org/licenses/>. + +Class + Foam::fileFormats::edgeMeshFormatsCore + +Description + A collection of helper functions for reading/writing edge formats. + +SourceFiles + edgeMeshFormatsCore.C + +\*---------------------------------------------------------------------------*/ + +#ifndef edgeMeshFormatsCore_H +#define edgeMeshFormatsCore_H + +#include "Map.H" +#include "HashSet.H" +#include "labelList.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of classes + +class IFstream; +class Time; + +namespace fileFormats +{ + +/*---------------------------------------------------------------------------*\ + Class edgeMeshFormatsCore Declaration +\*---------------------------------------------------------------------------*/ + +class edgeMeshFormatsCore +{ +protected: + + // Protected Member Functions + + //- Read non-comment line + static string getLineNoComment(IFstream&); + +public: + + // Static Data + + //- The file extension corresponding to 'native' edge format + // Normally "eMesh" (edge-mesh) + static word nativeExt; + + // Static Member Functions + + static bool checkSupport + ( + const wordHashSet& available, + const word& ext, + const bool verbose, + const word& functionName + ); + + // //- Return the local file name (within time directory) + // // NEEDS FIXING + // static fileName localMeshFileName(const word& edgeName=""); + + // //- Find instance with edgeName + // // NEEDS FIXING + // static fileName findMeshInstance + // ( + // const Time&, + // const word& edgeName="" + // ); + + // //- Find mesh file with edgeName + // // NEEDS FIXING + // static fileName findMeshFile(const Time&, const word& edgeName=""); + + + // Constructors + + //- Construct null + edgeMeshFormatsCore(); + + + //- Destructor + virtual ~edgeMeshFormatsCore(); + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace fileFormats +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // -- GitLab