Loading...
Searching...
No Matches
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 Copyright (C) 2023 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
27\*---------------------------------------------------------------------------*/
28
29// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30
31#define UNARY_FUNCTION(ReturnType, Type1, Func, Dfunc) \
32 \
33TEMPLATE \
34void Func \
35( \
36 DimensionedField<ReturnType, GeoMesh>& result, \
37 const DimensionedField<Type1, GeoMesh>& f1 \
38); \
39 \
40TEMPLATE \
41tmp<DimensionedField<ReturnType, GeoMesh>> Func \
42( \
43 const DimensionedField<Type1, GeoMesh>& f1 \
44); \
45 \
46TEMPLATE \
47tmp<DimensionedField<ReturnType, GeoMesh>> Func \
48( \
49 const tmp<DimensionedField<Type1, GeoMesh>>& tf1 \
50);
51
52
53// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
54
55#define UNARY_OPERATOR(ReturnType, Type1, Op, OpFunc, Dfunc) \
56 \
57TEMPLATE \
58void OpFunc \
59( \
60 DimensionedField<ReturnType, GeoMesh>& result, \
61 const DimensionedField<Type1, GeoMesh>& f1 \
62); \
63 \
64TEMPLATE \
65tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
66( \
67 const DimensionedField<Type1, GeoMesh>& f1 \
68); \
69 \
70TEMPLATE \
71tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
72( \
73 const tmp<DimensionedField<Type1, GeoMesh>>& tf1 \
74);
75
76
77// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
78
79#define BINARY_FUNCTION(ReturnType, Type1, Type2, Func) \
80 \
81TEMPLATE \
82void Func \
83( \
84 DimensionedField<ReturnType, GeoMesh>& result, \
85 const DimensionedField<Type1, GeoMesh>& f1, \
86 const DimensionedField<Type2, GeoMesh>& f2 \
87); \
88 \
89TEMPLATE \
90tmp<DimensionedField<ReturnType, GeoMesh>> Func \
91( \
92 const DimensionedField<Type1, GeoMesh>& f1, \
93 const DimensionedField<Type2, GeoMesh>& f2 \
94); \
95 \
96TEMPLATE \
97tmp<DimensionedField<ReturnType, GeoMesh>> Func \
98( \
99 const DimensionedField<Type1, GeoMesh>& f1, \
100 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
101); \
102 \
103TEMPLATE \
104tmp<DimensionedField<ReturnType, GeoMesh>> Func \
105( \
106 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
107 const DimensionedField<Type2, GeoMesh>& f2 \
108); \
109 \
110TEMPLATE \
111tmp<DimensionedField<ReturnType, GeoMesh>> Func \
112( \
113 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
114 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
115);
116
117
118// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
119
120#define BINARY_TYPE_FUNCTION_SF(ReturnType, Type1, Type2, Func) \
121 \
122TEMPLATE \
123void Func \
124( \
125 DimensionedField<ReturnType, GeoMesh>& result, \
126 const dimensioned<Type1>& dt1, \
127 const DimensionedField<Type2, GeoMesh>& f2 \
128); \
129 \
130TEMPLATE \
131tmp<DimensionedField<ReturnType, GeoMesh>> Func \
132( \
133 const dimensioned<Type1>& dt1, \
134 const DimensionedField<Type2, GeoMesh>& f2 \
135); \
136 \
137TEMPLATE \
138tmp<DimensionedField<ReturnType, GeoMesh>> Func \
139( \
140 const Type1& s1, \
141 const DimensionedField<Type2, GeoMesh>& f2 \
142); \
143 \
144TEMPLATE \
145tmp<DimensionedField<ReturnType, GeoMesh>> Func \
146( \
147 const dimensioned<Type1>& dt1, \
148 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
149); \
150 \
151TEMPLATE \
152tmp<DimensionedField<ReturnType, GeoMesh>> Func \
153( \
154 const Type1& s1, \
155 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
156);
157
158
159#define BINARY_TYPE_FUNCTION_FS(ReturnType, Type1, Type2, Func) \
160 \
161TEMPLATE \
162void Func \
163( \
164 DimensionedField<ReturnType, GeoMesh>& result, \
165 const DimensionedField<Type1, GeoMesh>& f1, \
166 const dimensioned<Type2>& dt2 \
167); \
168 \
169TEMPLATE \
170tmp<DimensionedField<ReturnType, GeoMesh>> Func \
171( \
172 const DimensionedField<Type1, GeoMesh>& f1, \
173 const dimensioned<Type2>& dt2 \
174); \
175 \
176TEMPLATE \
177tmp<DimensionedField<ReturnType, GeoMesh>> Func \
178( \
179 const DimensionedField<Type1, GeoMesh>& f1, \
180 const Type2& s2 \
181); \
182 \
183TEMPLATE \
184tmp<DimensionedField<ReturnType, GeoMesh>> Func \
185( \
186 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
187 const dimensioned<Type2>& dt2 \
188); \
189 \
190TEMPLATE \
191tmp<DimensionedField<ReturnType, GeoMesh>> Func \
192( \
193 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
194 const Type2& s2 \
195);
196
197
198#define BINARY_TYPE_FUNCTION(ReturnType, Type1, Type2, Func) \
199 BINARY_TYPE_FUNCTION_SF(ReturnType, Type1, Type2, Func) \
200 BINARY_TYPE_FUNCTION_FS(ReturnType, Type1, Type2, Func)
201
202
203// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
204
205#define BINARY_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
206 \
207TEMPLATE \
208void OpFunc \
209( \
210 DimensionedField<ReturnType, GeoMesh>& result, \
211 const DimensionedField<Type1, GeoMesh>& f1, \
212 const DimensionedField<Type2, GeoMesh>& f2 \
213); \
214 \
215TEMPLATE \
216tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
217( \
218 const DimensionedField<Type1, GeoMesh>& f1, \
219 const DimensionedField<Type2, GeoMesh>& f2 \
220); \
221 \
222TEMPLATE \
223tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
224( \
225 const DimensionedField<Type1, GeoMesh>& f1, \
226 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
227); \
228 \
229TEMPLATE \
230tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
231( \
232 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
233 const DimensionedField<Type2, GeoMesh>& f2 \
234); \
235 \
236TEMPLATE \
237tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
238( \
239 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
240 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
241);
242
243
244// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
245
246#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
247 \
248TEMPLATE \
249void OpFunc \
250( \
251 DimensionedField<ReturnType, GeoMesh>& result, \
252 const dimensioned<Type1>& dt1, \
253 const DimensionedField<Type2, GeoMesh>& f2 \
254); \
255 \
256TEMPLATE \
257tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
258( \
259 const dimensioned<Type1>& dt1, \
260 const DimensionedField<Type2, GeoMesh>& f2 \
261); \
262 \
263TEMPLATE \
264tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
265( \
266 const Type1& s1, \
267 const DimensionedField<Type2, GeoMesh>& f2 \
268); \
269 \
270TEMPLATE \
271tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
272( \
273 const dimensioned<Type1>& dt1, \
274 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
275); \
276 \
277TEMPLATE \
278tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
279( \
280 const Type1& s1, \
281 const tmp<DimensionedField<Type2, GeoMesh>>& tf2 \
282);
283
284
285#define BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
286 \
287TEMPLATE \
288void OpFunc \
289( \
290 DimensionedField<ReturnType, GeoMesh>& result, \
291 const DimensionedField<Type1, GeoMesh>& f1, \
292 const dimensioned<Type2>& dt2 \
293); \
294 \
295TEMPLATE \
296tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
297( \
298 const DimensionedField<Type1, GeoMesh>& f1, \
299 const dimensioned<Type2>& dt2 \
300); \
301 \
302TEMPLATE \
303tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
304( \
305 const DimensionedField<Type1, GeoMesh>& f1, \
306 const Type2& s2 \
307); \
308 \
309TEMPLATE \
310tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
311( \
312 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
313 const dimensioned<Type2>& dt2 \
314); \
315 \
316TEMPLATE \
317tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
318( \
319 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
320 const Type2& s2 \
321);
322
323
324#define BINARY_TYPE_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
325 BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \
326 BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc)
327
328
329// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
330
331#define TERNARY_FUNCTION(ReturnType, Type1, Type2, Type3, Func) \
332 \
333TEMPLATE \
334void Func \
335( \
336 DimensionedField<ReturnType, GeoMesh>& result, \
337 const DimensionedField<Type1, GeoMesh>& f1, \
338 const DimensionedField<Type2, GeoMesh>& f2, \
339 const DimensionedField<Type3, GeoMesh>& f3 \
340); \
341 \
342TEMPLATE \
343tmp<DimensionedField<ReturnType, GeoMesh>> Func \
344( \
345 const DimensionedField<Type1, GeoMesh>& f1, \
346 const DimensionedField<Type2, GeoMesh>& f2, \
347 const DimensionedField<Type3, GeoMesh>& f3 \
348); \
349 \
350TEMPLATE \
351tmp<DimensionedField<ReturnType, GeoMesh>> Func \
352( \
353 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
354 const DimensionedField<Type2, GeoMesh>& f2, \
355 const DimensionedField<Type3, GeoMesh>& f3 \
356); \
357 \
358TEMPLATE \
359tmp<DimensionedField<ReturnType, GeoMesh>> Func \
360( \
361 const DimensionedField<Type1, GeoMesh>& f1, \
362 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
363 const DimensionedField<Type3, GeoMesh>& f3 \
364); \
365 \
366TEMPLATE \
367tmp<DimensionedField<ReturnType, GeoMesh>> Func \
368( \
369 const DimensionedField<Type1, GeoMesh>& f1, \
370 const DimensionedField<Type2, GeoMesh>& f2, \
371 const tmp<DimensionedField<Type3, GeoMesh>>& tf3 \
372); \
373 \
374TEMPLATE \
375tmp<DimensionedField<ReturnType, GeoMesh>> Func \
376( \
377 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
378 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
379 const DimensionedField<Type3, GeoMesh>& f3 \
380); \
381 \
382TEMPLATE \
383tmp<DimensionedField<ReturnType, GeoMesh>> Func \
384( \
385 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
386 const DimensionedField<Type2, GeoMesh>& f2, \
387 const tmp<DimensionedField<Type3, GeoMesh>>& tf3 \
388); \
389 \
390TEMPLATE \
391tmp<DimensionedField<ReturnType, GeoMesh>> Func \
392( \
393 const DimensionedField<Type1, GeoMesh>& f1, \
394 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
395 const tmp<DimensionedField<Type3, GeoMesh>>& tf3 \
396); \
397 \
398TEMPLATE \
399tmp<DimensionedField<ReturnType, GeoMesh>> Func \
400( \
401 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
402 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
403 const tmp<DimensionedField<Type3, GeoMesh>>& tf3 \
404);
405
406
407#define TERNARY_TYPE_FUNCTION_FFS(ReturnType, Type1, Type2, Type3, Func) \
408 \
409TEMPLATE \
410void Func \
411( \
412 DimensionedField<ReturnType, GeoMesh>& result, \
413 const DimensionedField<Type1, GeoMesh>& f1, \
414 const DimensionedField<Type2, GeoMesh>& f2, \
415 const dimensioned<Type3>& dt3 \
416); \
417 \
418TEMPLATE \
419tmp<DimensionedField<ReturnType, GeoMesh>> Func \
420( \
421 const DimensionedField<Type1, GeoMesh>& f1, \
422 const DimensionedField<Type2, GeoMesh>& f2, \
423 const dimensioned<Type3>& dt3 \
424); \
425 \
426TEMPLATE \
427tmp<DimensionedField<ReturnType, GeoMesh>> Func \
428( \
429 const DimensionedField<Type1, GeoMesh>& f1, \
430 const DimensionedField<Type2, GeoMesh>& f2, \
431 const Type3& s3 \
432); \
433 \
434TEMPLATE \
435tmp<DimensionedField<ReturnType, GeoMesh>> Func \
436( \
437 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
438 const DimensionedField<Type2, GeoMesh>& f2, \
439 const dimensioned<Type3>& dt3 \
440); \
441 \
442TEMPLATE \
443tmp<DimensionedField<ReturnType, GeoMesh>> Func \
444( \
445 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
446 const DimensionedField<Type2, GeoMesh>& f2, \
447 const Type3& s3 \
448); \
449 \
450TEMPLATE \
451tmp<DimensionedField<ReturnType, GeoMesh>> Func \
452( \
453 const DimensionedField<Type1, GeoMesh>& f1, \
454 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
455 const dimensioned<Type3>& dt3 \
456); \
457 \
458TEMPLATE \
459tmp<DimensionedField<ReturnType, GeoMesh>> Func \
460( \
461 const DimensionedField<Type1, GeoMesh>& f1, \
462 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
463 const Type3& s3 \
464); \
465 \
466TEMPLATE \
467tmp<DimensionedField<ReturnType, GeoMesh>> Func \
468( \
469 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
470 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
471 const dimensioned<Type3>& dt3 \
472); \
473 \
474TEMPLATE \
475tmp<DimensionedField<ReturnType, GeoMesh>> Func \
476( \
477 const tmp<DimensionedField<Type1, GeoMesh>>& tf1, \
478 const tmp<DimensionedField<Type2, GeoMesh>>& tf2, \
479 const Type3& s3 \
480);
481
482
483// ************************************************************************* //