pow.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) 2020-2021 OpenCFD Ltd.
9------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
28#include "pow.H"
29#include "volFields.H"
31
32// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
33
34namespace Foam
35{
36namespace functionObjects
37{
40}
41}
42
43
44// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
45
46bool Foam::functionObjects::pow::calc()
47{
48 if (foundObject<volScalarField>(fieldName_))
49 {
50 const volScalarField& x = lookupObject<volScalarField>(fieldName_);
51
52 // Switch-off dimension checking if requested
53 const bool oldDimChecking = dimensionSet::checking();
54
55 if (!checkDimensions_)
56 {
58 }
59
60 bool stored = store
61 (
63 scale_*Foam::pow(x, n_) + offset_
64 );
65
66 // Reinstate dimension checking
67 if (!checkDimensions_)
68 {
69 dimensionSet::checking(oldDimChecking);
70 }
71
72 return stored;
73 }
74
75 return false;
76}
77
78
79// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
80
82(
83 const word& name,
84 const Time& runTime,
85 const dictionary& dict
86)
87:
88 fieldExpression(name, runTime, dict, typeName),
89 checkDimensions_(true),
90 n_(0.0),
91 scale_(1.0),
92 offset_(0.0)
93{
94 read(dict);
95}
96
97
98// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
99
101{
103 {
104 checkDimensions_ = dict.getOrDefault<Switch>("checkDimensions", true);
105 n_ = dict.get<scalar>("n");
106 scale_ = dict.getOrDefault<scalar>("scale", 1.0);
107 offset_ = dict.getOrDefault<scalar>("offset", 0.0);
108
109 return true;
110 }
111
112 return false;
113}
114
115
116// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
virtual bool read()
Re-read model coefficients if they have changed.
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
Definition: Switch.H:78
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:80
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
static bool checking() noexcept
True if dimension checking is enabled (the usual default)
Definition: dimensionSet.H:229
Abstract base-class for Time/database function objects.
Intermediate class for handling field expression function objects (e.g. blendingFactor etc....
word resultName_
Name of result field.
word fieldName_
Name of field to process.
Computes the power of an input volScalarField.
Definition: pow.H:217
virtual bool read(const dictionary &)
Read the randomise data.
Definition: pow.C:100
bool store(word &fieldName, const tmp< ObjectType > &tfield, bool cacheable=false)
Store the field in the (sub) objectRegistry under the given name.
A class for handling words, derived from Foam::string.
Definition: word.H:68
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Definition: className.H:121
engineTime & runTime
Namespace for OpenFOAM.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
Definition: exprTraits.C:59
dictionary dict