Loading...
Searching...
No Matches
Constant.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-2017 OpenFOAM Foundation
9 Copyright (C) 2015-2021 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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\*---------------------------------------------------------------------------*/
28
29#include "Constant.H"
30
31// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
32
33template<class Type>
35(
36 const word& entryName,
37 const Type& value,
38 const objectRegistry* obrPtr
39)
41 Function1<Type>(entryName, obrPtr),
42 value_(value)
43{}
44
45
46template<class Type>
48(
49 const word& entryName,
50 const dictionary& dict,
51 const objectRegistry* obrPtr
52)
53:
54 Function1<Type>(entryName, dict, obrPtr),
55 value_(Zero)
56{
57 const entry* eptr = dict.findEntry(entryName, keyType::LITERAL);
58
59 if (eptr && eptr->isStream())
60 {
61 // Primitive (inline) format. Eg,
62 // - key constant 1.2;
63 // - key 1.2;
64
65 ITstream& is = eptr->stream();
66 if (is.peek().isWord())
67 {
68 is.skip(); // Discard leading 'constant'
69 }
70 is >> value_;
71 dict.checkITstream(is, entryName);
72 }
73 else
74 {
75 // Dictionary format. Eg,
76 // key { type constant; value 1.2; }
78 dict.readEntry("value", value_);
79 }
80}
81
82
83template<class Type>
85(
86 const word& entryName,
87 Istream& is
88)
90 Function1<Type>(entryName),
91 value_(pTraits<Type>(is))
92{}
93
94
95template<class Type>
97:
98 Function1<Type>(rhs),
99 value_(rhs.value_)
100{}
101
102
103// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
104
105template<class Type>
107(
108 const scalarField& x
109) const
110{
111 return tmp<Field<Type>>::New(x.size(), value_);
112}
113
114
115template<class Type>
117{
119
120 os << token::SPACE << value_;
121 os.endEntry();
122}
123
124
125// ************************************************************************* //
Templated function that returns a constant value.
Definition Constant.H:71
virtual void writeData(Ostream &os) const
Write as primitive (inline) format.
Definition Constant.C:109
Constant(const word &entryName, const Type &value, const objectRegistry *obrPtr=nullptr)
Construct from components.
Definition Constant.C:28
virtual Type value(const scalar) const
Return constant value.
Definition ConstantI.H:34
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Definition Function1.H:92
virtual void writeData(Ostream &os) const
Write in dictionary format.
Definition Function1.C:156
Function1(const word &entryName, const objectRegistry *obrPtr=nullptr)
Construct from entry name.
Definition Function1.C:31
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:59
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
A keyword and a list of tokens is an 'entry'.
Definition entry.H:66
virtual bool isStream() const noexcept
True if this entry is a stream.
Definition entry.H:267
@ LITERAL
String literal.
Definition keyType.H:82
Registry of regIOobjects.
A traits class, which is primarily used for primitives and vector-space.
Definition pTraits.H:64
A class for managing temporary objects.
Definition tmp.H:75
@ SPACE
Space [isspace].
Definition token.H:144
A class for handling words, derived from Foam::string.
Definition word.H:66
OBJstream os(runTime.globalPath()/outputName)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
void rhs(fvMatrix< typename Expr::value_type > &m, const Expr &expression)
static constexpr const zero Zero
Global zero (0).
Definition zero.H:127
dictionary dict