High performance macro functions for Field<Type> algebra. These expand using either array element access (for vector machines) or pointer dereferencing for scalar machines as appropriate. More...
High performance macro functions for Field<Type> algebra. These expand using either array element access (for vector machines) or pointer dereferencing for scalar machines as appropriate.
Definition in file FieldM.H.
#include "src/OpenFOAM/db/error/error.H"#include "src/OpenFOAM/containers/Lists/List/ListLoopM.H"
Include dependency graph for FieldM.H:Go to the source code of this file.
Namespaces | |
| namespace | Foam |
Namespace for OpenFOAM. | |
Defines | |
| #define | TFOR_ALL_F_OP_FUNC_F(typeF1, f1, OP, FUNC, typeF2, f2) |
| #define | TFOR_ALL_F_OP_F_FUNC(typeF1, f1, OP, typeF2, f2, FUNC) |
| #define | TFOR_ALL_F_OP_FUNC_F_F(typeF1, f1, OP, FUNC, typeF2, f2, typeF3, f3) |
| #define | TFOR_ALL_S_OP_FUNC_F_F(typeS, s, OP, FUNC, typeF1, f1, typeF2, f2) |
| #define | TFOR_ALL_F_OP_FUNC_F_S(typeF1, f1, OP, FUNC, typeF2, f2, typeS, s) |
| #define | TFOR_ALL_S_OP_FUNC_F_S(typeS1, s1, OP, FUNC, typeF, f, typeS2, s2) |
| #define | TFOR_ALL_F_OP_FUNC_S_F(typeF1, f1, OP, FUNC, typeS, s, typeF2, f2) |
| #define | TFOR_ALL_F_OP_FUNC_S_S(typeF1, f1, OP, FUNC, typeS1, s1, typeS2, s2) |
| #define | TFOR_ALL_F_OP_F_FUNC_S(typeF1, f1, OP, typeF2, f2, FUNC, typeS, s) |
| #define | TFOR_ALL_F_OP_F_OP_F(typeF1, f1, OP1, typeF2, f2, OP2, typeF3, f3) |
| #define | TFOR_ALL_F_OP_S_OP_F(typeF1, f1, OP1, typeS, s, OP2, typeF2, f2) |
| #define | TFOR_ALL_F_OP_F_OP_S(typeF1, f1, OP1, typeF2, f2, OP2, typeS, s) |
| #define | TFOR_ALL_F_OP_F(typeF1, f1, OP, typeF2, f2) |
| #define | TFOR_ALL_F_OP_OP_F(typeF1, f1, OP1, OP2, typeF2, f2) |
| #define | TFOR_ALL_F_OP_S(typeF, f, OP, typeS, s) |
| #define | TFOR_ALL_S_OP_F(typeS, s, OP, typeF, f) |
| #define | TFOR_ALL_S_OP_F_OP_F(typeS, s, OP1, typeF1, f1, OP2, typeF2, f2) |
| #define | TFOR_ALL_S_OP_FUNC_F(typeS, s, OP, FUNC, typeF, f) |
Functions | |
| template<class Type1 , class Type2 > | |
| void | checkFields (const UList< Type1 > &, const UList< Type2 > &, const char *) |
| template<class Type1 , class Type2 , class Type3 > | |
| void | checkFields (const UList< Type1 > &, const UList< Type2 > &, const UList< Type3 > &, const char *) |
| #define TFOR_ALL_F_OP_FUNC_F | ( | typeF1, | |
| f1, | |||
| OP, | |||
| FUNC, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " " #FUNC "(f2)"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP FUNC(List_ELEM(f2, f2P, i)); \
List_END_FOR_ALL \
Definition at line 121 of file FieldM.H.
Referenced by Foam::cmptAv(), Foam::cmptMag(), Foam::cmptMax(), Foam::cmptMin(), Foam::inv(), Foam::mag(), Foam::magSqr(), and Foam::sqr().
| #define TFOR_ALL_F_OP_F_FUNC | ( | typeF1, | |
| f1, | |||
| OP, | |||
| typeF2, | |||
| f2, | |||
| FUNC | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " f2" #FUNC); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP List_ELEM(f2, f2P, i).FUNC(); \
List_END_FOR_ALL \
Definition at line 136 of file FieldM.H.
Referenced by Foam::T().
| #define TFOR_ALL_F_OP_FUNC_F_F | ( | typeF1, | |
| f1, | |||
| OP, | |||
| FUNC, | |||
| typeF2, | |||
| f2, | |||
| typeF3, | |||
| f3 | |||
| ) |
\
/* check the three fields have same Field<Type> mesh */ \
checkFields(f1, f2, f3, "f1 " #OP " " #FUNC "(f2, f3)"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
List_CONST_ACCESS(typeF3, f3, f3P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) \
OP FUNC(List_ELEM(f2, f2P, i), List_ELEM(f3, f3P, i)); \
List_END_FOR_ALL \
Definition at line 153 of file FieldM.H.
Referenced by Foam::transform().
| #define TFOR_ALL_S_OP_FUNC_F_F | ( | typeS, | |
| s, | |||
| OP, | |||
| FUNC, | |||
| typeF1, | |||
| f1, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "s " #OP " " #FUNC "(f1, f2)"); \
\
/* set access to f1 and f2 at end of each field */ \
List_CONST_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing s OP FUNC(f1, f2) */ \
List_FOR_ALL(f1, i) \
(s) OP FUNC(List_ELEM(f1, f1P, i), List_ELEM(f2, f2P, i)); \
List_END_FOR_ALL \
Definition at line 172 of file FieldM.H.
Referenced by Foam::sumCmptProd().
| #define TFOR_ALL_F_OP_FUNC_F_S | ( | typeF1, | |
| f1, | |||
| OP, | |||
| FUNC, | |||
| typeF2, | |||
| f2, | |||
| typeS, | |||
| s | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " " #FUNC "(f2, s)"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP FUNC(List_ELEM(f2, f2P, i), (s)); \
List_END_FOR_ALL
Definition at line 189 of file FieldM.H.
Referenced by Foam::pow().
| #define TFOR_ALL_S_OP_FUNC_F_S | ( | typeS1, | |
| s1, | |||
| OP, | |||
| FUNC, | |||
| typeF, | |||
| f, | |||
| typeS2, | |||
| s2 | |||
| ) |
\
/* set access to f at end of field */ \
List_CONST_ACCESS(typeF, f, fP); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f, i) \
(s1) OP FUNC(List_ELEM(f, fP, i), (s2)); \
List_END_FOR_ALL \
Definition at line 206 of file FieldM.H.
Referenced by Foam::max(), and Foam::min().
| #define TFOR_ALL_F_OP_FUNC_S_F | ( | typeF1, | |
| f1, | |||
| OP, | |||
| FUNC, | |||
| typeS, | |||
| s, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " " #FUNC "(s, f2)"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP FUNC((s), List_ELEM(f2, f2P, i)); \
List_END_FOR_ALL \
Definition at line 219 of file FieldM.H.
Referenced by Field< Type >::replace(), Foam::stabilise(), and Foam::transform().
| #define TFOR_ALL_F_OP_FUNC_S_S | ( | typeF1, | |
| f1, | |||
| OP, | |||
| FUNC, | |||
| typeS1, | |||
| s1, | |||
| typeS2, | |||
| s2 | |||
| ) |
\
/* set access to f1 at end of field */ \
List_ACCESS(typeF1, f1, f1P); \
\
/* loop through fields performing f1 OP1 FUNC(s1, s2) */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP FUNC((s1), (s2)); \
List_END_FOR_ALL \
Definition at line 236 of file FieldM.H.
Referenced by Field< Type >::replace().
| #define TFOR_ALL_F_OP_F_FUNC_S | ( | typeF1, | |
| f1, | |||
| OP, | |||
| typeF2, | |||
| f2, | |||
| FUNC, | |||
| typeS, | |||
| s | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " f2 " #FUNC "(s)"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP List_ELEM(f2, f2P, i) FUNC((s)); \
List_END_FOR_ALL \
Definition at line 249 of file FieldM.H.
Referenced by Foam::component().
| #define TFOR_ALL_F_OP_F_OP_F | ( | typeF1, | |
| f1, | |||
| OP1, | |||
| typeF2, | |||
| f2, | |||
| OP2, | |||
| typeF3, | |||
| f3 | |||
| ) |
\
/* check the three fields have same Field<Type> mesh */ \
checkFields(f1, f2, f3, "f1 " #OP1 " f2 " #OP2 " f3"); \
\
/* set access to f1, f2 and f3 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
List_CONST_ACCESS(typeF3, f3, f3P); \
\
/* loop through fields performing f1 OP1 f2 OP2 f3 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP1 List_ELEM(f2, f2P, i) \
OP2 List_ELEM(f3, f3P, i); \
List_END_FOR_ALL \
| #define TFOR_ALL_F_OP_S_OP_F | ( | typeF1, | |
| f1, | |||
| OP1, | |||
| typeS, | |||
| s, | |||
| OP2, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP1 " s " #OP2 " f2"); \
\
/* set access to f1 and f2 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 s OP2 f2 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP1 (s) OP2 List_ELEM(f2, f2P, i); \
List_END_FOR_ALL \
Definition at line 287 of file FieldM.H.
Referenced by Foam::transform().
| #define TFOR_ALL_F_OP_F_OP_S | ( | typeF1, | |
| f1, | |||
| OP1, | |||
| typeF2, | |||
| f2, | |||
| OP2, | |||
| typeS, | |||
| s | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP1 " f2 " #OP2 " s"); \
\
/* set access to f1 and f2 at end of each field */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 s OP2 f2 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP1 List_ELEM(f2, f2P, i) OP2 (s); \
List_END_FOR_ALL \
| #define TFOR_ALL_F_OP_F | ( | typeF1, | |
| f1, | |||
| OP, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, "f1 " #OP " f2"); \
\
/* set pointer to f1P at end of f1 and */ \
/* f2.p at end of f2 */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP f2 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP List_ELEM(f2, f2P, i); \
List_END_FOR_ALL \
Definition at line 321 of file FieldM.H.
Referenced by Foam::transformFieldMask< tensor >().
| #define TFOR_ALL_F_OP_OP_F | ( | typeF1, | |
| f1, | |||
| OP1, | |||
| OP2, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* check the two fields have same Field<Type> mesh */ \
checkFields(f1, f2, #OP1 " " #OP2 " f2"); \
\
/* set pointer to f1P at end of f1 and */ \
/* f2.p at end of f2 */ \
List_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through fields performing f1 OP1 OP2 f2 */ \
List_FOR_ALL(f1, i) \
List_ELEM(f1, f1P, i) OP1 OP2 List_ELEM(f2, f2P, i); \
List_END_FOR_ALL \
Definition at line 338 of file FieldM.H.
Referenced by Field< Type >::negate().
| #define TFOR_ALL_F_OP_S | ( | typeF, | |
| f, | |||
| OP, | |||
| typeS, | |||
| s | |||
| ) |
\
/* set access to f at end of field */ \
List_ACCESS(typeF, f, fP); \
\
/* loop through field performing f OP s */ \
List_FOR_ALL(f, i) \
List_ELEM(f, fP, i) OP (s); \
List_END_FOR_ALL \
Definition at line 356 of file FieldM.H.
Referenced by Field< Type >::operator=().
| #define TFOR_ALL_S_OP_F | ( | typeS, | |
| s, | |||
| OP, | |||
| typeF, | |||
| f | |||
| ) |
\
/* set access to f at end of field */ \
List_CONST_ACCESS(typeF, f, fP); \
\
/* loop through field performing s OP f */ \
List_FOR_ALL(f, i) \
(s) OP List_ELEM(f, fP, i); \
List_END_FOR_ALL
Definition at line 372 of file FieldM.H.
Referenced by Foam::sum().
| #define TFOR_ALL_S_OP_F_OP_F | ( | typeS, | |
| s, | |||
| OP1, | |||
| typeF1, | |||
| f1, | |||
| OP2, | |||
| typeF2, | |||
| f2 | |||
| ) |
\
/* set access to f1 and f2 at end of each field */ \
List_CONST_ACCESS(typeF1, f1, f1P); \
List_CONST_ACCESS(typeF2, f2, f2P); \
\
/* loop through field performing s OP f */ \
List_FOR_ALL(f1, i) \
(s) OP1 List_ELEM(f1, f1P, i) OP2 List_ELEM(f2, f2P, i); \
List_END_FOR_ALL
Definition at line 385 of file FieldM.H.
Referenced by Foam::sumProd().
| #define TFOR_ALL_S_OP_FUNC_F | ( | typeS, | |
| s, | |||
| OP, | |||
| FUNC, | |||
| typeF, | |||
| f | |||
| ) |
\
/* set access to f at end of field */ \
List_CONST_ACCESS(typeF, f, fP); \
\
/* loop through field performing s OP f */ \
List_FOR_ALL(f, i) \
(s) OP FUNC(List_ELEM(f, fP, i)); \
List_END_FOR_ALL
Definition at line 399 of file FieldM.H.
Referenced by Foam::sumCmptMag(), Foam::sumMag(), and Foam::sumSqr().