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) 2011-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
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 "GeometricField.H"
29 #include "readFields.H"
30 
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 
33 template<class Type, template<class> class PatchField, class GeoMesh>
35 (
36  const typename GeoMesh::Mesh& mesh,
37  const IOobjectList& objects,
38  PtrList<GeometricField<Type, PatchField, GeoMesh>>& fields,
39  const bool readOldTime
40 )
41 {
42  typedef GeometricField<Type, PatchField, GeoMesh> GeoField;
43 
44  // Search list of objects for fields of type GeoField
45  IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName));
46 
47  // Remove the cellDist field
48  auto iter = fieldObjects.find("cellDist");
49  if (iter.found())
50  {
51  fieldObjects.erase(iter);
52  }
53 
54  // Get sorted set of names (different processors might read objects in
55  // different order)
56  const wordList masterNames(fieldObjects.sortedNames());
57 
58  // Construct the fields
59  fields.setSize(masterNames.size());
60 
61  forAll(masterNames, i)
62  {
63  const IOobject& io = *fieldObjects[masterNames[i]];
64 
65  fields.set(i, new GeoField(io, mesh, readOldTime));
66  }
67 }
68 
69 
70 template<class Mesh, class GeoField>
72 (
73  const Mesh& mesh,
74  const IOobjectList& objects,
75  PtrList<GeoField>& fields
76 )
77 {
78  // Search list of objects for fields of type GeomField
79  IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName));
80 
81  // Construct the fields
82  fields.setSize(fieldObjects.size());
83 
84  // Get sorted set of names (different processors might read objects in
85  // different order)
86  const wordList masterNames(fieldObjects.sortedNames());
87 
88  // Construct the fields
89  fields.setSize(masterNames.size());
90 
91  forAll(masterNames, i)
92  {
93  const IOobject& io = *fieldObjects[masterNames[i]];
94 
95  fields.set(i, new GeoField(io, mesh));
96  }
97 }
98 
99 
100 // ************************************************************************* //
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::wordList
List< word > wordList
A List of words.
Definition: fileName.H:59
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::readFields
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
Definition: ReadFieldsTemplates.C:312
GeometricField.H
fields
multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
Definition: createFields.H:97