28 #define TEMPLATE template<class Type>
41 Field<
typename Field<Type>::cmptType>& res,
48 void T(Field<Type>& res,
const UList<Type>& f);
51 template<
class Type,
int r>
59 template<
class Type,
int r>
68 template<
class Type,
int r>
72 const tmp<Field<Type> >&
tf,
87 sqr(
const UList<Type>& f);
91 sqr(
const tmp<Field<Type> >&
tf);
95 void magSqr(Field<scalar>& res,
const UList<Type>& f);
98 tmp<Field<scalar> >
magSqr(
const UList<Type>& f);
101 tmp<Field<scalar> >
magSqr(
const tmp<Field<Type> >&
tf);
105 void mag(Field<scalar>& res,
const UList<Type>& f);
108 tmp<Field<scalar> >
mag(
const UList<Type>& f);
111 tmp<Field<scalar> >
mag(
const tmp<Field<Type> >&
tf);
115 void cmptMax(Field<
typename Field<Type>::cmptType>& res,
const UList<Type>& f);
118 tmp<Field<typename Field<Type>::cmptType> >
cmptMax(
const UList<Type>& f);
121 tmp<Field<typename Field<Type>::cmptType> >
126 void cmptMin(Field<
typename Field<Type>::cmptType>& res,
const UList<Type>& f);
129 tmp<Field<typename Field<Type>::cmptType> >
cmptMin(
const UList<Type>& f);
132 tmp<Field<typename Field<Type>::cmptType> >
137 void cmptAv(Field<
typename Field<Type>::cmptType>& res,
const UList<Type>& f);
140 tmp<Field<typename Field<Type>::cmptType> >
cmptAv(
const UList<Type>& f);
143 tmp<Field<typename Field<Type>::cmptType> >
cmptAv(
const tmp<Field<Type> >&
tf);
147 void cmptMag(Field<Type>& res,
const UList<Type>& f);
150 tmp<Field<Type> >
cmptMag(
const UList<Type>& f);
153 tmp<Field<Type> >
cmptMag(
const tmp<Field<Type> >&
tf);
155 #define TMP_UNARY_FUNCTION(ReturnType, Func) \
157 template<class Type> \
158 ReturnType Func(const tmp<Field<Type> >& tf1);
161 Type
max(
const UList<Type>& f);
166 Type
min(const UList<Type>& f);
171 Type
sum(const UList<Type>& f);
177 scalar
sumProd(const UList<Type>& f1, const UList<Type>& f2);
180 Type
sumCmptProd(const UList<Type>& f1, const UList<Type>& f2);
183 scalar
sumSqr(const UList<Type>& f);
188 scalar
sumMag(const UList<Type>& f);
198 Type
average(const UList<Type>& f);
203 #define G_UNARY_FUNCTION(ReturnType, gFunc, Func, rFunc) \
205 template<class Type> \
206 ReturnType gFunc(const UList<Type>& f); \
207 TMP_UNARY_FUNCTION(ReturnType, gFunc)
216 #undef G_UNARY_FUNCTION
219 scalar
gSumProd(
const UList<Type>& f1,
const UList<Type>& f2);
222 Type
gSumCmptProd(
const UList<Type>& f1,
const UList<Type>& f2);
225 Type
gAverage(
const UList<Type>& f);
229 #undef TMP_UNARY_FUNCTION
259 #define PRODUCT_OPERATOR(product, Op, OpFunc) \
261 template<class Type1, class Type2> \
264 Field<typename product<Type1, Type2>::type>& res, \
265 const UList<Type1>& f1, \
266 const UList<Type2>& f2 \
269 template<class Type1, class Type2> \
270 tmp<Field<typename product<Type1, Type2>::type> > \
271 operator Op(const UList<Type1>& f1, const UList<Type2>& f2); \
273 template<class Type1, class Type2> \
274 tmp<Field<typename product<Type1, Type2>::type> > \
275 operator Op(const UList<Type1>& f1, const tmp<Field<Type2> >& tf2); \
277 template<class Type1, class Type2> \
278 tmp<Field<typename product<Type1, Type2>::type> > \
279 operator Op(const tmp<Field<Type1> >& tf1, const UList<Type2>& f2); \
281 template<class Type1, class Type2> \
282 tmp<Field<typename product<Type1, Type2>::type> > \
283 operator Op(const tmp<Field<Type1> >& tf1, const tmp<Field<Type2> >& tf2); \
285 template<class Type, class Form, class Cmpt, int nCmpt> \
288 Field<typename product<Type, Form>::type>& res, \
289 const UList<Type>& f1, \
290 const VectorSpace<Form,Cmpt,nCmpt>& vs \
293 template<class Type, class Form, class Cmpt, int nCmpt> \
294 tmp<Field<typename product<Type, Form>::type> > \
295 operator Op(const UList<Type>& f1, const VectorSpace<Form,Cmpt,nCmpt>& vs); \
297 template<class Type, class Form, class Cmpt, int nCmpt> \
298 tmp<Field<typename product<Type, Form>::type> > \
299 operator Op(const tmp<Field<Type> >&tf1,const VectorSpace<Form,Cmpt,nCmpt>&vs);\
301 template<class Form, class Cmpt, int nCmpt, class Type> \
304 Field<typename product<Form, Type>::type>& res, \
305 const VectorSpace<Form,Cmpt,nCmpt>& vs, \
306 const UList<Type>& f1 \
309 template<class Form, class Cmpt, int nCmpt, class Type> \
310 tmp<Field<typename product<Form, Type>::type> > \
311 operator Op(const VectorSpace<Form,Cmpt,nCmpt>& vs, const UList<Type>& f1); \
313 template<class Form, class Cmpt, int nCmpt, class Type> \
314 tmp<Field<typename product<Form, Type>::type> > \
315 operator Op(const VectorSpace<Form,Cmpt,nCmpt>&vs,const tmp<Field<Type> >&tf1);
325 #undef PRODUCT_OPERATOR