DimensionedFieldFunctionsM.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-2016 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
26\*---------------------------------------------------------------------------*/
27
28// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
29
30#define UNARY_FUNCTION(ReturnType, Type1, Func, Dfunc) \
31 \
32TEMPLATE \
33tmp<DimensionedField<ReturnType, GeoMesh>> Func \
34( \
35 const DimensionedField<Type1, GeoMesh>& df \
36); \
37 \
38TEMPLATE \
39tmp<DimensionedField<ReturnType, GeoMesh>> Func \
40( \
41 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1 \
42);
43
44
45// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46
47#define UNARY_OPERATOR(ReturnType, Type1, Op, opFunc, Dfunc) \
48 \
49TEMPLATE \
50tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
51( \
52 const DimensionedField<Type1, GeoMesh>& df1 \
53); \
54 \
55TEMPLATE \
56tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
57( \
58 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1 \
59);
60
61
62// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
63
64#define BINARY_FUNCTION(ReturnType, Type1, Type2, Func) \
65 \
66TEMPLATE \
67tmp<DimensionedField<ReturnType, GeoMesh>> Func \
68( \
69 const DimensionedField<Type1, GeoMesh>& df1, \
70 const DimensionedField<Type2, GeoMesh>& df2 \
71); \
72 \
73TEMPLATE \
74tmp<DimensionedField<ReturnType, GeoMesh>> Func \
75( \
76 const DimensionedField<Type1, GeoMesh>& df1, \
77 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
78); \
79 \
80TEMPLATE \
81tmp<DimensionedField<ReturnType, GeoMesh>> Func \
82( \
83 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
84 const DimensionedField<Type2, GeoMesh>& df2 \
85); \
86 \
87TEMPLATE \
88tmp<DimensionedField<ReturnType, GeoMesh>> Func \
89( \
90 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
91 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
92);
93
94
95// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
96
97#define BINARY_TYPE_FUNCTION_SF(ReturnType, Type1, Type2, Func) \
98 \
99TEMPLATE \
100tmp<DimensionedField<ReturnType, GeoMesh>> Func \
101( \
102 const dimensioned<Type1>& dt1, \
103 const DimensionedField<Type2, GeoMesh>& df2 \
104); \
105 \
106TEMPLATE \
107tmp<DimensionedField<ReturnType, GeoMesh>> Func \
108( \
109 const Type1& t1, \
110 const DimensionedField<Type2, GeoMesh>& df2 \
111); \
112 \
113TEMPLATE \
114tmp<DimensionedField<ReturnType, GeoMesh>> Func \
115( \
116 const dimensioned<Type1>& dt1, \
117 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
118); \
119 \
120TEMPLATE \
121tmp<DimensionedField<ReturnType, GeoMesh>> Func \
122( \
123 const Type1& t1, \
124 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
125);
126
127
128#define BINARY_TYPE_FUNCTION_FS(ReturnType, Type1, Type2, Func) \
129 \
130TEMPLATE \
131tmp<DimensionedField<ReturnType, GeoMesh>> Func \
132( \
133 const DimensionedField<Type1, GeoMesh>& df1, \
134 const dimensioned<Type2>& dt2 \
135); \
136 \
137TEMPLATE \
138tmp<DimensionedField<ReturnType, GeoMesh>> Func \
139( \
140 const DimensionedField<Type1, GeoMesh>& df1, \
141 const Type2& t2 \
142); \
143 \
144TEMPLATE \
145tmp<DimensionedField<ReturnType, GeoMesh>> Func \
146( \
147 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
148 const dimensioned<Type2>& dt2 \
149); \
150 \
151TEMPLATE \
152tmp<DimensionedField<ReturnType, GeoMesh>> Func \
153( \
154 const tmp<DimensionedField<Type1, GeoMesh>>& tdf2, \
155 const Type2& t2 \
156);
157
158
159#define BINARY_TYPE_FUNCTION(ReturnType, Type1, Type2, Func) \
160 BINARY_TYPE_FUNCTION_SF(ReturnType, Type1, Type2, Func) \
161 BINARY_TYPE_FUNCTION_FS(ReturnType, Type1, Type2, Func)
162
163
164// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165
166#define BINARY_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
167 \
168TEMPLATE \
169tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
170( \
171 const DimensionedField<Type1, GeoMesh>& df1, \
172 const DimensionedField<Type2, GeoMesh>& df2 \
173); \
174 \
175TEMPLATE \
176tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
177( \
178 const DimensionedField<Type1, GeoMesh>& df1, \
179 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
180); \
181 \
182TEMPLATE \
183tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
184( \
185 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
186 const DimensionedField<Type2, GeoMesh>& df2 \
187); \
188 \
189TEMPLATE \
190tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
191( \
192 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
193 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
194);
195
196
197// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198
199#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
200 \
201TEMPLATE \
202tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
203( \
204 const dimensioned<Type1>& dt1, \
205 const DimensionedField<Type2, GeoMesh>& df2 \
206); \
207 \
208TEMPLATE \
209tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
210( \
211 const Type1& t1, \
212 const DimensionedField<Type2, GeoMesh>& df2 \
213); \
214 \
215TEMPLATE \
216tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
217( \
218 const dimensioned<Type1>& dt1, \
219 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
220); \
221 \
222TEMPLATE \
223tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
224( \
225 const Type1& t1, \
226 const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
227);
228
229
230#define BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
231 \
232TEMPLATE \
233tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
234( \
235 const DimensionedField<Type1, GeoMesh>& df1, \
236 const dimensioned<Type2>& dt2 \
237); \
238 \
239TEMPLATE \
240tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
241( \
242 const DimensionedField<Type1, GeoMesh>& df1, \
243 const Type2& t2 \
244); \
245 \
246TEMPLATE \
247tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
248( \
249 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
250 const dimensioned<Type2>& dt2 \
251); \
252 \
253TEMPLATE \
254tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
255( \
256 const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
257 const Type2& t2 \
258);
259
260
261#define BINARY_TYPE_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
262 BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
263 BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc)
264
265
266// ************************************************************************* //