60template<
class Type, direction r>
108 pointPatchField<Type>& cf,
109 const pointPatchField<Type>&
f
114#define BINARY_FUNCTION(func) \
116template<class Type> \
119 pointPatchField<Type>& f, \
120 const pointPatchField<Type>& f1, \
121 const pointPatchField<Type>& f2 \
125template<class Type> \
128 pointPatchField<Type>& f, \
129 const pointPatchField<Type>& f1, \
149inline Type
max(
const pointPatchField<Type>&)
151 return pTraits<Type>::min;
157#define UNARY_OPERATOR(op, opFunc) \
159template<class Type> \
162 pointPatchField<Type>& f, \
163 const pointPatchField<Type>& f1 \
169#define BINARY_OPERATOR(Type1, Type2, op, opFunc) \
171template<class Type> \
174 pointPatchField<Type>& f, \
175 const pointPatchField<Type1>& f1, \
176 const pointPatchField<Type2>& f2 \
184#define BINARY_TYPE_OPERATOR_SF(TYPE, op, opFunc) \
186template<class Type> \
189 pointPatchField<Type>& f, \
191 const pointPatchField<Type>& f1 \
196#define BINARY_TYPE_OPERATOR_FS(TYPE, op, opFunc) \
198template<class Type> \
201 pointPatchField<Type>& f, \
202 const pointPatchField<Type>& f1, \
213#define PRODUCT_OPERATOR(product, op, opFunc) \
223 <typename product<Type1, Type2>::type>& f, \
224 const pointPatchField<Type1>& f1, \
225 const pointPatchField<Type2>& f2 \
239 <typename product<Type, Form>::type>& f, \
240 const pointPatchField<Type>& f1, \
241 const VectorSpace<Form,Cmpt,nCmpt>& vs \
255 <typename product<Form, Type>::type>& f, \
256 const VectorSpace<Form,Cmpt,nCmpt>& vs, \
257 const pointPatchField<Type>& f1 \
269#undef PRODUCT_OPERATOR
344 pointPatchField<tensor>&,
345 const pointPatchField<tensor>&
358template<
class Tout,
class T1,
class UnaryOp>
368template<
class Tout,
class T1,
class T2,
class BinaryOp>
378template<
class T,
class BinaryOp>
388template<
class T,
class BoolType,
class FlipOp>
#define BINARY_FUNCTION(ReturnType, Type1, Type2, Func)
#define UNARY_OPERATOR(ReturnType, Type1, Op, OpFunc, Dfunc)
#define BINARY_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc)
#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc)
#define BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc)
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
pTraits< Type >::cmptType cmptType
Component type.
typeOfRank< typenamepTraits< arg1 >::cmptType, direction(pTraits< arg1 >::rank)+direction(pTraits< arg2 >::rank)>::type type
A traits class, which is primarily used for primitives and vector-space.
Abstract base class for point-mesh patch fields.
symmTypeOfRank< typenamepTraits< arg1 >::cmptType, arg2 *direction(pTraits< arg1 >::rank)>::type type
#define PRODUCT_OPERATOR(product, op, opFunc)
Various utility functions to work on Fields.
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.
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.
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.
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
dimensionedScalar det(const dimensionedSphericalTensor &dt)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
dimensionedScalar tr(const dimensionedSphericalTensor &dt)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
void subtract(DimensionedField< scalar, GeoMesh > &result, const dimensioned< scalar > &dt1, const DimensionedField< scalar, GeoMesh > &f2)
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
dimensioned< Type > cmptDivide(const dimensioned< Type > &, const dimensioned< Type > &)
void divide(DimensionedField< Type, GeoMesh > &result, const DimensionedField< Type, GeoMesh > &f1, const DimensionedField< scalar, GeoMesh > &f2)
void dot(FieldField< Field1, typename innerProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
void add(DimensionedField< scalar, GeoMesh > &result, const dimensioned< scalar > &dt1, const DimensionedField< scalar, GeoMesh > &f2)
tmp< DimensionedField< typename DimensionedField< Type, GeoMesh >::cmptType, GeoMesh > > cmptAv(const DimensionedField< Type, GeoMesh > &f1)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
void hdual(pointPatchField< vector > &, const pointPatchField< tensor > &)
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
dimensioned< Type > cmptMultiply(const dimensioned< Type > &, const dimensioned< Type > &)
void dotdot(FieldField< Field1, typename scalarProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedSphericalTensor inv(const dimensionedSphericalTensor &dt)
void cmptMag(FieldField< Field, Type > &cf, const FieldField< Field, Type > &f)
void cross(FieldField< Field1, typename crossProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
void negate(DimensionedField< Type, GeoMesh > &result, const DimensionedField< Type, GeoMesh > &f1)
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
void multiply(DimensionedField< Type, GeoMesh > &result, const DimensionedField< Type, GeoMesh > &f1, const DimensionedField< scalar, GeoMesh > &f2)
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
dimensionedTensor skew(const dimensionedTensor &dt)
void outer(FieldField< Field1, typename outerProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)