37 #define checkField(df1, df2, op) \
38 if (&(df1).mesh() != &(df2).mesh()) \
40 FatalErrorIn("checkField(df1, df2, op)") \
41 << "different mesh for fields " \
42 << (df1).name() << " and " << (df2).name() \
43 << " during operatrion " << op \
44 << abort(FatalError); \
50 template<
class Type,
class GeoMesh>
64 if (field.
size() && field.
size() != GeoMesh::size(mesh))
68 "DimensionedField<Type, GeoMesh>::DimensionedField"
69 "(const IOobject& io,const Mesh& mesh, "
70 "const dimensionSet& dims, const Field<Type>& field)"
71 ) <<
"size of field = " << field.
size()
72 <<
" is not the same as the size of mesh = "
73 << GeoMesh::size(mesh)
79 template<
class Type,
class GeoMesh>
94 template<
class Type,
class GeoMesh>
109 template<
class Type,
class GeoMesh>
115 # ifdef ConstructFromTmp
122 dimensions_(df.dimensions_)
126 template<
class Type,
class GeoMesh>
136 dimensions_(df.dimensions_)
140 template<
class Type,
class GeoMesh>
149 dimensions_(df->dimensions_)
153 #ifdef ConstructFromTmp
154 template<
class Type,
class GeoMesh>
167 dimensions_(tdf().dimensions_)
174 template<
class Type,
class GeoMesh>
184 dimensions_(df.dimensions_)
188 template<
class Type,
class GeoMesh>
198 dimensions_(df.dimensions_)
202 template<
class Type,
class GeoMesh>
213 dimensions_(df.dimensions_)
217 template<
class Type,
class GeoMesh>
227 dimensions_(df->dimensions_)
231 #ifdef ConstructFromTmp
232 template<
class Type,
class GeoMesh>
246 dimensions_(tdf().dimensions_)
253 template<
class Type,
class GeoMesh>
254 tmp<DimensionedField<Type, GeoMesh> >
266 template<
class Type,
class GeoMesh>
273 template<
class Type,
class GeoMesh>
305 template<
class Type,
class GeoMesh>
309 const DimensionedField
310 <
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>& df
317 template<
class Type,
class GeoMesh>
324 <
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>
333 template<
class Type,
class GeoMesh>
334 tmp<DimensionedField<Type, GeoMesh> >
358 template<
class Type,
class GeoMesh>
363 this->
name() +
".average()",
372 template<
class Type,
class GeoMesh>
382 this->
name() +
".weightedAverage(weights)",
384 gSum(weightField*field())/
gSum(weightField)
390 template<
class Type,
class GeoMesh>
397 tweightField.clear();
404 template<
class Type,
class GeoMesh>
415 "DimensionedField<Type, GeoMesh>::operator="
416 "(const DimensionedField<Type, GeoMesh>&)"
417 ) <<
"attempted assignment to self"
428 template<
class Type,
class GeoMesh>
441 "DimensionedField<Type, GeoMesh>::operator="
442 "(const tmp<DimensionedField<Type, GeoMesh> >&)"
443 ) <<
"attempted assignment to self"
455 template<
class Type,
class GeoMesh>
466 #define COMPUTED_ASSIGNMENT(TYPE, op) \
468 template<class Type, class GeoMesh> \
469 void DimensionedField<Type, GeoMesh>::operator op \
471 const DimensionedField<TYPE, GeoMesh>& df \
474 checkField(*this, df, #op); \
476 dimensions_ op df.dimensions(); \
477 Field<Type>::operator op(df); \
480 template<class Type, class GeoMesh> \
481 void DimensionedField<Type, GeoMesh>::operator op \
483 const tmp<DimensionedField<TYPE, GeoMesh> >& tdf \
486 operator op(tdf()); \
490 template<class Type, class GeoMesh> \
491 void DimensionedField<Type, GeoMesh>::operator op \
493 const dimensioned<TYPE>& dt \
496 dimensions_ op dt.dimensions(); \
497 Field<Type>::operator op(dt.value()); \
505 #undef COMPUTED_ASSIGNMENT