From e2d1156dddd0941142a8db71c7f7fa6cda1b9e28 Mon Sep 17 00:00:00 2001 From: Henry Weller 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 646ba7734..9fd1318ac 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;