FreeFOAM The Cross-Platform CFD Toolkit
readFieldsTemplates.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 | Copyright (C) 2010-2010 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "readFields.H"
27 #include <finiteVolume/volFields.H>
29 #include <OpenFOAM/Time.H>
30 
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 
33 template<class Type>
35 (
36  const word& fieldName,
39 ) const
40 {
43 
44  if (obr_.foundObject<vfType>(fieldName))
45  {
46  if (debug)
47  {
48  Info<< "readFields : Field " << fieldName << " already in database"
49  << endl;
50  }
51  }
52  else if (obr_.foundObject<sfType>(fieldName))
53  {
54  if (debug)
55  {
56  Info<< "readFields : Field " << fieldName << " already in database"
57  << endl;
58  }
59  }
60  else
61  {
62  const fvMesh& mesh = refCast<const fvMesh>(obr_);
63 
64  IOobject fieldHeader
65  (
66  fieldName,
67  mesh.time().timeName(),
68  mesh,
69  IOobject::MUST_READ,
70  IOobject::NO_WRITE
71  );
72 
73  if
74  (
75  fieldHeader.headerOk()
76  && fieldHeader.headerClassName() == vfType::typeName
77  )
78  {
79  // store field locally
80  Info<< " Reading " << fieldName << endl;
81  label sz = vflds.size();
82  vflds.setSize(sz+1);
83  vflds.set(sz, new vfType(fieldHeader, mesh));
84  }
85  else if
86  (
87  fieldHeader.headerOk()
88  && fieldHeader.headerClassName() == sfType::typeName
89  )
90  {
91  // store field locally
92  Info<< " Reading " << fieldName << endl;
93  label sz = sflds.size();
94  sflds.setSize(sz+1);
95  sflds.set(sz, new sfType(fieldHeader, mesh));
96  }
97  }
98 }
99 
100 
101 // ************************ vim: set sw=4 sts=4 et: ************************ //