From e7bac07e141088a8d32198b477861e2cc7b88882 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Sun, 6 Mar 2016 19:05:14 +0000
Subject: [PATCH] Tensor: Added operator&=

---
 src/OpenFOAM/primitives/Tensor/Tensor.H  |  3 +++
 src/OpenFOAM/primitives/Tensor/TensorI.H | 23 +++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/src/OpenFOAM/primitives/Tensor/Tensor.H b/src/OpenFOAM/primitives/Tensor/Tensor.H
index 046ebfba194..45906cdd0c2 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 b128d0eebd0..d08d91a969e 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)
 {
-- 
GitLab