Scale.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) 2017-2019 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 "Scale.H"
27 
28 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
29 
30 template<class Type>
31 void Foam::Function1s::Scale<Type>::read(const dictionary& coeffs)
32 {
33  scale_ = Function1<scalar>::New("scale", coeffs);
34  xScale_ =
35  coeffs.found("xScale")
36  ? Function1<scalar>::New("xScale", coeffs)
37  : autoPtr<Function1<scalar>>(new Constant<scalar>("xScale", 1));
38  value_ = Function1<Type>::New("value", coeffs);
39 
40  integrableScale_ =
41  isA<Constant<scalar>>(xScale_())
42  && isA<Constant<scalar>>(scale_());
43 
44  integrableValue_ =
45  isA<Constant<scalar>>(xScale_())
46  && isA<Constant<Type>>(value_());
47 }
48 
49 
50 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
51 
52 template<class Type>
54 (
55  const word& entryName,
56  const dictionary& dict
57 )
58 :
60 {
61  read(dict);
62 }
63 
64 
65 template<class Type>
67 :
68  FieldFunction1<Type, Scale<Type>>(se),
69  scale_(se.scale_, false),
70  xScale_(se.xScale_, false),
71  value_(se.value_, false),
72  integrableScale_(se.integrableScale_),
73  integrableValue_(se.integrableValue_)
74 {}
75 
76 
77 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
78 
79 template<class Type>
81 {}
82 
83 
84 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
85 
86 template<class Type>
88 {
90  os << token::END_STATEMENT << nl;
91  os << indent << word(this->name() + "Coeffs") << nl;
92  os << indent << token::BEGIN_BLOCK << incrIndent << nl;
93  scale_->writeData(os);
94  xScale_->writeData(os);
95  value_->writeData(os);
96  os << decrIndent << indent << token::END_BLOCK << endl;
97 }
98 
99 
100 // ************************************************************************* //
bool isA(const Type &t)
Check if a dynamic_cast to typeid is possible.
Definition: typeInfo.H:134
Ostream & indent(Ostream &os)
Indent stream.
Definition: Ostream.H:221
virtual ~Scale()
Destructor.
Definition: Scale.C:80
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:158
const word & name() const
Return the name of the entry.
Definition: Function1.C:91
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
void read(Istream &, label &, const dictionary &)
In-place read with dictionary lookup.
virtual void writeData(Ostream &os) const
Write in dictionary format.
Definition: Function1.C:98
autoPtr< BasicCompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleMomentumTransportModel::transportModel &transport)
Function1 which scales a given &#39;value&#39; function by a &#39;scale&#39; scalar function and scales the &#39;x&#39; argum...
Definition: Scale.H:151
A class for handling words, derived from string.
Definition: word.H:59
Scale(const word &entryName, const dictionary &dict)
Construct from entry name and dictionary.
Definition: Scale.C:54
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:54
static const char nl
Definition: Ostream.H:260
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
Definition: Ostream.H:235
virtual void writeData(Ostream &os) const
Write in dictionary format.
Definition: Scale.C:87
Ostream & incrIndent(Ostream &os)
Increment the indent level.
Definition: Ostream.H:228