Go to the documentation of this file.
33 #include <type_traits>
38 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
43 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
50 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
60 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
61 template<
class Form2,
class Cmpt2>
71 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
72 template<
class SubVector, Foam::direction BStart>
83 vsType::nComponents >= BStart + nComponents,
84 "Requested block size > VectorSpace size"
91 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
98 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
108 <<
"index out of range"
117 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
127 <<
"index out of range"
136 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
147 <<
"index out of range"
156 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
167 <<
"index out of range"
176 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
185 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
186 template<
class SubVector, Foam::direction BStart>
188 ConstBlock<SubVector, BStart>
197 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
204 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
211 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
218 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
221 return (v_ + Ncmpts);
225 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
232 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
235 return (v_ + Ncmpts);
239 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
246 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
249 return (v_ + Ncmpts);
255 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
265 <<
"index out of range"
274 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
284 <<
"index out of range"
293 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
294 template<
class SubVector, Foam::direction BStart>
297 ConstBlock<SubVector, BStart>::operator[]
306 <<
"index out of range"
311 return vs_[BStart + d];
315 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
316 template<
class SubVector, Foam::direction BStart>
329 <<
"index " << i <<
" out of range"
336 <<
"index " << j <<
" != 0"
341 return vs_[BStart + i];
345 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
355 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
365 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
375 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
382 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
392 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
409 template<
class Form,
class Cmpt, direction Ncmpts>
420 template<
class Form,
class Cmpt, direction Ncmpts>
434 template<
class Form,
class Cmpt, direction Ncmpts>
447 template<
class Form,
class Cmpt, direction Ncmpts>
455 return static_cast<const Form&
>(v);
460 template<
class Form,
class Cmpt, direction Ncmpts>
468 return sqr(
static_cast<const Form&
>(v));
472 template<
class Form,
class Cmpt, direction Ncmpts>
484 template<
class Form,
class Cmpt, direction Ncmpts>
494 template<
class Form,
class Cmpt, direction Ncmpts>
495 inline VectorSpace<Form, Cmpt, Ncmpts>
normalised
500 const scalar
s(
mag(vs));
501 return s < ROOTVSMALL ?
Zero : vs/
s;
505 template<
class Form,
class Cmpt, direction Ncmpts>
518 template<
class Form,
class Cmpt, direction Ncmpts>
519 inline VectorSpace<Form, Cmpt, Ncmpts>
cmptPow
531 template<
class Form,
class Cmpt, direction Ncmpts>
532 inline VectorSpace<Form, Cmpt, Ncmpts>
cmptDivide
544 template<
class Form,
class Cmpt, direction Ncmpts>
545 inline VectorSpace<Form, Cmpt, Ncmpts>
stabilise
557 template<
class Form,
class Cmpt, direction Ncmpts>
563 Cmpt cMax = vs.
v_[0];
569 template<
class Form,
class Cmpt, direction Ncmpts>
575 Cmpt cMin = vs.
v_[0];
581 template<
class Form,
class Cmpt, direction Ncmpts>
593 template<
class Form,
class Cmpt, direction Ncmpts>
603 template<
class Form,
class Cmpt, direction Ncmpts>
609 Cmpt product = vs.
v_[0];
615 template<
class Form,
class Cmpt, direction Ncmpts>
627 template<
class Form,
class Cmpt, direction Ncmpts>
639 template<
class Form,
class Cmpt, direction Ncmpts>
651 template<
class Form,
class Cmpt, direction Ncmpts>
664 template<
class Form,
class Cmpt, direction Ncmpts>
677 template<
class Form,
class Cmpt, direction Ncmpts>
691 inline Type
dot(
const scalar
s,
const Type& t)
698 inline Type
dot(
const Type& t,
const scalar
s)
706 class Form1,
class Cmpt1,
direction Ncmpts1,
707 class Form2,
class Cmpt2,
direction Ncmpts2
715 return static_cast<const Form1&
>(t1) &
static_cast<const Form2&
>(t2);
721 template<
class Form,
class Cmpt, direction Ncmpts>
722 inline Form
operator-
733 template<
class Form,
class Cmpt, direction Ncmpts>
734 inline Form
operator+
745 template<
class Form,
class Cmpt, direction Ncmpts>
746 inline Form
operator-
758 template<
class Form,
class Cmpt, direction Ncmpts>
759 inline Form
operator*
771 template<
class Form,
class Cmpt, direction Ncmpts>
772 inline Form
operator*
784 template<
class Form,
class Cmpt, direction Ncmpts>
785 inline Form
operator/
824 template<
class Form,
class Cmpt, direction Ncmpts>
825 inline Cmpt
operator&&
831 Cmpt ddProd = vs1.
v_[0]*vs2.
v_[0];
834 ddProd += vs1.
v_[i]*vs2.
v_[i];
840 template<
class Form,
class Cmpt, direction Ncmpts>
841 inline bool operator==
850 if (!(eq &= (
equal(vs1.
v_[i], vs2.
v_[i]))))
break;
856 template<
class Form,
class Cmpt, direction Ncmpts>
857 inline bool operator!=
863 return !(vs1 == vs2);
867 template<
class Form,
class Cmpt, direction Ncmpts>
868 inline bool operator>
877 if (!(gt &= vs1.
v_[i] > vs2.
v_[i]))
break;
883 template<
class Form,
class Cmpt, direction Ncmpts>
884 inline bool operator<
893 if (!(lt &= vs1.
v_[i] < vs2.
v_[i]))
break;
899 template<
class Form,
class Cmpt, direction Ncmpts>
900 inline bool operator>=
910 template<
class Form,
class Cmpt, direction Ncmpts>
911 inline bool operator<=
void cmptMagSqr(Field< Type > &res, const UList< Type > &f)
label & setComponent(label &l, const direction)
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
static void opVS(V &vs, const V1 &vs1, const S &s, Op o)
Scalar cmptPow(const Scalar s1, const Scalar s2)
const Cmpt & component(const direction) const
static Form uniform(const Cmpt &s)
Return a VectorSpace with all elements = s.
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))
dimensioned< Type > cmptMultiply(const dimensioned< Type > &, const dimensioned< Type > &)
const_iterator cend() const
Return const_iterator to end of VectorSpace.
static constexpr const zero Zero
Global zero.
static constexpr direction size()
Return the number of elements in the VectorSpace = Ncmpts.
void dot(FieldField< Field1, typename innerProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
Various functors for unary and binary operations. Can be used for parallel combine-reduce operations ...
Cmpt cmptProduct(const VectorSpace< Form, Cmpt, Ncmpts > &vs)
symmTypeOfRank< typename pTraits< arg1 >::cmptType, arg2 *direction(pTraits< arg1 >::rank) >::type type
Cmpt * data() noexcept
Return pointer to the first data element.
static void SeqOp(S &s, const V &vs, EqOp eo)
Cmpt v_[Ncmpts]
The components of this vector space.
const_iterator cbegin() const
Return const_iterator to begin of VectorSpace.
const ConstBlock< SubVector, BStart > block() const
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
void cmptMin(FieldField< Field, typename FieldField< Field, Type >::cmptType > &cf, const FieldField< Field, Type > &f)
void cmptMag(FieldField< Field, Type > &cf, const FieldField< Field, Type > &f)
void cmptMax(FieldField< Field, typename FieldField< Field, Type >::cmptType > &cf, const FieldField< Field, Type > &f)
tmp< DimensionedField< scalar, GeoMesh > > stabilise(const DimensionedField< scalar, GeoMesh > &dsf, const dimensioned< scalar > &ds)
VectorSpace()
Construct null.
tmp< DimensionedField< typename DimensionedField< Type, GeoMesh >::cmptType, GeoMesh >> cmptAv(const DimensionedField< Type, GeoMesh > &df)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
void replace(const direction, const Cmpt &)
Cmpt cmptSum(const SphericalTensor< Cmpt > &st)
errorManip< error > abort(error &err)
iterator begin()
Return an iterator to begin of VectorSpace.
iterator end()
Return an iterator to end of VectorSpace.
Scalar cmptSqr(const Scalar s)
VectorSpace< Form, Cmpt, Ncmpts > normalised(const VectorSpace< Form, Cmpt, Ncmpts > &vs)
dimensioned< Type > cmptDivide(const dimensioned< Type > &, const dimensioned< Type > &)
static void eqOp(V1 &vs1, const V2 &vs2, EqOp eo)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Scalar minMod(const Scalar s1, const Scalar s2)
static void op(V &vs, const V1 &vs1, const V1 &vs2, Op o)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Traits class for primitives.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static void opSV(V &vs, const S &s, const V1 &vs1, Op o)
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
const dimensionedScalar c
Speed of light in a vacuum.
General looping form. Executing at index <I> with termination at <N>
void operator=(const VectorSpace< Form, Cmpt, Ncmpts > &)
bool equal(const T &s1, const T &s2)
Compare two values for equality.
Traits classes for inner and outer products of primitives.
friend Ostream & operator(Ostream &, const VectorSpace< Form, Cmpt, Ncmpts > &)
typeOfRank< typename pTraits< arg1 >::cmptType, direction(pTraits< arg1 >::rank)+direction(pTraits< arg2 >::rank) - 2 >::type type
const Cmpt * cdata() const noexcept
Return const pointer to the first data element.
A class representing the concept of 0 (zero), which can be used to avoid manipulating objects that ar...