scalarFieldField.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) 2019 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
27Description
28 Specialisation of FieldField<T> for scalar.
29
30\*---------------------------------------------------------------------------*/
31
32#include "scalarFieldField.H"
33
34#define TEMPLATE template<template<class> class Field>
36
37// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38
39namespace Foam
40{
41
42// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43
44template<template<class> class Field>
46(
49 const scalar s
50)
51{
52 forAll(f, i)
53 {
54 stabilise(f[i], f1[i], s);
55 }
56}
57
58template<template<class> class Field>
60(
62 const scalar s
63)
64{
66 (
68 );
69 stabilise(tf(), f1, s);
70 return tf;
71}
72
73template<template<class> class Field>
75(
77 const scalar s
78)
79{
80 tmp<FieldField<Field, scalar>> tf(tf1.ptr());
81 stabilise(tf(), tf(), s);
82 return tf;
83}
84
85
86// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
87
88BINARY_TYPE_OPERATOR(scalar, scalar, scalar, +, add)
89BINARY_TYPE_OPERATOR(scalar, scalar, scalar, -, subtract)
90
91BINARY_OPERATOR(scalar, scalar, scalar, *, multiply)
92BINARY_OPERATOR(scalar, scalar, scalar, /, divide)
93
94BINARY_TYPE_OPERATOR_SF(scalar, scalar, scalar, /, divide)
95
96BINARY_FUNCTION(scalar, scalar, scalar, pow)
97BINARY_TYPE_FUNCTION(scalar, scalar, scalar, pow)
98
99BINARY_FUNCTION(scalar, scalar, scalar, atan2)
100BINARY_TYPE_FUNCTION(scalar, scalar, scalar, atan2)
101
102BINARY_FUNCTION(scalar, scalar, scalar, hypot)
103BINARY_TYPE_FUNCTION(scalar, scalar, scalar, hypot)
104
105
106// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
107
108UNARY_FUNCTION(scalar, scalar, pow3)
109UNARY_FUNCTION(scalar, scalar, pow4)
110UNARY_FUNCTION(scalar, scalar, pow5)
111UNARY_FUNCTION(scalar, scalar, pow6)
112UNARY_FUNCTION(scalar, scalar, pow025)
113UNARY_FUNCTION(scalar, scalar, sqrt)
114UNARY_FUNCTION(scalar, scalar, cbrt)
115UNARY_FUNCTION(scalar, scalar, sign)
116UNARY_FUNCTION(scalar, scalar, pos)
117UNARY_FUNCTION(scalar, scalar, pos0)
118UNARY_FUNCTION(scalar, scalar, neg)
119UNARY_FUNCTION(scalar, scalar, neg0)
120UNARY_FUNCTION(scalar, scalar, posPart)
121UNARY_FUNCTION(scalar, scalar, negPart)
122UNARY_FUNCTION(scalar, scalar, exp)
123UNARY_FUNCTION(scalar, scalar, log)
124UNARY_FUNCTION(scalar, scalar, log10)
125UNARY_FUNCTION(scalar, scalar, sin)
126UNARY_FUNCTION(scalar, scalar, cos)
127UNARY_FUNCTION(scalar, scalar, tan)
128UNARY_FUNCTION(scalar, scalar, asin)
129UNARY_FUNCTION(scalar, scalar, acos)
130UNARY_FUNCTION(scalar, scalar, atan)
131UNARY_FUNCTION(scalar, scalar, sinh)
132UNARY_FUNCTION(scalar, scalar, cosh)
133UNARY_FUNCTION(scalar, scalar, tanh)
134UNARY_FUNCTION(scalar, scalar, asinh)
135UNARY_FUNCTION(scalar, scalar, acosh)
136UNARY_FUNCTION(scalar, scalar, atanh)
137UNARY_FUNCTION(scalar, scalar, erf)
138UNARY_FUNCTION(scalar, scalar, erfc)
139UNARY_FUNCTION(scalar, scalar, lgamma)
140UNARY_FUNCTION(scalar, scalar, j0)
141UNARY_FUNCTION(scalar, scalar, j1)
142UNARY_FUNCTION(scalar, scalar, y0)
143UNARY_FUNCTION(scalar, scalar, y1)
144
145
146#define BesselFunc(func) \
147 \
148template<template<class> class Field> \
149void func \
150( \
151 FieldField<Field, scalar>& res, \
152 const int n, \
153 const FieldField<Field, scalar>& sf \
154) \
155{ \
156 forAll(res, i) \
157 { \
158 func(res[i], n, sf[i]); \
159 } \
160} \
161 \
162template<template<class> class Field> \
163tmp<FieldField<Field, scalar>> func \
164( \
165 const int n, \
166 const FieldField<Field, scalar>& sf \
167) \
168{ \
169 tmp<FieldField<Field, scalar>> tRes \
170 ( \
171 FieldField<Field, scalar>::NewCalculatedType(sf) \
172 ); \
173 func(tRes(), n, sf); \
174 return tRes; \
175} \
176 \
177template<template<class> class Field> \
178tmp<FieldField<Field, scalar>> func \
179( \
180 const int n, \
181 const tmp<FieldField<Field, scalar>>& tsf \
182) \
183{ \
184 tmp<FieldField<Field, scalar>> tRes(New(tsf)); \
185 func(tRes(), n, tsf()); \
186 tsf.clear(); \
187 return tRes; \
188}
189
192
193#undef BesselFunc
194
195
196// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
197
198} // End namespace Foam
199
200// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201
202#include "undefFieldFunctionsM.H"
203
204// ************************************************************************* //
#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)
A field of fields is a PtrList of fields with reference counting.
Definition: FieldField.H:80
A class for managing temporary objects.
Definition: tmp.H:65
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
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 hypot(const dimensionedScalar &x, const dimensionedScalar &y)
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)
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)
labelList f(nPoints)
Specialisation of FieldField<T> for scalar.
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:333