FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

FieldM.H File Reference

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...


Detailed Description

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 Documentation

#define TFOR_ALL_F_OP_FUNC_F (   typeF1,
  f1,
  OP,
  FUNC,
  typeF2,
  f2  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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                                                        \

Definition at line 268 of file FieldM.H.

#define TFOR_ALL_F_OP_S_OP_F (   typeF1,
  f1,
  OP1,
  typeS,
  s,
  OP2,
  typeF2,
  f2  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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                                                        \

Definition at line 304 of file FieldM.H.

#define TFOR_ALL_F_OP_F (   typeF1,
  f1,
  OP,
  typeF2,
  f2  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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  
)
Value:
\
    /* 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().