Foam::FieldOps Namespace Reference

Various utility functions to work on Fields. More...

Functions

template<class Tout , class T1 , class UnaryOp >
void assign (Field< Tout > &result, const Field< T1 > &a, const UnaryOp &op)
 Populate a field as the result of a unary operation on an input. More...
 
template<class Tout , class T1 , class T2 , class BinaryOp >
void assign (Field< Tout > &result, const Field< T1 > &a, const Field< T2 > &b, const BinaryOp &bop)
 Populate a field as the result of a binary operation on two inputs. More...
 
template<class T , class BinaryOp >
void ternary (Field< T > &result, const Field< T > &a, const Field< T > &b, const BinaryOp &bop)
 
template<class T , class BoolListType , class FlipOp >
void ternarySelect (Field< T > &result, const BoolListType &cond, const Field< T > &a, const Field< T > &b, const FlipOp &flip)
 
template<class T , class FlipOp >
void ternarySelect (Field< T > &result, const bitSet &cond, const Field< T > &a, const Field< T > &b, const FlipOp &flip)
 
template<class T , class BoolListType >
void ternarySelect (Field< T > &result, const BoolListType &cond, const Field< T > &a, const Field< T > &b)
 Emulated ternary operation, without condition flipping. More...
 
template<class T >
void ternarySelect (Field< T > &result, const bitSet &cond, const Field< T > &a, const Field< T > &b)
 Emulated ternary operation, without condition flipping. More...
 
template<class T1 , class T2 >
Tuple2< T1, T2 > findMinData (const Field< T1 > &vals, const Field< T2 > &data)
 Locate the min value in a field and return it and associated data. More...
 
template<class T1 , class T2 >
Tuple2< T1, T2 > findMaxData (const Field< T1 > &vals, const Field< T2 > &data)
 Locate the max value in a field and return it and associated data. More...
 
template<class Tout , class T1 , class UnaryOp , template< class > class PatchField, class GeoMesh >
void assign (GeometricField< Tout, PatchField, GeoMesh > &result, const GeometricField< T1, PatchField, GeoMesh > &a, const UnaryOp &op)
 Populate a geometric field as the result of a unary operation on an input. More...
 
template<class Tout , class T1 , class T2 , class BinaryOp , template< class > class PatchField, class GeoMesh >
void assign (GeometricField< Tout, PatchField, GeoMesh > &result, const GeometricField< T1, PatchField, GeoMesh > &a, const GeometricField< T2, PatchField, GeoMesh > &b, const BinaryOp &bop)
 Populate a geometric field from the binary operation on two inputs. More...
 
template<class T , class BinaryOp , template< class > class PatchField, class GeoMesh >
void ternary (GeometricField< T, PatchField, GeoMesh > &result, const GeometricField< T, PatchField, GeoMesh > &a, const GeometricField< T, PatchField, GeoMesh > &b, const BinaryOp &bop)
 
template<class T , class BoolType , class FlipOp , template< class > class PatchField, class GeoMesh >
void ternarySelect (GeometricField< T, PatchField, GeoMesh > &result, const GeometricField< BoolType, PatchField, GeoMesh > &cond, const GeometricField< T, PatchField, GeoMesh > &a, const GeometricField< T, PatchField, GeoMesh > &b, const FlipOp &flip)
 
template<class Tout , class T1 , class UnaryOp >
void assign (pointPatchField< Tout > &result, const pointPatchField< T1 > &a, const UnaryOp &op)
 
template<class Tout , class T1 , class T2 , class BinaryOp >
void assign (pointPatchField< Tout > &result, const pointPatchField< T1 > &a, const pointPatchField< T2 > &b, const BinaryOp &bop)
 
template<class T , class BinaryOp >
void ternary (pointPatchField< T > &result, const pointPatchField< T > &a, const pointPatchField< T > &b, const BinaryOp &bop)
 
template<class T , class BoolType , class FlipOp >
void ternarySelect (pointPatchField< T > &result, const pointPatchField< BoolType > &cond, const pointPatchField< T > &a, const pointPatchField< T > &b, const FlipOp &flip)
 

Detailed Description

Various utility functions to work on Fields.

Source files

Function Documentation

◆ assign() [1/6]

void assign ( Field< Tout > &  result,
const Field< T1 > &  a,
const UnaryOp &  op 
)

Populate a field as the result of a unary operation on an input.

It is permissible for inputs/outputs to refer to the same field(s), but partially overlapping regions are ill-defined.

Examples,

boolField result(sfield1.size());
FieldOps::assign(result, sfield1, lessOp1<scalar>(0.5));
FieldOps::assign(result, lfield1, std::logical_not<bool>());
void assign(Field< Tout > &result, const Field< T1 > &a, const UnaryOp &op)
Populate a field as the result of a unary operation on an input.
Definition: FieldOps.C:36

Example of using the Random::uniformGeneratorOp unary operator to populate a random field,

Note
wraps std::transform

Definition at line 35 of file FieldOps.C.

References Foam::abort(), UList< T >::begin(), UList< T >::cbegin(), UList< T >::cend(), Foam::FatalError, FatalErrorInFunction, Foam::nl, and UList< T >::size().

Referenced by assign(), exprDriver::fill_random(), and parseDriver::setInternalFieldResult().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ assign() [2/6]

void assign ( Field< Tout > &  result,
const Field< T1 > &  a,
const Field< T2 > &  b,
const BinaryOp &  bop 
)

Populate a field as the result of a binary operation on two inputs.

It is permissible for inputs/outputs to refer to the same field(s), but partially overlapping regions are ill-defined.

Examples,

FieldOps::assign(result, sfield1, sfield2, std::less<scalar>());
FieldOps::assign(result, lfield1, lfield2, std::logical_or<bool>());
Note
wraps std::transform

Definition at line 57 of file FieldOps.C.

References Foam::abort(), b, UList< T >::begin(), UList< T >::cbegin(), UList< T >::cend(), Foam::FatalError, FatalErrorInFunction, Foam::nl, and UList< T >::size().

Here is the call graph for this function:

◆ ternary() [1/3]

void ternary ( Field< T > &  result,
const Field< T > &  a,
const Field< T > &  b,
const BinaryOp &  bop 
)

Emulate a ternary operation, selecting values from a or b depending on the binary predicate.

Examples,

FieldOps::ternary(result, sfield1, sfield2, std::less<scalar>());
void ternary(Field< T > &result, const Field< T > &a, const Field< T > &b, const BinaryOp &bop)
Definition: FieldOps.C:81

Definition at line 80 of file FieldOps.C.

References Foam::abort(), b, Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and UList< T >::size().

Referenced by ternary().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ternarySelect() [1/6]

void ternarySelect ( Field< T > &  result,
const BoolListType &  cond,
const Field< T > &  a,
const Field< T > &  b,
const FlipOp &  flip 
)

Emulate a ternary operation, selecting values from a or b depending on the conditional.

The meaning of the conditional is adjusted by the flip operation, which is typically Foam::identityOp() or Foam::flipBoolOp()

Similar parameter requirements as Foam::subset()

Examples,

FieldOps::ternarySelect(result, selector, sfield1, sfield2);
void ternarySelect(Field< T > &result, const BoolListType &cond, const Field< T > &a, const Field< T > &b, const FlipOp &flip)
Definition: FieldOps.C:107

Definition at line 106 of file FieldOps.C.

References Foam::abort(), b, Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and UList< T >::size().

Referenced by ternarySelect().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ternarySelect() [2/6]

void ternarySelect ( Field< T > &  result,
const bitSet cond,
const Field< T > &  a,
const Field< T > &  b,
const FlipOp &  flip 
)

Emulate a ternary operation, selecting values from a or b depending on the conditional.

The meaning of the conditional is adjusted by the flip operation, which is typically Foam::identityOp() or Foam::flipBoolOp()

Definition at line 133 of file FieldOps.C.

References Foam::abort(), b, Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and UList< T >::size().

Here is the call graph for this function:

◆ ternarySelect() [3/6]

void ternarySelect ( Field< T > &  result,
const BoolListType &  cond,
const Field< T > &  a,
const Field< T > &  b 
)

Emulated ternary operation, without condition flipping.

Definition at line 167 of file FieldOps.H.

References b, and ternarySelect().

Here is the call graph for this function:

◆ ternarySelect() [4/6]

void ternarySelect ( Field< T > &  result,
const bitSet cond,
const Field< T > &  a,
const Field< T > &  b 
)

Emulated ternary operation, without condition flipping.

Definition at line 181 of file FieldOps.H.

References b, and ternarySelect().

Here is the call graph for this function:

◆ findMinData()

Tuple2< T1, T2 > findMinData ( const Field< T1 > &  vals,
const Field< T2 > &  data 
)

Locate the min value in a field and return it and associated data.

This can be used, for example, to return a value/position combination.

Referenced by exprDriver::getPositionOfMinimum().

Here is the caller graph for this function:

◆ findMaxData()

Tuple2< T1, T2 > findMaxData ( const Field< T1 > &  vals,
const Field< T2 > &  data 
)

Locate the max value in a field and return it and associated data.

This can be used, for example, to return a value/position combination.

Referenced by exprDriver::getPositionOfMaximum().

Here is the caller graph for this function:

◆ assign() [3/6]

void assign ( GeometricField< Tout, PatchField, GeoMesh > &  result,
const GeometricField< T1, PatchField, GeoMesh > &  a,
const UnaryOp &  op 
)

Populate a geometric field as the result of a unary operation on an input.

It is permissible for inputs/outputs to refer to the same field(s), but partially overlapping regions are ill-defined.

Definition at line 62 of file GeometricFieldOps.H.

References assign(), GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), GeometricField< Type, PatchField, GeoMesh >::primitiveField(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), and UPtrList< T >::size().

Here is the call graph for this function:

◆ assign() [4/6]

void assign ( GeometricField< Tout, PatchField, GeoMesh > &  result,
const GeometricField< T1, PatchField, GeoMesh > &  a,
const GeometricField< T2, PatchField, GeoMesh > &  b,
const BinaryOp &  bop 
)

Populate a geometric field from the binary operation on two inputs.

It is permissible for inputs/outputs to refer to the same field(s), but partially overlapping regions are ill-defined.

Definition at line 100 of file GeometricFieldOps.H.

References assign(), b, GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), GeometricField< Type, PatchField, GeoMesh >::primitiveField(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), and UPtrList< T >::size().

Here is the call graph for this function:

◆ ternary() [2/3]

void ternary ( GeometricField< T, PatchField, GeoMesh > &  result,
const GeometricField< T, PatchField, GeoMesh > &  a,
const GeometricField< T, PatchField, GeoMesh > &  b,
const BinaryOp &  bop 
)

Emulate a ternary operation, selecting values from a or b depending on the binary predicate.

Definition at line 140 of file GeometricFieldOps.H.

References b, GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), GeometricField< Type, PatchField, GeoMesh >::primitiveField(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), UPtrList< T >::size(), and ternary().

Here is the call graph for this function:

◆ ternarySelect() [5/6]

void ternarySelect ( GeometricField< T, PatchField, GeoMesh > &  result,
const GeometricField< BoolType, PatchField, GeoMesh > &  cond,
const GeometricField< T, PatchField, GeoMesh > &  a,
const GeometricField< T, PatchField, GeoMesh > &  b,
const FlipOp &  flip 
)

Emulate a ternary operation, selecting field values from a or b depending on the conditional.

Since boolean fields are not normally used, a flip operation is a general requirement.

Definition at line 183 of file GeometricFieldOps.H.

References b, GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), GeometricField< Type, PatchField, GeoMesh >::primitiveField(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), UPtrList< T >::size(), and ternarySelect().

Here is the call graph for this function:

◆ assign() [5/6]

void assign ( pointPatchField< Tout > &  result,
const pointPatchField< T1 > &  a,
const UnaryOp &  op 
)
inline

Definition at line 359 of file pointPatchFieldFunctions.H.

◆ assign() [6/6]

void assign ( pointPatchField< Tout > &  result,
const pointPatchField< T1 > &  a,
const pointPatchField< T2 > &  b,
const BinaryOp &  bop 
)
inline

Definition at line 369 of file pointPatchFieldFunctions.H.

◆ ternary() [3/3]

void ternary ( pointPatchField< T > &  result,
const pointPatchField< T > &  a,
const pointPatchField< T > &  b,
const BinaryOp &  bop 
)
inline

Definition at line 379 of file pointPatchFieldFunctions.H.

◆ ternarySelect() [6/6]

void ternarySelect ( pointPatchField< T > &  result,
const pointPatchField< BoolType > &  cond,
const pointPatchField< T > &  a,
const pointPatchField< T > &  b,
const FlipOp &  flip 
)
inline

Definition at line 389 of file pointPatchFieldFunctions.H.