diff --git a/applications/test/tensor/Test-tensor.C b/applications/test/tensor/Test-tensor.C
index e406ab7f3bffe1b00b3b9e13014137e211934373..28239c7488c97a7b90546aa85cf9fbea121243a3 100644
--- a/applications/test/tensor/Test-tensor.C
+++ b/applications/test/tensor/Test-tensor.C
@@ -24,9 +24,11 @@ int main()
 
     tensor t6(1,0,-4,0,5,4,-4,4,3);
     //tensor t6(1,2,0,2,5,0,0,0,0);
+
     Info<< "tensor " << t6 << endl;
     vector e = eigenValues(t6);
     Info<< "eigenvalues " << e << endl;
+
     tensor ev = eigenVectors(t6);
     Info<< "eigenvectors " << ev << endl;
 
@@ -58,6 +60,17 @@ int main()
     Info<< "Check for dot product of symmetric tensors "
         << (st1 & st2) << endl;
 
+    Info<< "Check for inner sqr of a symmetric tensor "
+        << innerSqr(st1) << " " << innerSqr(st1) - (st1 & st1) << endl;
+
+    Info<< "Check for symmetric part of dot product of symmetric tensors "
+        << twoSymm(st1&st2) - ((st1&st2) + (st2&st1)) << endl;
+
+    tensor sk1 = skew(t6);
+    tensor sk2 = skew(t7);
+    Info<< "Check for symmetric part of dot product of skew tensors "
+        << twoSymm(sk1&sk2) - ((sk1&sk2) - (sk2&sk1)) << endl;
+
     vector v1(1, 2, 3);
 
     Info<< sqr(v1) << endl;
@@ -184,6 +197,5 @@ int main()
     Debug(U_triple);
     */
 
-
     return 0;
 }
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C
index 7007add44eef6739106e0775e8f64328bddc655b..0387358b85016895cae6f2c6daa3d3399fe6d5e7 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -57,6 +57,17 @@ dimensionedSymmTensor sqr(const dimensionedVector& dv)
 }
 
 
+dimensionedSymmTensor innerSqr(const dimensionedSymmTensor& dt)
+{
+    return dimensionedSymmTensor
+    (
+        "innerSqr("+dt.name()+')',
+        sqr(dt.dimensions()),
+        innerSqr(dt.value())
+    );
+}
+
+
 dimensionedScalar tr(const dimensionedSymmTensor& dt)
 {
     return dimensionedScalar
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H
index b4e94d43b9c79939d84555aa5f006c26962c44fe..97171e57a52d1c3cc5da7cbe90999dc56a43f516 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,6 +51,7 @@ typedef dimensioned<symmTensor> dimensionedSymmTensor;
 // global functions
 
 dimensionedSymmTensor sqr(const dimensionedVector&);
+dimensionedSymmTensor innerSqr(const dimensionedSymmTensor&);
 
 dimensionedScalar tr(const dimensionedSymmTensor&);
 dimensionedSymmTensor symm(const dimensionedSymmTensor&);
@@ -77,4 +78,3 @@ dimensionedVector operator*(const dimensionedSymmTensor&);
 #endif
 
 // ************************************************************************* //
-
diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C
index f92b103ad156ec1f331ba2dacec936967c3ff37e..6d830c5c8fe0abc10d7168a60de592cf09bce2bd 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-UNARY_FUNCTION(symmTensor, vector, sqr, transform)
+UNARY_FUNCTION(symmTensor, vector, sqr, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr, sqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr, transform)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph, transform)
diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H
index b234a306b3c6db9f75dcbec227affdfff8b831e0..01f8c2a037033442f62ba6584def904d51d43591 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,8 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-UNARY_FUNCTION(symmTensor, vector, sqr, transform)
+UNARY_FUNCTION(symmTensor, vector, sqr, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr, sqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr, transform)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph, transform)
diff --git a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C
index 542493f1821818e11a35d28dda688f2e914d4587..5649f0b8d80ad6854bc641d854ee11ba2abc2d10 100644
--- a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C
+++ b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,6 +39,7 @@ namespace Foam
 // * * * * * * * * * * * * * * * global operators  * * * * * * * * * * * * * //
 
 UNARY_FUNCTION(symmTensor, vector, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph)
diff --git a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H
index 56f5aac80bcfbcf73d3991a2068633e108c27987..3e28101332269015f70a40b15b0bffbf6bde5af8 100644
--- a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H
+++ b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,6 +49,7 @@ namespace Foam
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 UNARY_FUNCTION(symmTensor, vector, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph)
diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C
index fe5c4a3b79d251888b474fa33944a2dceb8eb3a9..5aec204e24211c9d5c50cf27a5e4cd002f3f97d0 100644
--- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C
+++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,7 @@ namespace Foam
 // * * * * * * * * * * * * * * * global functions  * * * * * * * * * * * * * //
 
 UNARY_FUNCTION(symmTensor, vector, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph)
diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H
index f3a8cabd23569bc140fd8de82cdb609be093ad36..65ce2be113c4082c2747f985d6fc5bc184b0e1eb 100644
--- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H
+++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,6 +54,7 @@ typedef Field<symmTensor> symmTensorField;
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 UNARY_FUNCTION(symmTensor, vector, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph)
diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C
index 1f5f054e9237e1671f3e93e36bc73ccdbeedda3a..d4470ce32f90b1c3a1854f52cf9cffbebbc3af5e 100644
--- a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C
+++ b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,7 @@ namespace Foam
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 UNARY_FUNCTION(symmTensor, vector, sqr, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr, sqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr, transform)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph, transform)
diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H
index 67e1c84d0acce2f7b52c972c97e96ee8a55bff6f..5706894bbebeb7bc748c5f15d9340bb970afff36 100644
--- a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H
+++ b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,8 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-UNARY_FUNCTION(symmTensor, vector, sqr, transform)
+UNARY_FUNCTION(symmTensor, vector, sqr, sqr)
+UNARY_FUNCTION(symmTensor, symmTensor, innerSqr, sqr)
 
 UNARY_FUNCTION(scalar, symmTensor, tr, transform)
 UNARY_FUNCTION(sphericalTensor, symmTensor, sph, transform)
diff --git a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
index 19bcfb38421461a3c8e38131918bff492da824ae..26e849f720d4b03874c71b04ac32a3992900520c 100644
--- a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
+++ b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -248,6 +248,25 @@ operator&(const Vector<Cmpt>& v, const SymmTensor<Cmpt>& st)
 }
 
 
+//- Inner-sqr of a symmetric tensor
+template<class Cmpt>
+inline SymmTensor<Cmpt>
+innerSqr(const SymmTensor<Cmpt>& st)
+{
+    return SymmTensor<Cmpt>
+    (
+        st.xx()*st.xx() + st.xy()*st.xy() + st.xz()*st.xz(),
+        st.xx()*st.xy() + st.xy()*st.yy() + st.xz()*st.yz(),
+        st.xx()*st.xz() + st.xy()*st.yz() + st.xz()*st.zz(),
+
+        st.xy()*st.xy() + st.yy()*st.yy() + st.yz()*st.yz(),
+        st.xy()*st.xz() + st.yy()*st.yz() + st.yz()*st.zz(),
+
+        st.xz()*st.xz() + st.yz()*st.yz() + st.zz()*st.zz()
+    );
+}
+
+
 template<class Cmpt>
 inline Cmpt magSqr(const SymmTensor<Cmpt>& st)
 {
diff --git a/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2DI.H b/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2DI.H
index 458976b756a8fcfbc8d0186b18c45a1eb25e7685..1a139d8f64f19ea73797fe175811224984941712 100644
--- a/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2DI.H
+++ b/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2DI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -189,6 +189,20 @@ operator&(const Vector2D<Cmpt>& v, const SymmTensor2D<Cmpt>& st)
 }
 
 
+//- Inner-sqr of a symmetric tensor
+template<class Cmpt>
+inline SymmTensor2D<Cmpt>
+innerSqr(const SymmTensor2D<Cmpt>& st)
+{
+    return SymmTensor2D<Cmpt>
+    (
+        st.xx()*st.xx() + st.xy()*st.xy(),
+        st.xx()*st.xy() + st.xy()*st.yy(),
+        st.xy()*st.xy() + st.yy()*st.yy()
+    );
+}
+
+
 template<class Cmpt>
 inline Cmpt magSqr(const SymmTensor2D<Cmpt>& st)
 {