Constant2.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2020-2024 OpenFOAM Foundation
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 "Constant2.H"
27 
28 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
29 
30 template<class Type>
32 (
33  const unitConversions& defaultUnits,
34  Istream& is
35 )
36 {
37  // Read the units if they are before the value
38  unitConversion units(defaultUnits.value);
39  const bool haveUnits = units.readIfPresent(is);
40 
41  // Read the value
42  const Type value = pTraits<Type>(is);
43 
44  // Read the units if they are after the value
45  if (!haveUnits && !is.eof())
46  {
47  units.readIfPresent(is);
48  }
49 
50  // Modify the value by the unit conversion and return
51  return units.toStandard(value);
52 }
53 
54 
55 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
56 
57 template<class Type>
59 (
60  const word& name,
61  const Type& val
62 )
63 :
64  FieldFunction2<Type, Constant<Type>>(name),
65  value_(val)
66 {}
67 
68 
69 template<class Type>
71 (
72  const word& name,
73  const unitConversions& units,
74  const dictionary& dict
75 )
76 :
77  FieldFunction2<Type, Constant<Type>>(name),
78  value_(dict.lookup<Type>("value", units.value))
79 {}
80 
81 
82 template<class Type>
84 (
85  const word& name,
86  const unitConversions& units,
87  Istream& is
88 )
89 :
90  FieldFunction2<Type, Constant<Type>>(name),
91  value_(readValue(units, is))
92 {}
93 
94 
95 template<class Type>
97 :
98  FieldFunction2<Type, Constant<Type>>(cnst),
99  value_(cnst.value_)
100 {}
101 
102 
103 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
104 
105 template<class Type>
107 {}
108 
109 
110 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
111 
112 template<class Type>
114 (
115  Ostream& os,
116  const unitConversions& units
117 ) const
118 {
119  writeEntry(os, "value", units.value, value_);
120 }
121 
122 
123 // ************************************************************************* i/
Templated function of two variables that returns a constant value.
Definition: Constant2.H:66
Constant(const word &name, const Type &val)
Construct from name and value.
Definition: Constant2.C:59
virtual void write(Ostream &os, const unitConversions &units) const
Write in dictionary format.
Definition: Constant2.C:114
virtual ~Constant()
Destructor.
Definition: Constant2.C:106
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:60
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:162
A class for handling words, derived from string.
Definition: word.H:62
word name(const bool)
Return a word representation of a bool.
Definition: boolIO.C:39
const HashTable< unitConversion > & units()
Get the table of unit conversions.
void writeEntry(Ostream &os, const HashTable< T, Key, Hash > &ht)
Definition: HashTableIO.C:96
dictionary dict