Constant.H
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-2017 OpenFOAM Foundation
9  Copyright (C) 2015-2021 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::Function1Types::Constant
29 
30 Description
31  Templated function that returns a constant value.
32 
33  Usage - for entry <entryName> returning the value <value>,
34  can be specified is different formats.
35 
36  Inline specification:
37  \verbatim
38  <entryName> constant <value>
39  \endverbatim
40 
41  Dictionary format:
42  \verbatim
43  <entryName>
44  {
45  type constant;
46  value <value>;
47  }
48  \endverbatim
49 
50 SourceFiles
51  Constant.C
52  ConstantI.H
53 
54 \*---------------------------------------------------------------------------*/
55 
56 #ifndef Function1Types_Constant_H
57 #define Function1Types_Constant_H
58 
59 #include "Function1.H"
60 
61 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 
63 namespace Foam
64 {
65 namespace Function1Types
66 {
67 
68 /*---------------------------------------------------------------------------*\
69  Class Constant Declaration
70 \*---------------------------------------------------------------------------*/
71 
72 template<class Type>
73 class Constant
74 :
75  public Function1<Type>
76 {
77  // Private Data
78 
79  //- Constant value
80  Type value_;
81 
82 
83 public:
84 
85  // Runtime type information
86  TypeName("constant");
87 
88 
89  // Generated Methods
90 
91  //- No copy assignment
92  void operator=(const Constant<Type>&) = delete;
93 
94 
95  // Constructors
96 
97  //- Construct from components
98  Constant
99  (
100  const word& entryName,
101  const Type& value,
102  const objectRegistry* obrPtr = nullptr
103  );
104 
105  //- Construct from entry name, dictionary and optional registry
106  Constant
107  (
108  const word& entryName,
109  const dictionary& dict,
110  const objectRegistry* obrPtr = nullptr
111  );
112 
113  //- Construct from entry name and Istream
114  // Reads the constant value without the Function1 type
115  // for backward compatibility
116  Constant(const word& entryName, Istream& is);
117 
118  //- Copy constructor
119  explicit Constant(const Constant<Type>& rhs);
120 
121  //- Construct and return a clone
122  virtual tmp<Function1<Type>> clone() const
123  {
124  return tmp<Function1<Type>>(new Constant<Type>(*this));
125  }
126 
127 
128  //- Destructor
129  virtual ~Constant() = default;
130 
131 
132  // Member Functions
133 
134  //- Change the constant value
135  inline void reset(const Type& val);
136 
137  //- Value is independent of x
138  virtual inline bool constant() const { return true; }
139 
140  //- Return constant value
141  virtual inline Type value(const scalar) const;
142 
143  //- Integrate between two values
144  virtual inline Type integrate(const scalar x1, const scalar x2) const;
145 
146  //- Return value as a function of (scalar) independent variable
147  virtual tmp<Field<Type>> value(const scalarField& x) const;
148 
149  //- Write as primitive (inline) format
150  virtual void writeData(Ostream& os) const;
151 };
152 
153 
154 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
155 
156 } // End namespace Function1Types
157 } // End namespace Foam
158 
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
160 
161 #include "ConstantI.H"
162 
163 #ifdef NoRepository
164  #include "Constant.C"
165  #include "Function1New.C"
166 #endif
167 
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
169 
170 #endif
171 
172 // ************************************************************************* //
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::Function1::entryName
const word & entryName
Definition: Function1.H:133
Function1.H
Constant.C
Foam::Function1::dict
const word const dictionary & dict
Definition: Function1.H:134
Foam::Function1Types::Constant::writeData
virtual void writeData(Ostream &os) const
Write as primitive (inline) format.
Definition: Constant.C:116
Foam::Function1
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Definition: propellerInfo.H:291
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:60
Foam::Function1Types::Constant::~Constant
virtual ~Constant()=default
Destructor.
Foam::Function1Types::Constant::reset
void reset(const Type &val)
Change the constant value.
Definition: ConstantI.H:34
Foam::Function1Types::Constant::operator=
void operator=(const Constant< Type > &)=delete
No copy assignment.
Foam::Field< scalar >
Foam::Function1::obrPtr
const word const dictionary const objectRegistry * obrPtr
Definition: Function1.H:136
Foam::Function1Types::Constant
Templated function that returns a constant value.
Definition: Constant.H:72
Function1New.C
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
os
OBJstream os(runTime.globalPath()/outputName)
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::Function1Types::Constant::integrate
virtual Type integrate(const scalar x1, const scalar x2) const
Integrate between two values.
Definition: ConstantI.H:49
Foam::Function1Types::Constant::constant
virtual bool constant() const
Value is independent of x.
Definition: Constant.H:137
Foam::Function1Types::Constant::TypeName
TypeName("constant")
Foam::Function1Types::Constant::Constant
Constant(const word &entryName, const Type &value, const objectRegistry *obrPtr=nullptr)
Construct from components.
Definition: Constant.C:35
x
x
Definition: LISASMDCalcMethod2.H:52
ConstantI.H
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::Function1Types::Constant::value
virtual Type value(const scalar) const
Return constant value.
Definition: ConstantI.H:41
Foam::Function1Types::Constant::clone
virtual tmp< Function1< Type > > clone() const
Construct and return a clone.
Definition: Constant.H:121