diff --git a/src/OpenFOAM/primitives/Tensor/Tensor.H b/src/OpenFOAM/primitives/Tensor/Tensor.H index 046ebfba1..45906cdd0 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&); + //- Assign to a SphericalTensor inline void operator=(const SphericalTensor&); diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H index b128d0eeb..d08d91a96 100644 --- a/src/OpenFOAM/primitives/Tensor/TensorI.H +++ b/src/OpenFOAM/primitives/Tensor/TensorI.H @@ -296,6 +296,29 @@ inline Tensor Tensor::T() const // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline void Tensor::operator&=(const Tensor& t) +{ + *this = + ( + Tensor + ( + 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 inline void Tensor::operator=(const SphericalTensor& st) {