diff --git a/src/OpenFOAM/primitives/Tensor/Tensor.H b/src/OpenFOAM/primitives/Tensor/Tensor.H index 046ebfba19492d6951427fb583ac3e75e5fa303b..45906cdd0c25fceb507d6064682654e4f8944c2a 100644 --- a/src/OpenFOAM/primitives/Tensor/Tensor.H +++ b/src/OpenFOAM/primitives/Tensor/Tensor.H @@ -164,6 +164,9 @@ public: // Member Operators + //- Inner-product with a Tensor + inline void operator&=(const Tensor<Cmpt>&); + //- Assign to a SphericalTensor inline void operator=(const SphericalTensor<Cmpt>&); diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H index b128d0eebd0f12ef47bcf42711f044d4769e8d2d..d08d91a969e3edbe0a63d3d4f1d72bc79c6e2af8 100644 --- a/src/OpenFOAM/primitives/Tensor/TensorI.H +++ b/src/OpenFOAM/primitives/Tensor/TensorI.H @@ -296,6 +296,29 @@ inline Tensor<Cmpt> Tensor<Cmpt>::T() const // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class Cmpt> +inline void Tensor<Cmpt>::operator&=(const Tensor<Cmpt>& t) +{ + *this = + ( + Tensor<Cmpt> + ( + this->xx()*t.xx() + this->xy()*t.yx() + this->xz()*t.zx(), + this->xx()*t.xy() + this->xy()*t.yy() + this->xz()*t.zy(), + this->xx()*t.xz() + this->xy()*t.yz() + this->xz()*t.zz(), + + this->yx()*t.xx() + this->yy()*t.yx() + this->yz()*t.zx(), + this->yx()*t.xy() + this->yy()*t.yy() + this->yz()*t.zy(), + this->yx()*t.xz() + this->yy()*t.yz() + this->yz()*t.zz(), + + this->zx()*t.xx() + this->zy()*t.yx() + this->zz()*t.zx(), + this->zx()*t.xy() + this->zy()*t.yy() + this->zz()*t.zy(), + this->zx()*t.xz() + this->zy()*t.yz() + this->zz()*t.zz() + ) + ); +} + + template<class Cmpt> inline void Tensor<Cmpt>::operator=(const SphericalTensor<Cmpt>& st) {