BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / edgeMesh / edgeFormats / edgeFormatsCore.C
blob8385bbf2f567b2aa667d5ba2f253bbdf9bf78112
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
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
19     for more details.
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 "edgeFormatsCore.H"
28 #include "Time.H"
29 #include "IFstream.H"
30 #include "OFstream.H"
31 #include "edgeMesh.H"
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
35 Foam::word Foam::fileFormats::edgeFormatsCore::nativeExt("eMesh");
38 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
40 Foam::string Foam::fileFormats::edgeFormatsCore::getLineNoComment
42     IFstream& is
45     string line;
46     do
47     {
48         is.getLine(line);
49     }
50     while ((line.empty() || line[0] == '#') && is.good());
52     return line;
56 #if 0
57 Foam::fileName Foam::fileFormats::edgeFormatsCore::localMeshFileName
59     const word& meshName
62     const word name(meshName.size() ? meshName : surfaceRegistry::defaultName);
64     return fileName
65     (
66         surfaceRegistry::prefix/name/surfMesh::meshSubDir
67       / name + "." + nativeExt
68     );
72 Foam::fileName Foam::fileFormats::edgeFormatsCore::findMeshInstance
74     const Time& t,
75     const word& meshName
78     fileName localName = localMeshFileName(meshName);
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();
84     label instanceI;
86     for (instanceI = ts.size()-1; instanceI >= 0; --instanceI)
87     {
88         if (ts[instanceI].value() <= t.timeOutputValue())
89         {
90             break;
91         }
92     }
94     // Noting that the current directory has already been searched
95     // for mesh data, start searching from the previously stored time directory
97     if (instanceI >= 0)
98     {
99         for (label i = instanceI; i >= 0; --i)
100         {
101             if (isFile(t.path()/ts[i].name()/localName))
102             {
103                 return ts[i].name();
104             }
105         }
106     }
108     return "constant";
112 Foam::fileName Foam::fileFormats::edgeFormatsCore::findMeshFile
114     const Time& t,
115     const word& meshName
118     fileName localName = localMeshFileName(meshName);
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();
124     label instanceI;
126     for (instanceI = ts.size()-1; instanceI >= 0; --instanceI)
127     {
128         if (ts[instanceI].value() <= t.timeOutputValue())
129         {
130             break;
131         }
132     }
134     // Noting that the current directory has already been searched
135     // for mesh data, start searching from the previously stored time directory
137     if (instanceI >= 0)
138     {
139         for (label i = instanceI; i >= 0; --i)
140         {
141             fileName testName(t.path()/ts[i].name()/localName);
143             if (isFile(testName))
144             {
145                 return testName;
146             }
147         }
148     }
150     // fallback to "constant"
151     return t.path()/"constant"/localName;
153 #endif
156 bool Foam::fileFormats::edgeFormatsCore::checkSupport
158     const wordHashSet& available,
159     const word& ext,
160     const bool verbose,
161     const word& functionName
164     if (available.found(ext))
165     {
166         return true;
167     }
168     else if (verbose)
169     {
170         wordList known = available.sortedToc();
172         Info<<"Unknown file extension for " << functionName
173             << " : " << ext << nl
174             <<"Valid types: (";
175         // compact output:
176         forAll(known, i)
177         {
178             Info<<" " << known[i];
179         }
180         Info<<" )" << endl;
181     }
183     return false;
187 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
189 Foam::fileFormats::edgeFormatsCore::edgeFormatsCore()
193 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
195 Foam::fileFormats::edgeFormatsCore::~edgeFormatsCore()
199 // ************************************************************************* //