OpenFOAM: API Guide
v2112
The open source CFD toolbox
limitFieldsTemplates.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) 2019 OpenCFD Ltd.
9
-------------------------------------------------------------------------------
10
License
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 "
limitFields.H
"
29
#include "
volFields.H
"
30
31
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32
33
template
<
class
Type>
34
bool
Foam::functionObjects::limitFields::limitField
(
const
word
& fieldName)
35
{
36
typedef
GeometricField<Type, fvPatchField, volMesh>
VolFieldType;
37
38
auto
* fieldPtr = getObjectPtr<VolFieldType>(fieldName);
39
if
(!fieldPtr)
40
{
41
return
false
;
42
}
43
44
auto
&
field
= *fieldPtr;
45
46
Log
<<
" Limiting field "
<< fieldName <<
":"
;
47
48
const
dimensionedScalar
eps(
"eps"
,
field
.dimensions(), ROOTVSMALL);
49
50
if
(
limit_
&
MIN
)
51
{
52
volScalarField
mField(typeName +
":mag"
+
field
.name(),
mag
(
field
));
53
Log
<<
" min(|"
<<
gMin
(mField) <<
"|)"
;
54
//field.normalise();
55
field
/=
mag
(
field
) + eps;
56
mField.max(
dimensionedScalar
(
"min"
,
field
.dimensions(),
min_
));
57
field
*= mField;
58
}
59
60
if
(
limit_
&
MAX
)
61
{
62
volScalarField
mField(typeName +
":mag"
+
field
.name(),
mag
(
field
));
63
Log
<<
" max(|"
<<
gMax
(mField) <<
"|)"
;
64
//field.normalise();
65
field
/=
mag
(
field
) + eps;
66
mField.min(
dimensionedScalar
(
"max"
,
field
.dimensions(),
max_
));
67
field
*= mField;
68
}
69
70
return
true
;
71
}
72
73
74
// ************************************************************************* //
volFields.H
Foam::functionObjects::limitFields::max_
scalar max_
Maximum limit.
Definition:
limitFields.H:210
Log
#define Log
Definition:
PDRblock.C:35
Foam::word
A class for handling words, derived from Foam::string.
Definition:
word.H:65
limitFields.H
Foam::functionObjects::limitFields::MIN
limit by minimum value
Definition:
limitFields.H:187
Foam::functionObjects::limitFields::limit_
limitType limit_
Limiting type.
Definition:
limitFields.H:201
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition:
dimensionedScalarFwd.H:42
field
rDeltaTY field()
Foam::dimensioned< scalar >
Foam::functionObjects::limitFields::limitField
bool limitField(const word &fieldName)
Limit a field.
Definition:
limitFieldsTemplates.C:34
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Foam::gMin
Type gMin(const FieldField< Field, Type > &f)
Definition:
FieldFieldFunctions.C:593
Foam::functionObjects::limitFields::min_
scalar min_
Minimum limit.
Definition:
limitFields.H:207
Foam::GeometricField< Type, fvPatchField, volMesh >
Foam::functionObjects::limitFields::MAX
limit by maximum value
Definition:
limitFields.H:188
Foam::gMax
Type gMax(const FieldField< Field, Type > &f)
Definition:
FieldFieldFunctions.C:592
src
functionObjects
field
limitFields
limitFieldsTemplates.C
Generated by
1.8.17
OPENFOAM® is a registered
trademark
of OpenCFD Ltd.