readFields.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2018 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
28#include "readFields.H"
29#include "volFields.H"
30
31// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
32
33Foam::label Foam::checkData
34(
35 const fvMesh& mesh,
36 const instantList& timeDirs,
37 wordList& objectNames
38)
39{
40 // Assume prune_0() was used prior to calling this
41
42 wordHashSet goodFields;
43
44 for (const word& fieldName : objectNames)
45 {
46 bool good = false;
47
48 for (const instant& inst : timeDirs)
49 {
50 good =
51 IOobject
52 (
53 fieldName,
54 inst.name(),
55 mesh,
56 IOobject::NO_READ,
57 IOobject::NO_WRITE,
58 false // no register
59 ).typeHeaderOk<volScalarField>(false, false);
60
61 if (!good)
62 {
63 break;
64 }
65 }
66
67 reduce(good, andOp<bool>());
68
69 if (good)
70 {
71 goodFields.insert(fieldName);
72 }
73 }
74
75 objectNames = goodFields.sortedToc();
76
77 return objectNames.size();
78}
79
80
81// ************************************************************************* //
reduce(hasMovingMesh, orOp< bool >())
dynamicFvMesh & mesh
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
HashSet< word, Hash< word > > wordHashSet
A HashSet of words, uses string hasher.
Definition: HashSet.H:82
label checkData(const fvMesh &mesh, const instantList &timeDirs, wordList &objectNames)
Check if fields are good to use (available at all times)