All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Macros | Functions
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...

Include dependency graph for FieldM.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 Foam
 Namespace for OpenFOAM.
 

Macros

#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 *)
 

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.

Original source file FieldM.H

Definition in file FieldM.H.

Macro Definition Documentation

◆ TFOR_ALL_F_OP_FUNC_F

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 112 of file FieldM.H.

Referenced by Foam::cmptAv(), Foam::cmptMag(), Foam::cmptMax(), Foam::cmptMin(), Foam::inv(), Foam::mag(), Foam::magSqr(), and Foam::sqr().

◆ TFOR_ALL_F_OP_F_FUNC

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 127 of file FieldM.H.

Referenced by Foam::T().

◆ TFOR_ALL_F_OP_FUNC_F_F

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 144 of file FieldM.H.

Referenced by Foam::transform().

◆ TFOR_ALL_S_OP_FUNC_F_F

#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 \
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 163 of file FieldM.H.

Referenced by Foam::sumCmptProd().

◆ TFOR_ALL_F_OP_FUNC_F_S

#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
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 180 of file FieldM.H.

Referenced by Foam::pow().

◆ TFOR_ALL_S_OP_FUNC_F_S

#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 \
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73
labelList f(nPoints)

Definition at line 197 of file FieldM.H.

Referenced by Foam::max(), Foam::maxMagSqr(), Foam::min(), and Foam::minMagSqr().

◆ TFOR_ALL_F_OP_FUNC_S_F

#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 \
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 210 of file FieldM.H.

Referenced by Field< Foam::Vector2D >::replace(), Foam::stabilise(), and Foam::transform().

◆ TFOR_ALL_F_OP_FUNC_S_S

#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 \
scalar f1
Definition: createFields.H:28

Definition at line 227 of file FieldM.H.

Referenced by Field< Foam::Vector2D >::replace().

◆ TFOR_ALL_F_OP_F_FUNC_S

#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 \
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 240 of file FieldM.H.

Referenced by Foam::component().

◆ TFOR_ALL_F_OP_F_OP_F

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 259 of file FieldM.H.

◆ TFOR_ALL_F_OP_S_OP_F

#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 \
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 278 of file FieldM.H.

◆ TFOR_ALL_F_OP_F_OP_S

#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 \
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 295 of file FieldM.H.

Referenced by Foam::transformPoints().

◆ TFOR_ALL_F_OP_F

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 312 of file FieldM.H.

Referenced by Foam::transformFieldMask< tensor >().

◆ TFOR_ALL_F_OP_OP_F

#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 \
scalar f1
Definition: createFields.H:28
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 329 of file FieldM.H.

Referenced by Field< Foam::Vector2D >::negate().

◆ TFOR_ALL_F_OP_S

#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 \
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
labelList f(nPoints)

Definition at line 347 of file FieldM.H.

Referenced by Field< Foam::Vector2D >::operator=().

◆ TFOR_ALL_S_OP_F

#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
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73
labelList f(nPoints)

Definition at line 363 of file FieldM.H.

Referenced by Foam::sum().

◆ TFOR_ALL_S_OP_F_OP_F

#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
scalar f1
Definition: createFields.H:28
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73

Definition at line 376 of file FieldM.H.

Referenced by Foam::sumProd().

◆ TFOR_ALL_S_OP_FUNC_F

#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
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define List_ELEM(f, fp, i)
Definition: ListLoopM.H:73
labelList f(nPoints)

Definition at line 390 of file FieldM.H.

Referenced by Foam::sumCmptMag(), Foam::sumMag(), and Foam::sumSqr().