GeometricScalarField.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-------------------------------------------------------------------------------
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
26InClass
27 Foam::GeometricScalarField
28
29Description
30 Scalar specific part of the implementation of GeometricField.
31
32SourceFiles
33 GeometricScalarField.C
34
35\*---------------------------------------------------------------------------*/
36
37#ifndef GeometricScalarField_H
38#define GeometricScalarField_H
39
40#include "GeometricField.H"
42
43#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
45
46// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47
48namespace Foam
49{
50
51// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52
53template<template<class> class PatchField, class GeoMesh>
54void stabilise
55(
56 GeometricField<scalar, PatchField, GeoMesh>&,
57 const GeometricField<scalar, PatchField, GeoMesh>&,
58 const dimensioned<scalar>&
59);
60
61template<template<class> class PatchField, class GeoMesh>
62tmp<GeometricField<scalar, PatchField, GeoMesh>> stabilise
63(
64 const GeometricField<scalar, PatchField, GeoMesh>&,
65 const dimensioned<scalar>&
66);
67
68template<template<class> class PatchField, class GeoMesh>
69tmp<GeometricField<scalar, PatchField, GeoMesh>> stabilise
70(
71 const tmp<GeometricField<scalar, PatchField, GeoMesh>>&,
72 const dimensioned<scalar>&
73);
74
75
76// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
77
78BINARY_TYPE_OPERATOR(scalar, scalar, scalar, +, '+', add)
79BINARY_TYPE_OPERATOR(scalar, scalar, scalar, -, '-', subtract)
80
81BINARY_OPERATOR(scalar, scalar, scalar, *, '*', multiply)
82BINARY_OPERATOR(scalar, scalar, scalar, /, '|', divide)
83
84BINARY_TYPE_OPERATOR_SF(scalar, scalar, scalar, /, '|', divide)
85
86BINARY_FUNCTION(scalar, scalar, scalar, pow)
87BINARY_TYPE_FUNCTION(scalar, scalar, scalar, pow)
88
89BINARY_FUNCTION(scalar, scalar, scalar, atan2)
90BINARY_TYPE_FUNCTION(scalar, scalar, scalar, atan2)
91
92
93// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
94
95UNARY_FUNCTION(scalar, scalar, pow3, pow3)
96UNARY_FUNCTION(scalar, scalar, pow4, pow4)
97UNARY_FUNCTION(scalar, scalar, pow5, pow5)
98UNARY_FUNCTION(scalar, scalar, pow6, pow6)
99UNARY_FUNCTION(scalar, scalar, pow025, pow025)
100UNARY_FUNCTION(scalar, scalar, sqrt, sqrt)
101UNARY_FUNCTION(scalar, scalar, cbrt, cbrt)
102UNARY_FUNCTION(scalar, scalar, sign, sign)
103UNARY_FUNCTION(scalar, scalar, pos, pos)
104UNARY_FUNCTION(scalar, scalar, pos0, pos0)
105UNARY_FUNCTION(scalar, scalar, neg, neg)
106UNARY_FUNCTION(scalar, scalar, neg0, neg0)
107UNARY_FUNCTION(scalar, scalar, posPart, posPart)
108UNARY_FUNCTION(scalar, scalar, negPart, negPart)
109
110UNARY_FUNCTION(scalar, scalar, exp, trans)
111UNARY_FUNCTION(scalar, scalar, log, trans)
112UNARY_FUNCTION(scalar, scalar, log10, trans)
113UNARY_FUNCTION(scalar, scalar, sin, trans)
114UNARY_FUNCTION(scalar, scalar, cos, trans)
115UNARY_FUNCTION(scalar, scalar, tan, trans)
116UNARY_FUNCTION(scalar, scalar, asin, trans)
117UNARY_FUNCTION(scalar, scalar, acos, trans)
118UNARY_FUNCTION(scalar, scalar, atan, trans)
119UNARY_FUNCTION(scalar, scalar, sinh, trans)
120UNARY_FUNCTION(scalar, scalar, cosh, trans)
121UNARY_FUNCTION(scalar, scalar, tanh, trans)
122UNARY_FUNCTION(scalar, scalar, asinh, trans)
123UNARY_FUNCTION(scalar, scalar, acosh, trans)
124UNARY_FUNCTION(scalar, scalar, atanh, trans)
125UNARY_FUNCTION(scalar, scalar, erf, trans)
126UNARY_FUNCTION(scalar, scalar, erfc, trans)
127UNARY_FUNCTION(scalar, scalar, lgamma, trans)
128UNARY_FUNCTION(scalar, scalar, j0, trans)
129UNARY_FUNCTION(scalar, scalar, j1, trans)
130UNARY_FUNCTION(scalar, scalar, y0, trans)
131UNARY_FUNCTION(scalar, scalar, y1, trans)
132
133
134// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135
136#define BesselFunc(func) \
137 \
138template<template<class> class PatchField, class GeoMesh> \
139void func \
140( \
141 GeometricField<scalar, PatchField, GeoMesh>& Res, \
142 const int n, \
143 const GeometricField<scalar, PatchField, GeoMesh>& sf \
144); \
145 \
146template<template<class> class PatchField, class GeoMesh> \
147tmp<GeometricField<scalar, PatchField, GeoMesh>> func \
148( \
149 const int n, \
150 const GeometricField<scalar, PatchField, GeoMesh>& \
151); \
152 \
153template<template<class> class PatchField, class GeoMesh> \
154tmp<GeometricField<scalar, PatchField, GeoMesh>> func \
155( \
156 const int n, \
157 const tmp<GeometricField<scalar, PatchField, GeoMesh>>& \
158);
159
162
163#undef BesselFunc
164
165
166// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167
168} // End namespace Foam
169
170// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171
172#include "undefFieldFunctionsM.H"
173
174#ifdef NoRepository
175 #include "GeometricScalarField.C"
176#endif
177
178// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
179
180#endif
181
182// ************************************************************************* //
#define BINARY_FUNCTION(ReturnType, Type1, Type2, Func)
#define BINARY_TYPE_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc)
#define BINARY_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc)
#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc)
#define UNARY_FUNCTION(ReturnType, Type1, Func, Dfunc)
#define BINARY_TYPE_FUNCTION(ReturnType, Type1, Type2, Func)
#define BesselFunc(func)
Scalar specific part of the implementation of DimensionedField.
Namespace for OpenFOAM.
dimensionedScalar pow6(const dimensionedScalar &ds)
dimensionedScalar pos(const dimensionedScalar &ds)
dimensionedScalar pow5(const dimensionedScalar &ds)
dimensionedScalar erfc(const dimensionedScalar &ds)
dimensionedScalar asin(const dimensionedScalar &ds)
dimensionedScalar exp(const dimensionedScalar &ds)
dimensionedScalar tan(const dimensionedScalar &ds)
dimensionedScalar pos0(const dimensionedScalar &ds)
dimensionedScalar sign(const dimensionedScalar &ds)
dimensionedScalar lgamma(const dimensionedScalar &ds)
dimensionedScalar j1(const dimensionedScalar &ds)
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensionedScalar y0(const dimensionedScalar &ds)
dimensionedScalar cosh(const dimensionedScalar &ds)
void subtract(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedScalar sin(const dimensionedScalar &ds)
dimensionedScalar tanh(const dimensionedScalar &ds)
dimensionedScalar erf(const dimensionedScalar &ds)
dimensionedScalar sinh(const dimensionedScalar &ds)
dimensionedScalar log10(const dimensionedScalar &ds)
dimensionedScalar yn(const int n, const dimensionedScalar &ds)
dimensionedScalar log(const dimensionedScalar &ds)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar atan2(const dimensionedScalar &x, const dimensionedScalar &y)
dimensionedScalar y1(const dimensionedScalar &ds)
dimensionedScalar negPart(const dimensionedScalar &ds)
dimensionedScalar acosh(const dimensionedScalar &ds)
dimensionedScalar sqrt(const dimensionedScalar &ds)
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedScalar pow4(const dimensionedScalar &ds)
dimensionedScalar jn(const int n, const dimensionedScalar &ds)
void multiply(FieldField< Field, Type > &f, const FieldField< Field, Type > &f1, const FieldField< Field, scalar > &f2)
dimensionSet trans(const dimensionSet &ds)
Check the argument is dimensionless (for transcendental functions)
Definition: dimensionSet.C:486
dimensionedScalar neg(const dimensionedScalar &ds)
dimensionedScalar atanh(const dimensionedScalar &ds)
dimensionedScalar stabilise(const dimensionedScalar &x, const dimensionedScalar &y)
dimensionedScalar neg0(const dimensionedScalar &ds)
dimensionedScalar cbrt(const dimensionedScalar &ds)
dimensionedScalar atan(const dimensionedScalar &ds)
void divide(FieldField< Field, Type > &f, const FieldField< Field, Type > &f1, const FieldField< Field, scalar > &f2)
dimensionedScalar cos(const dimensionedScalar &ds)
dimensionedScalar posPart(const dimensionedScalar &ds)
dimensionedScalar acos(const dimensionedScalar &ds)
dimensionedScalar j0(const dimensionedScalar &ds)
dimensionedScalar pow025(const dimensionedScalar &ds)
dimensionedScalar asinh(const dimensionedScalar &ds)