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 -------------------------------------------------------------------------------
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 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
29 
30 #define UNARY_FUNCTION(ReturnType, Type1, Func, Dfunc) \
31  \
32 TEMPLATE \
33 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
34 ( \
35  const DimensionedField<Type1, GeoMesh>& df \
36 ); \
37  \
38 TEMPLATE \
39 tmp<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  \
49 TEMPLATE \
50 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
51 ( \
52  const DimensionedField<Type1, GeoMesh>& df1 \
53 ); \
54  \
55 TEMPLATE \
56 tmp<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  \
66 TEMPLATE \
67 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
68 ( \
69  const DimensionedField<Type1, GeoMesh>& df1, \
70  const DimensionedField<Type2, GeoMesh>& df2 \
71 ); \
72  \
73 TEMPLATE \
74 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
75 ( \
76  const DimensionedField<Type1, GeoMesh>& df1, \
77  const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
78 ); \
79  \
80 TEMPLATE \
81 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
82 ( \
83  const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
84  const DimensionedField<Type2, GeoMesh>& df2 \
85 ); \
86  \
87 TEMPLATE \
88 tmp<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  \
99 TEMPLATE \
100 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
101 ( \
102  const dimensioned<Type1>& dt1, \
103  const DimensionedField<Type2, GeoMesh>& df2 \
104 ); \
105  \
106 TEMPLATE \
107 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
108 ( \
109  const Type1& t1, \
110  const DimensionedField<Type2, GeoMesh>& df2 \
111 ); \
112  \
113 TEMPLATE \
114 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
115 ( \
116  const dimensioned<Type1>& dt1, \
117  const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
118 ); \
119  \
120 TEMPLATE \
121 tmp<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  \
130 TEMPLATE \
131 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
132 ( \
133  const DimensionedField<Type1, GeoMesh>& df1, \
134  const dimensioned<Type2>& dt2 \
135 ); \
136  \
137 TEMPLATE \
138 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
139 ( \
140  const DimensionedField<Type1, GeoMesh>& df1, \
141  const Type2& t2 \
142 ); \
143  \
144 TEMPLATE \
145 tmp<DimensionedField<ReturnType, GeoMesh>> Func \
146 ( \
147  const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
148  const dimensioned<Type2>& dt2 \
149 ); \
150  \
151 TEMPLATE \
152 tmp<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  \
168 TEMPLATE \
169 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
170 ( \
171  const DimensionedField<Type1, GeoMesh>& df1, \
172  const DimensionedField<Type2, GeoMesh>& df2 \
173 ); \
174  \
175 TEMPLATE \
176 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
177 ( \
178  const DimensionedField<Type1, GeoMesh>& df1, \
179  const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
180 ); \
181  \
182 TEMPLATE \
183 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
184 ( \
185  const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
186  const DimensionedField<Type2, GeoMesh>& df2 \
187 ); \
188  \
189 TEMPLATE \
190 tmp<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  \
201 TEMPLATE \
202 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
203 ( \
204  const dimensioned<Type1>& dt1, \
205  const DimensionedField<Type2, GeoMesh>& df2 \
206 ); \
207  \
208 TEMPLATE \
209 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
210 ( \
211  const Type1& t1, \
212  const DimensionedField<Type2, GeoMesh>& df2 \
213 ); \
214  \
215 TEMPLATE \
216 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
217 ( \
218  const dimensioned<Type1>& dt1, \
219  const tmp<DimensionedField<Type2, GeoMesh>>& tdf2 \
220 ); \
221  \
222 TEMPLATE \
223 tmp<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  \
232 TEMPLATE \
233 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
234 ( \
235  const DimensionedField<Type1, GeoMesh>& df1, \
236  const dimensioned<Type2>& dt2 \
237 ); \
238  \
239 TEMPLATE \
240 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
241 ( \
242  const DimensionedField<Type1, GeoMesh>& df1, \
243  const Type2& t2 \
244 ); \
245  \
246 TEMPLATE \
247 tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
248 ( \
249  const tmp<DimensionedField<Type1, GeoMesh>>& tdf1, \
250  const dimensioned<Type2>& dt2 \
251 ); \
252  \
253 TEMPLATE \
254 tmp<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 // ************************************************************************* //