00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 namespace Foam
00033 {
00034
00035
00036
00037 template<template<class> class PatchField, class PointPatch, class Type>
00038 inline void component
00039 (
00040 PointPatchField<PatchField, PointPatch, typename Field<Type>::cmptType>& sf,
00041 const PointPatchField<PatchField, PointPatch, Type>& f,
00042 const direction d
00043 ){}
00044
00045
00046 template<template<class> class PatchField, class PointPatch, class Type>
00047 inline void T
00048 (
00049 PointPatchField<PatchField, PointPatch, Type>& f1,
00050 const PointPatchField<PatchField, PointPatch, Type>& f2
00051 ){}
00052
00053
00054 template<template<class> class PatchField, class PointPatch, class Type, int r>
00055 inline void pow
00056 (
00057 Field<typename powProduct<Type, r>::type>& f,
00058 const PointPatchField<PatchField, PointPatch, Type>& vf
00059 ){}
00060
00061
00062 template<template<class> class PatchField, class PointPatch, class Type>
00063 inline void sqr
00064 (
00065 Field<typename outerProduct<Type, Type>::type>& f,
00066 const PointPatchField<PatchField, PointPatch, Type>& vf
00067 ){}
00068
00069
00070 template<template<class> class PatchField, class PointPatch, class Type>
00071 inline void magSqr
00072 (
00073 PointPatchField<PatchField, PointPatch, scalar>& sf,
00074 const PointPatchField<PatchField, PointPatch, Type>& f
00075 ){}
00076
00077
00078 template<template<class> class PatchField, class PointPatch, class Type>
00079 inline void mag
00080 (
00081 PointPatchField<PatchField, PointPatch, scalar>& sf,
00082 const PointPatchField<PatchField, PointPatch, Type>& f
00083 ){}
00084
00085
00086 template<template<class> class PatchField, class PointPatch, class Type>
00087 inline void cmptAv
00088 (
00089 PointPatchField<PatchField, PointPatch, typename Field<Type>::cmptType>& cf,
00090 const PointPatchField<PatchField, PointPatch, Type>& f
00091 ){}
00092
00093
00094 template<template<class> class PatchField, class PointPatch, class Type>
00095 inline void cmptMag
00096 (
00097 PointPatchField<PatchField, PointPatch, Type>& cf,
00098 const PointPatchField<PatchField, PointPatch, Type>& f
00099 ){}
00100
00101
00102 #define BINARY_FUNCTION(func) \
00103 \
00104 template<template<class> class PatchField, class PointPatch, class Type> \
00105 inline void func \
00106 ( \
00107 PointPatchField<PatchField, PointPatch, Type>& f, \
00108 const PointPatchField<PatchField, PointPatch, Type>& f1, \
00109 const PointPatchField<PatchField, PointPatch, Type>& f2 \
00110 ){} \
00111 \
00112 template<template<class> class PatchField, class PointPatch, class Type> \
00113 inline void func \
00114 ( \
00115 PointPatchField<PatchField, PointPatch, Type>& f, \
00116 const PointPatchField<PatchField, PointPatch, Type>& f1, \
00117 const Type& s \
00118 ){}
00119
00120 BINARY_FUNCTION(max)
00121 BINARY_FUNCTION(min)
00122 BINARY_FUNCTION(scale)
00123
00124 #undef BINARY_FUNCTION
00125
00126
00127
00128
00129 #define UNARY_OPERATOR(op, opFunc) \
00130 \
00131 template<template<class> class PatchField, class PointPatch, class Type> \
00132 inline void opFunc \
00133 ( \
00134 PointPatchField<PatchField, PointPatch, Type>& f, \
00135 const PointPatchField<PatchField, PointPatch, Type>& f1 \
00136 ){}
00137
00138 UNARY_OPERATOR(-, negate)
00139
00140 #undef UNARY_OPERATOR
00141
00142
00143 #define BINARY_OPERATOR_FF(Type1, Type2, op, opFunc) \
00144 \
00145 template<template<class> class PatchField, class PointPatch, class Type> \
00146 inline void opFunc \
00147 ( \
00148 PointPatchField<PatchField, PointPatch, Type>& f, \
00149 const PointPatchField<PatchField, PointPatch, Type1>& f1, \
00150 const PointPatchField<PatchField, PointPatch, Type2>& f2 \
00151 ){}
00152
00153 #define BINARY_OPERATOR_R(Type1, Type2, op, opFunc) \
00154 BINARY_OPERATOR_FF(Type1, Type2, op, opFunc)
00155
00156 BINARY_OPERATOR_R(Type, Type, +, add)
00157 BINARY_OPERATOR_R(Type, Type, -, subtract)
00158 BINARY_OPERATOR_FF(scalar, Type, *, multiply)
00159 BINARY_OPERATOR_FF(Type, scalar, /, divide)
00160
00161 #undef BINARY_OPERATOR_R
00162 #undef BINARY_OPERATOR_FF
00163 #undef BINARY_OPERATOR_FTR
00164 #undef BINARY_OPERATOR_TF
00165 #undef BINARY_OPERATOR_TTR
00166 #undef BINARY_OPERATOR_FT
00167 #undef BINARY_OPERATOR_TRF
00168 #undef BINARY_OPERATOR_TRT
00169
00170
00171 #define BINARY_TYPE_OPERATOR_TF(TYPE, op, opFunc) \
00172 \
00173 template<template<class> class PatchField, class PointPatch, class Type> \
00174 inline void opFunc \
00175 ( \
00176 PointPatchField<PatchField, PointPatch, Type>& f, \
00177 const TYPE& s, \
00178 const PointPatchField<PatchField, PointPatch, Type>& f1 \
00179 ){}
00180
00181
00182 #define BINARY_TYPE_OPERATOR_FT(TYPE, op, opFunc) \
00183 \
00184 template<template<class> class PatchField, class PointPatch, class Type> \
00185 inline void opFunc \
00186 ( \
00187 PointPatchField<PatchField, PointPatch, Type>& f, \
00188 const PointPatchField<PatchField, PointPatch, Type>& f1, \
00189 const TYPE& s \
00190 ){}
00191
00192
00193 #define BINARY_TYPE_OPERATOR(TYPE, op, opFunc) \
00194 BINARY_TYPE_OPERATOR_TF(TYPE, op, opFunc) \
00195 BINARY_TYPE_OPERATOR_FT(TYPE, op, opFunc)
00196
00197 BINARY_TYPE_OPERATOR(Type, +, add)
00198 BINARY_TYPE_OPERATOR(Type, -, subtract)
00199
00200 BINARY_TYPE_OPERATOR(scalar, *, multiply)
00201 BINARY_TYPE_OPERATOR_FT(scalar, /, divide)
00202
00203 #undef BINARY_TYPE_OPERATOR
00204 #undef BINARY_TYPE_OPERATOR_TF
00205 #undef BINARY_TYPE_OPERATOR_FT
00206
00207
00208 #define PRODUCT_OPERATOR(product, op, opFunc) \
00209 \
00210 template \
00211 < \
00212 template<class> class PatchField, \
00213 class PointPatch, \
00214 class Type1, \
00215 class Type2 \
00216 > \
00217 inline void opFunc \
00218 ( \
00219 PointPatchField \
00220 <PatchField, PointPatch, typename product<Type1, Type2>::type>& f, \
00221 const PointPatchField<PatchField, PointPatch, Type1>& f1, \
00222 const PointPatchField<PatchField, PointPatch, Type2>& f2 \
00223 ){} \
00224 \
00225 template \
00226 < \
00227 template<class> class PatchField, \
00228 class PointPatch, \
00229 class Type, \
00230 class Form, \
00231 class Cmpt, \
00232 int nCmpt \
00233 > \
00234 inline void opFunc \
00235 ( \
00236 PointPatchField \
00237 <PatchField, PointPatch, typename product<Type, Form>::type>& f, \
00238 const PointPatchField<PatchField, PointPatch, Type>& f1, \
00239 const VectorSpace<Form,Cmpt,nCmpt>& vs \
00240 ){} \
00241 \
00242 template \
00243 < \
00244 template<class> class PatchField, \
00245 class PointPatch, \
00246 class Form, \
00247 class Cmpt, \
00248 int nCmpt, \
00249 class Type \
00250 > \
00251 inline void opFunc \
00252 ( \
00253 PointPatchField \
00254 <PatchField, PointPatch, typename product<Form, Type>::type>& f, \
00255 const VectorSpace<Form,Cmpt,nCmpt>& vs, \
00256 const PointPatchField<PatchField, PointPatch, Type>& f1 \
00257 ){}
00258
00259 PRODUCT_OPERATOR(outerProduct, *, outer)
00260 PRODUCT_OPERATOR(crossProduct, ^, cross)
00261 PRODUCT_OPERATOR(innerProduct, &, dot)
00262 PRODUCT_OPERATOR(scalarProduct, &&, dotdot)
00263
00264 #undef PRODUCT_OPERATOR
00265
00266
00267 template<template<class> class PatchField, class PointPatch>
00268 void hdual
00269 (
00270 PointPatchField<PatchField, PointPatch, vector>&,
00271 const PointPatchField<PatchField, PointPatch, tensor>&
00272 ){}
00273
00274 template<template<class> class PatchField, class PointPatch>
00275 void hdual
00276 (
00277 PointPatchField<PatchField, PointPatch, tensor>&,
00278 const PointPatchField<PatchField, PointPatch, vector>&
00279 ){}
00280
00281 template<template<class> class PatchField, class PointPatch>
00282 void diag
00283 (
00284 PointPatchField<PatchField, PointPatch, vector>&,
00285 const PointPatchField<PatchField, PointPatch, tensor>&
00286 ){}
00287
00288 template<template<class> class PatchField, class PointPatch>
00289 void tr
00290 (
00291 PointPatchField<PatchField, PointPatch, scalar>&,
00292 const PointPatchField<PatchField, PointPatch, tensor>&
00293 ){}
00294
00295 template<template<class> class PatchField, class PointPatch>
00296 void dev
00297 (
00298 PointPatchField<PatchField, PointPatch, tensor>&,
00299 const PointPatchField<PatchField, PointPatch, tensor>&
00300 ){}
00301
00302 template<template<class> class PatchField, class PointPatch>
00303 void dev2
00304 (
00305 PointPatchField<PatchField, PointPatch, tensor>&,
00306 const PointPatchField<PatchField, PointPatch, tensor>&
00307 ){}
00308
00309 template<template<class> class PatchField, class PointPatch>
00310 void det
00311 (
00312 PointPatchField<PatchField, PointPatch, scalar>&,
00313 const PointPatchField<PatchField, PointPatch, tensor>&
00314 ){}
00315
00316 template<template<class> class PatchField, class PointPatch>
00317 void inv
00318 (
00319 PointPatchField<PatchField, PointPatch, tensor>&,
00320 const PointPatchField<PatchField, PointPatch, tensor>&
00321 ){}
00322
00323 template<template<class> class PatchField, class PointPatch>
00324 void hinv
00325 (
00326 PointPatchField<PatchField, PointPatch, tensor>&,
00327 const PointPatchField<PatchField, PointPatch, tensor>&
00328 ){}
00329
00330 template<template<class> class PatchField, class PointPatch>
00331 void symm
00332 (
00333 PointPatchField<PatchField, PointPatch, tensor>&,
00334 const PointPatchField<PatchField, PointPatch, tensor>&
00335 ){}
00336
00337 template<template<class> class PatchField, class PointPatch>
00338 void skew
00339 (
00340 PointPatchField<PatchField, PointPatch, tensor>&,
00341 const PointPatchField<PatchField, PointPatch, tensor>&
00342 ){}
00343
00344 template<template<class> class PatchField, class PointPatch>
00345 void eigenValues
00346 (
00347 PointPatchField<PatchField, PointPatch, vector>&,
00348 const PointPatchField<PatchField, PointPatch, tensor>&
00349 ){}
00350
00351 template<template<class> class PatchField, class PointPatch>
00352 void eigenVectors
00353 (
00354 PointPatchField<PatchField, PointPatch, tensor>&,
00355 const PointPatchField<PatchField, PointPatch, tensor>&
00356 ){}
00357
00358
00359
00360
00361 }
00362
00363