From 07041365cca1a3d5c8be667e5bfc07503c384e4b Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Thu, 17 Mar 2016 18:09:04 +0000
Subject: [PATCH] primitives/transform: Added functios to generate rotation
 tensor about the given axis

---
 src/OpenFOAM/primitives/transform/transform.H | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/OpenFOAM/primitives/transform/transform.H b/src/OpenFOAM/primitives/transform/transform.H
index 646ba7734f8..9fd1318acc7 100644
--- a/src/OpenFOAM/primitives/transform/transform.H
+++ b/src/OpenFOAM/primitives/transform/transform.H
@@ -119,6 +119,29 @@ inline tensor Rz(const scalar& omega)
 }
 
 
+//- Rotational transformation tensor about axis a by omega radians
+inline tensor Ra(const vector& a, const scalar omega)
+{
+    const scalar s = sin(omega);
+    const scalar c = cos(omega);
+
+    return tensor
+    (
+        sqr(a.x())*(1 - c)  + c,
+        a.y()*a.x()*(1 - c) + a.z()*s,
+        a.x()*a.z()*(1 - c) - a.y()*s,
+
+        a.x()*a.y()*(1 - c) - a.z()*s,
+        sqr(a.y())*(1 - c)  + c,
+        a.y()*a.z()*(1 - c) + a.x()*s,
+
+        a.x()*a.z()*(1 - c) + a.y()*s,
+        a.y()*a.z()*(1 - c) - a.x()*s,
+        sqr(a.z())*(1 - c)  + c
+    );
+}
+
+
 inline label transform(const tensor&, const bool i)
 {
     return i;
-- 
GitLab