1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "surfaceFormatsCore.H"
31 #include "SortableList.H"
34 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
36 Foam::word Foam::fileFormats::surfaceFormatsCore::nativeExt("ofs");
38 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
40 Foam::string Foam::fileFormats::surfaceFormatsCore::getLineNoComment
50 while ((line.empty() || line[0] == '#') && is.good());
57 Foam::fileName Foam::fileFormats::surfaceFormatsCore::localMeshFileName
62 const word name(surfName.size() ? surfName : surfaceRegistry::defaultName);
66 surfaceRegistry::prefix/name/surfMesh::meshSubDir
67 / name + "." + nativeExt
72 Foam::fileName Foam::fileFormats::surfaceFormatsCore::findMeshInstance
78 fileName localName = localMeshFileName(surfName);
80 // Search back through the time directories list to find the time
81 // closest to and lower than current time
83 instantList ts = t.times();
86 for (instanceI = ts.size()-1; instanceI >= 0; --instanceI)
88 if (ts[instanceI].value() <= t.timeOutputValue())
94 // Noting that the current directory has already been searched
95 // for mesh data, start searching from the previously stored time directory
99 for (label i = instanceI; i >= 0; --i)
101 if (isFile(t.path()/ts[i].name()/localName))
112 Foam::fileName Foam::fileFormats::surfaceFormatsCore::findMeshFile
118 fileName localName = localMeshFileName(surfName);
120 // Search back through the time directories list to find the time
121 // closest to and lower than current time
123 instantList ts = t.times();
126 for (instanceI = ts.size()-1; instanceI >= 0; --instanceI)
128 if (ts[instanceI].value() <= t.timeOutputValue())
134 // Noting that the current directory has already been searched
135 // for mesh data, start searching from the previously stored time directory
139 for (label i = instanceI; i >= 0; --i)
141 fileName testName(t.path()/ts[i].name()/localName);
143 if (isFile(testName))
150 // fallback to "constant"
151 return t.path()/"constant"/localName;
156 bool Foam::fileFormats::surfaceFormatsCore::checkSupport
158 const wordHashSet& available,
161 const word& functionName
164 if (available.found(ext))
170 wordList toc = available.toc();
171 SortableList<word> known(toc.xfer());
173 Info<<"Unknown file extension for " << functionName
174 << " : " << ext << nl
179 Info<<" " << known[i];
188 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
190 Foam::fileFormats::surfaceFormatsCore::surfaceFormatsCore()
194 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
196 Foam::fileFormats::surfaceFormatsCore::~surfaceFormatsCore()
200 // ************************************************************************* //