Go to the documentation of this file.
33 #include <type_traits>
37 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
44 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
54 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
55 template<
class Form2,
class Cmpt2>
65 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
66 template<
class SubVector, Foam::direction BStart>
77 vsType::nComponents >= BStart + nComponents,
78 "Requested block size > VectorSpace size"
85 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
95 <<
"index out of range"
104 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
114 <<
"index out of range"
123 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
134 <<
"index out of range"
143 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
154 <<
"index out of range"
163 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
172 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
173 template<
class SubVector, Foam::direction BStart>
175 ConstBlock<SubVector, BStart>
184 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
191 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
198 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
205 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
208 return (v_ + Ncmpts);
212 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
219 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
222 return (v_ + Ncmpts);
226 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
233 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
236 return (v_ + Ncmpts);
242 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
252 <<
"index out of range"
261 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
271 <<
"index out of range"
280 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
281 template<
class SubVector, Foam::direction BStart>
284 ConstBlock<SubVector, BStart>::operator[]
293 <<
"index out of range"
298 return vs_[BStart + d];
302 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
303 template<
class SubVector, Foam::direction BStart>
316 <<
"index " << i <<
" out of range"
323 <<
"index " << j <<
" != 0"
328 return vs_[BStart + i];
332 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
342 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
352 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
362 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
369 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
379 template<
class Form,
class Cmpt, Foam::direction Ncmpts>
396 template<
class Form,
class Cmpt, direction Ncmpts>
407 template<
class Form,
class Cmpt, direction Ncmpts>
421 template<
class Form,
class Cmpt, direction Ncmpts>
434 template<
class Form,
class Cmpt, direction Ncmpts>
442 return static_cast<const Form&
>(v);
447 template<
class Form,
class Cmpt, direction Ncmpts>
455 return sqr(
static_cast<const Form&
>(v));
459 template<
class Form,
class Cmpt, direction Ncmpts>
471 template<
class Form,
class Cmpt, direction Ncmpts>
481 template<
class Form,
class Cmpt, direction Ncmpts>
482 inline VectorSpace<Form, Cmpt, Ncmpts>
normalised
487 const scalar
s(
mag(vs));
488 return s < ROOTVSMALL ?
Zero : vs/
s;
492 template<
class Form,
class Cmpt, direction Ncmpts>
505 template<
class Form,
class Cmpt, direction Ncmpts>
506 inline VectorSpace<Form, Cmpt, Ncmpts>
cmptPow
518 template<
class Form,
class Cmpt, direction Ncmpts>
519 inline VectorSpace<Form, Cmpt, Ncmpts>
cmptDivide
531 template<
class Form,
class Cmpt, direction Ncmpts>
532 inline VectorSpace<Form, Cmpt, Ncmpts>
stabilise
544 template<
class Form,
class Cmpt, direction Ncmpts>
550 Cmpt cMax = vs.
v_[0];
556 template<
class Form,
class Cmpt, direction Ncmpts>
562 Cmpt cMin = vs.
v_[0];
568 template<
class Form,
class Cmpt, direction Ncmpts>
580 template<
class Form,
class Cmpt, direction Ncmpts>
590 template<
class Form,
class Cmpt, direction Ncmpts>
596 Cmpt product = vs.
v_[0];
602 template<
class Form,
class Cmpt, direction Ncmpts>
614 template<
class Form,
class Cmpt, direction Ncmpts>
626 template<
class Form,
class Cmpt, direction Ncmpts>
638 template<
class Form,
class Cmpt, direction Ncmpts>
651 template<
class Form,
class Cmpt, direction Ncmpts>
664 template<
class Form,
class Cmpt, direction Ncmpts>
678 inline Type
dot(
const scalar
s,
const Type& t)
685 inline Type
dot(
const Type& t,
const scalar
s)
693 class Form1,
class Cmpt1,
direction Ncmpts1,
694 class Form2,
class Cmpt2,
direction Ncmpts2
702 return static_cast<const Form1&
>(t1) &
static_cast<const Form2&
>(t2);
708 template<
class Form,
class Cmpt, direction Ncmpts>
709 inline Form
operator-
720 template<
class Form,
class Cmpt, direction Ncmpts>
721 inline Form
operator+
732 template<
class Form,
class Cmpt, direction Ncmpts>
733 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/
811 template<
class Form,
class Cmpt, direction Ncmpts>
812 inline Cmpt
operator&&
818 Cmpt ddProd = vs1.
v_[0]*vs2.
v_[0];
821 ddProd += vs1.
v_[i]*vs2.
v_[i];
827 template<
class Form,
class Cmpt, direction Ncmpts>
828 inline bool operator==
837 if (!(eq &= (
equal(vs1.
v_[i], vs2.
v_[i]))))
break;
843 template<
class Form,
class Cmpt, direction Ncmpts>
844 inline bool operator!=
850 return !(vs1 == vs2);
854 template<
class Form,
class Cmpt, direction Ncmpts>
855 inline bool operator>
864 if (!(gt &= vs1.
v_[i] > vs2.
v_[i]))
break;
870 template<
class Form,
class Cmpt, direction Ncmpts>
871 inline bool operator<
880 if (!(lt &= vs1.
v_[i] < vs2.
v_[i]))
break;
886 template<
class Form,
class Cmpt, direction Ncmpts>
887 inline bool operator>=
897 template<
class Form,
class Cmpt, direction Ncmpts>
898 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 (0)
VectorSpace()=default
Default construct.
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)
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)
Return the sum of components of a SphericalTensor.
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) that can be used to avoid manipulating objects known to ...