38 #define checkField(df1, df2, op) \
39 if (&(df1).mesh() != &(df2).mesh()) \
41 FatalErrorInFunction \
42 << "different mesh for fields " \
43 << (df1).name() << " and " << (df2).name() \
44 << " during operatrion " << op \
45 << abort(FatalError); \
51 template<
class Type,
class GeoMesh>
68 <<
"size of field = " <<
field.size()
69 <<
" is not the same as the size of mesh = "
70 << GeoMesh::size(
mesh)
76 template<
class Type,
class GeoMesh>
82 const bool checkIOFlags
97 template<
class Type,
class GeoMesh>
103 const bool checkIOFlags
109 dimensions_(dt.dimensions())
118 template<
class Type,
class GeoMesh>
127 dimensions_(df.dimensions_)
131 template<
class Type,
class GeoMesh>
139 Field<Type>(df, reuse),
141 dimensions_(df.dimensions_)
145 template<
class Type,
class GeoMesh>
152 Field<Type>(move(df)),
154 dimensions_(move(df.dimensions_))
158 template<
class Type,
class GeoMesh>
171 dimensions_(tdf().dimensions_)
177 template<
class Type,
class GeoMesh>
187 dimensions_(df.dimensions_)
191 template<
class Type,
class GeoMesh>
200 Field<Type>(df, reuse),
202 dimensions_(df.dimensions_)
206 template<
class Type,
class GeoMesh>
216 dimensions_(df.dimensions_)
220 template<
class Type,
class GeoMesh>
231 dimensions_(df.dimensions_)
235 template<
class Type,
class GeoMesh>
249 dimensions_(tdf().dimensions_)
255 template<
class Type,
class GeoMesh>
266 template<
class Type,
class GeoMesh>
276 const bool cacheTmp = mesh.thisDb().cacheTemporaryObject(
name);
285 mesh.thisDb().time().name(),
300 template<
class Type,
class GeoMesh>
309 const bool cacheTmp = mesh.thisDb().cacheTemporaryObject(
name);
318 mesh.thisDb().time().name(),
333 template<
class Type,
class GeoMesh>
342 const bool cacheTmp = mesh.thisDb().cacheTemporaryObject(
name);
351 mesh.thisDb().time().name(),
366 template<
class Type,
class GeoMesh>
397 template<
class Type,
class GeoMesh>
405 const bool cacheTmp = tdf().db().cacheTemporaryObject(newName);
430 template<
class Type,
class GeoMesh>
433 db().cacheTemporaryObject(*
this);
439 template<
class Type,
class GeoMesh>
466 template<
class Type,
class GeoMesh>
467 void DimensionedField<Type, GeoMesh>::replace
470 const DimensionedField
471 <
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>& df
474 Field<Type>::replace(d, df);
478 template<
class Type,
class GeoMesh>
479 void DimensionedField<Type, GeoMesh>::replace
485 <
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>
494 template<
class Type,
class GeoMesh>
495 tmp<DimensionedField<Type, GeoMesh>>
514 template<
class Type,
class GeoMesh>
519 this->
name() +
".average()",
528 template<
class Type,
class GeoMesh>
538 this->
name() +
".weightedAverage(weights)",
540 gSum(weightField*field())/
gSum(weightField)
546 template<
class Type,
class GeoMesh>
553 tweightField.clear();
558 template<
class Type,
class GeoMesh>
568 <<
"attempted assignment to self"
579 template<
class Type,
class GeoMesh>
589 <<
"attempted assignment to self"
600 template<
class Type,
class GeoMesh>
610 <<
"attempted assignment to self"
621 template<
class Type,
class GeoMesh>
633 <<
"attempted assignment to self"
645 template<
class Type,
class GeoMesh>
656 template<
class Type,
class GeoMesh>
663 #define COMPUTED_ASSIGNMENT(TYPE, op) \
665 template<class Type, class GeoMesh> \
666 void DimensionedField<Type, GeoMesh>::operator op \
668 const DimensionedField<TYPE, GeoMesh>& df \
671 checkField(*this, df, #op); \
673 dimensions_ op df.dimensions(); \
674 Field<Type>::operator op(df); \
677 template<class Type, class GeoMesh> \
678 void DimensionedField<Type, GeoMesh>::operator op \
680 const tmp<DimensionedField<TYPE, GeoMesh>>& tdf \
683 operator op(tdf()); \
687 template<class Type, class GeoMesh> \
688 void DimensionedField<Type, GeoMesh>::operator op \
690 const dimensioned<TYPE>& dt \
693 dimensions_ op dt.dimensions(); \
694 Field<Type>::operator op(dt.value()); \
702 #undef COMPUTED_ASSIGNMENT
#define checkField(df1, df2, op)
#define COMPUTED_ASSIGNMENT(TYPE, op)
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
GeoMesh::Mesh Mesh
Type of mesh on which this DimensionedField is instantiated.
const dimensionSet & dimensions() const
Return dimensions.
const Mesh & mesh() const
Return mesh.
Field< Type >::cmptType cmptType
Component type of the elements of the field.
const Field< Type > & field() const
DimensionedField(const IOobject &, const Mesh &mesh, const dimensionSet &, const Field< Type > &)
Construct from components.
Pre-declare SubField and related Field type.
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const fileName & local() const
fileName & instance() const
Return the instance directory, constant, system, <time> etc.
const objectRegistry & db() const
Return the local objectRegistry.
void clear()
Clear the list, i.e. set size to zero.
Dimension set for the base types.
Generic dimensioned Type class.
bool cacheTemporaryObject(const word &name) const
Return true if given name is in the cacheTemporaryObjects set.
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
A class for handling words, derived from string.
A class representing the concept of 0 used to avoid unnecessary manipulations for objects that are kn...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
tmp< VolField< Type > > average(const SurfaceField< Type > &ssf)
Area-weighted average a surfaceField creating a volField.
Type gSum(const FieldField< Field, Type > &f)
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
errorManip< error > abort(error &err)
Type gAverage(const FieldField< Field, Type > &f)
word name(const complex &)
Return a string representation of a complex.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)