31 #define TEMPLATE template<class GeoMesh> 41 template<
class GeoMesh>
53 "stabilise(" + dsf.
name() +
',' + ds.
name() +
')',
67 template<
class GeoMesh>
68 tmp<DimensionedField<scalar, GeoMesh>>
stabilise 70 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf,
71 const dimensioned<scalar>& ds
74 const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
76 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 79 "stabilise(" + dsf.name() +
',' + ds.name() +
')',
80 dsf.dimensions() + ds.dimensions()
83 stabilise(tres.ref().field(), dsf.field(), ds.value());
110 if (!dsf1.dimensions().dimensionless())
113 <<
"Base field is not dimensionless: " << dsf1.dimensions()
117 if (!dsf2.dimensions().dimensionless())
120 <<
"Exponent field is not dimensionless: " << dsf2.dimensions()
129 "pow(" + dsf1.name() +
',' + dsf2.name() +
')',
137 pow(tres.ref().field(), dsf1.field(), dsf2.field());
143 template<
class GeoMesh>
144 tmp<DimensionedField<scalar, GeoMesh>>
pow 146 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf1,
147 const DimensionedField<scalar, GeoMesh>& dsf2
150 const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
152 if (!dsf1.dimensions().dimensionless())
155 <<
"Base field is not dimensionless: " << dsf1.dimensions()
159 if (!dsf2.dimensions().dimensionless())
162 <<
"Exponent field is not dimensionless: " << dsf2.dimensions()
166 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 169 "pow(" + dsf1.name() +
',' + dsf2.name() +
')',
173 pow(tres.ref().field(), dsf1.field(), dsf2.field());
181 template<
class GeoMesh>
182 tmp<DimensionedField<scalar, GeoMesh>>
pow 184 const DimensionedField<scalar, GeoMesh>& dsf1,
185 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf2
188 const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
190 if (!dsf1.dimensions().dimensionless())
193 <<
"Base field is not dimensionless: " << dsf1.dimensions()
197 if (!dsf2.dimensions().dimensionless())
200 <<
"Exponent field is not dimensionless: " << dsf2.dimensions()
204 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 207 "pow(" + dsf1.name() +
',' + dsf2.name() +
')',
211 pow(tres.ref().field(), dsf1.field(), dsf2.field());
219 template<
class GeoMesh>
220 tmp<DimensionedField<scalar, GeoMesh>>
pow 222 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf1,
223 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf2
226 const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
227 const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
229 if (!dsf1.dimensions().dimensionless())
232 <<
"Base field is not dimensionless: " << dsf1.dimensions()
236 if (!dsf2.dimensions().dimensionless())
239 <<
"Exponent field is not dimensionless: " << dsf2.dimensions()
249 "pow(" + dsf1.name() +
',' + dsf2.name() +
')',
253 pow(tres.ref().field(), dsf1.field(), dsf2.field());
262 template<
class GeoMesh>
263 tmp<DimensionedField<scalar, GeoMesh>>
pow 265 const DimensionedField<scalar, GeoMesh>& dsf,
269 if (!ds.dimensions().dimensionless())
272 <<
"Exponent is not dimensionless: " << ds.dimensions()
277 tmp<DimensionedField<scalar, GeoMesh>>
::New 281 "pow(" + dsf.name() +
',' + ds.name() +
')',
286 pow(dsf.dimensions(), ds)
289 pow(tres.ref().field(), dsf.field(), ds.value());
295 template<
class GeoMesh>
296 tmp<DimensionedField<scalar, GeoMesh>>
pow 298 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf,
302 if (!ds.dimensions().dimensionless())
305 <<
"Exponent is not dimensionless: " << ds.dimensions()
309 const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
311 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 314 "pow(" + dsf.name() +
',' + ds.name() +
')',
315 pow(dsf.dimensions(), ds)
318 pow(tres.ref().field(), dsf.field(), ds.value());
326 template<
class GeoMesh>
327 tmp<DimensionedField<scalar, GeoMesh>>
pow 329 const DimensionedField<scalar, GeoMesh>& dsf,
337 template<
class GeoMesh>
338 tmp<DimensionedField<scalar, GeoMesh>>
pow 340 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf,
348 template<
class GeoMesh>
349 tmp<DimensionedField<scalar, GeoMesh>>
pow 352 const DimensionedField<scalar, GeoMesh>& dsf
355 if (!ds.dimensions().dimensionless())
358 <<
"Base scalar is not dimensionless: " << ds.dimensions()
362 if (!dsf.dimensions().dimensionless())
365 <<
"Exponent field is not dimensionless: " << dsf.dimensions()
370 tmp<DimensionedField<scalar, GeoMesh>>
::New 374 "pow(" + ds.name() +
',' + dsf.name() +
')',
382 pow(tres.ref().field(), ds.value(), dsf.field());
388 template<
class GeoMesh>
389 tmp<DimensionedField<scalar, GeoMesh>>
pow 392 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf
395 const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
397 if (!ds.dimensions().dimensionless())
400 <<
"Base scalar is not dimensionless: " << ds.dimensions()
404 if (!dsf.dimensions().dimensionless())
407 <<
"Exponent field is not dimensionless: " << dsf.dimensions()
411 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 414 "pow(" + ds.name() +
',' + dsf.name() +
')',
418 pow(tres.ref().field(), ds.value(), dsf.field());
425 template<
class GeoMesh>
426 tmp<DimensionedField<scalar, GeoMesh>>
pow 429 const DimensionedField<scalar, GeoMesh>& dsf
435 template<
class GeoMesh>
436 tmp<DimensionedField<scalar, GeoMesh>>
pow 439 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf
448 template<
class GeoMesh>
449 tmp<DimensionedField<scalar, GeoMesh>>
atan2 451 const DimensionedField<scalar, GeoMesh>& dsf1,
452 const DimensionedField<scalar, GeoMesh>& dsf2
456 tmp<DimensionedField<scalar, GeoMesh>>
::New 460 "atan2(" + dsf1.name() +
',' + dsf2.name() +
')',
465 atan2(dsf1.dimensions(), dsf2.dimensions())
468 atan2(tres.ref().field(), dsf1.field(), dsf2.field());
474 template<
class GeoMesh>
475 tmp<DimensionedField<scalar, GeoMesh>>
atan2 477 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf1,
478 const DimensionedField<scalar, GeoMesh>& dsf2
481 const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
483 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 486 "atan2(" + dsf1.name() +
',' + dsf2.name() +
')',
487 atan2(dsf1.dimensions(), dsf2.dimensions())
490 atan2(tres.ref().field(), dsf1.field(), dsf2.field());
498 template<
class GeoMesh>
499 tmp<DimensionedField<scalar, GeoMesh>>
atan2 501 const DimensionedField<scalar, GeoMesh>& dsf1,
502 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf2
505 const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
507 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 510 "atan2(" + dsf1.name() +
',' + dsf2.name() +
')',
511 atan2(dsf1.dimensions(), dsf2.dimensions())
514 atan2(tres.ref().field(), dsf1.field(), dsf2.field());
521 template<
class GeoMesh>
522 tmp<DimensionedField<scalar, GeoMesh>>
atan2 524 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf1,
525 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf2
528 const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
529 const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
537 "atan2(" + dsf1.name() +
',' + dsf2.name() +
')',
538 atan2(dsf1.dimensions(), dsf2.dimensions())
541 atan2(tres.ref().field(), dsf1.field(), dsf2.field());
550 template<
class GeoMesh>
551 tmp<DimensionedField<scalar, GeoMesh>>
atan2 553 const DimensionedField<scalar, GeoMesh>& dsf,
558 tmp<DimensionedField<scalar, GeoMesh>>
::New 562 "atan2(" + dsf.name() +
',' + ds.name() +
')',
567 atan2(dsf.dimensions(), ds)
570 atan2(tres.ref().field(), dsf.field(), ds.value());
575 template<
class GeoMesh>
576 tmp<DimensionedField<scalar, GeoMesh>>
atan2 578 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf,
582 const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
584 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 587 "atan2(" + dsf.name() +
',' + ds.name() +
')',
588 atan2(dsf.dimensions(), ds)
591 atan2(tres.ref().field(), dsf.field(), ds.value());
598 template<
class GeoMesh>
599 tmp<DimensionedField<scalar, GeoMesh>>
atan2 601 const DimensionedField<scalar, GeoMesh>& dsf,
608 template<
class GeoMesh>
609 tmp<DimensionedField<scalar, GeoMesh>>
atan2 611 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf,
619 template<
class GeoMesh>
620 tmp<DimensionedField<scalar, GeoMesh>>
atan2 623 const DimensionedField<scalar, GeoMesh>& dsf
627 tmp<DimensionedField<scalar, GeoMesh>>
::New 631 "atan2(" + ds.name() +
',' + dsf.name() +
')',
636 atan2(ds, dsf.dimensions())
639 atan2(tres.ref().field(), ds.value(), dsf.field());
645 template<
class GeoMesh>
646 tmp<DimensionedField<scalar, GeoMesh>>
atan2 649 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf
652 const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
654 tmp<DimensionedField<scalar, GeoMesh>> tres =
New 657 "atan2(" + ds.name() +
',' + dsf.name() +
')',
658 atan2(ds, dsf.dimensions())
661 atan2(tres.ref().field(), ds.value(), dsf.field());
668 template<
class GeoMesh>
669 tmp<DimensionedField<scalar, GeoMesh>>
atan2 672 const DimensionedField<scalar, GeoMesh>& dsf
678 template<
class GeoMesh>
679 tmp<DimensionedField<scalar, GeoMesh>>
atan2 682 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf
732 #define BesselFunc(func) \ 734 template<class GeoMesh> \ 735 tmp<DimensionedField<scalar, GeoMesh>> func \ 738 const DimensionedField<scalar, GeoMesh>& dsf \ 741 if (!dsf.dimensions().dimensionless()) \ 743 FatalErrorInFunction \ 744 << "dsf not dimensionless" \ 745 << abort(FatalError); \ 749 tmp<DimensionedField<scalar, GeoMesh>>::New \ 753 #func "(" + name(n) + ',' + dsf.name() + ')', \ 761 func(tres.ref().field(), n, dsf.field()); \ 767 template<class GeoMesh> \ 768 tmp<DimensionedField<scalar, GeoMesh>> func \ 771 const tmp<DimensionedField<scalar, GeoMesh>>& tdsf \ 774 const DimensionedField<scalar, GeoMesh>& dsf = tdsf(); \ 776 if (!dsf.dimensions().dimensionless()) \ 778 FatalErrorInFunction \ 779 << " : dsf not dimensionless" \ 780 << abort(FatalError); \ 783 tmp<DimensionedField<scalar, GeoMesh>> tres \ 788 #func "(" + name(n) + ',' + dsf.name() + ')', \ 793 func(tres.ref().field(), n, dsf.field()); \ void divide(FieldField< Field, Type > &f, const FieldField< Field, Type > &f1, const FieldField< Field, scalar > &f2)
dimensionedScalar sign(const dimensionedScalar &ds)
dimensionedScalar tanh(const dimensionedScalar &ds)
const Type & value() const noexcept
Return const reference to value.
dimensionedScalar acos(const dimensionedScalar &ds)
#define BINARY_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc)
void multiply(FieldField< Field, Type > &f, const FieldField< Field, Type > &f1, const FieldField< Field, scalar > &f2)
dimensionedScalar log(const dimensionedScalar &ds)
errorManipArg< error, int > exit(error &err, const int errNo=1)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
#define UNARY_FUNCTION(ReturnType, Type1, Func, Dfunc)
const word & name() const noexcept
Return the object name.
dimensionedScalar yn(const int n, const dimensionedScalar &ds)
#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc)
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensionedScalar pow025(const dimensionedScalar &ds)
dimensionedScalar stabilise(const dimensionedScalar &x, const dimensionedScalar &y)
dimensionedScalar y0(const dimensionedScalar &ds)
static tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< Type1, GeoMesh >> &tdf1, const tmp< DimensionedField< Type2, GeoMesh >> &tdf2, const word &name, const dimensionSet &dimensions)
const dimensionSet dimless
Dimensionless.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
void subtract(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedScalar posPart(const dimensionedScalar &ds)
dimensionedScalar neg(const dimensionedScalar &ds)
dimensionedScalar asin(const dimensionedScalar &ds)
dimensionedScalar pow5(const dimensionedScalar &ds)
dimensionedScalar j1(const dimensionedScalar &ds)
dimensionedScalar pos(const dimensionedScalar &ds)
dimensionedScalar acosh(const dimensionedScalar &ds)
dimensionedScalar cos(const dimensionedScalar &ds)
dimensionedScalar exp(const dimensionedScalar &ds)
dimensionedScalar asinh(const dimensionedScalar &ds)
dimensionedScalar jn(const int n, const dimensionedScalar &ds)
dimensionedScalar cbrt(const dimensionedScalar &ds)
dimensionedScalar neg0(const dimensionedScalar &ds)
const objectRegistry & db() const noexcept
Return the local objectRegistry.
dimensionedScalar atanh(const dimensionedScalar &ds)
const dimensionSet & dimensions() const noexcept
Return const reference to dimensions.
dimensionedScalar y1(const dimensionedScalar &ds)
const Mesh & mesh() const noexcept
Return mesh.
dimensionedScalar pos0(const dimensionedScalar &ds)
dimensionedScalar sin(const dimensionedScalar &ds)
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
dimensionedScalar erf(const dimensionedScalar &ds)
dimensionedScalar atan2(const dimensionedScalar &x, const dimensionedScalar &y)
dimensionSet trans(const dimensionSet &ds)
Check the argument is dimensionless (for transcendental functions)
const fileName & instance() const noexcept
Read access to instance path component.
const Field< Type > & field() const noexcept
Return const-reference to the field values.
const word & name() const noexcept
Return const reference to name.
dimensionedScalar lgamma(const dimensionedScalar &ds)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensionedScalar erfc(const dimensionedScalar &ds)
dimensionedScalar sinh(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
dimensionedScalar atan(const dimensionedScalar &ds)
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
dimensionedScalar pow4(const dimensionedScalar &ds)
dimensionedScalar pow6(const dimensionedScalar &ds)
Scalar specific part of the implementation of DimensionedField.
dimensionedScalar cosh(const dimensionedScalar &ds)
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
A class for managing temporary objects.
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.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))
dimensionedScalar tan(const dimensionedScalar &ds)
dimensionedScalar j0(const dimensionedScalar &ds)
#define BINARY_TYPE_OPERATOR(ReturnType, Type1, Type2, Op, OpName, OpFunc)
Defines the attributes of an object for which implicit objectRegistry management is supported...
dimensionedScalar log10(const dimensionedScalar &ds)
dimensionedScalar negPart(const dimensionedScalar &ds)
const dimensionSet & dimensions() const noexcept
Return dimensions.