transform: Standardised the Rx, Ry, Rz and Ra rotational tranformations

so that they operate in the conventional manner in a right-handed coordinate
system:

//- Rotational transformation tensor about the x-axis by omega radians
//  The rotation is defined in a right-handed coordinate system
//  i.e. clockwise with respect to the axis from -ve to +ve
//  (looking along the axis).
inline tensor Rx(const scalar& omega)

//- Rotational transformation tensor about the y-axis by omega radians
//  The rotation is defined in a right-handed coordinate system
//  i.e. clockwise with respect to the axis from -ve to +ve
//  (looking along the axis).
inline tensor Ry(const scalar& omega)

//- Rotational transformation tensor about the z-axis by omega radians
//  The rotation is defined in a right-handed coordinate system
//  i.e. clockwise with respect to the axis from -ve to +ve
//  (looking along the axis).
inline tensor Rz(const scalar& omega)

//- Rotational transformation tensor about axis a by omega radians
//  The rotation is defined in a right-handed coordinate system
//  i.e. clockwise with respect to the axis from -ve to +ve
//  (looking along the axis).
inline tensor Ra(const vector& a, const scalar omega)
This commit is contained in:
Henry Weller
2021-03-30 13:11:48 +01:00
parent 0df21c5515
commit 227734ddf8
6 changed files with 31 additions and 19 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org \\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -83,6 +83,9 @@ inline tensor rotationTensor
//- Rotational transformation tensor about the x-axis by omega radians //- Rotational transformation tensor about the x-axis by omega radians
// The rotation is defined in a right-handed coordinate system
// i.e. clockwise with respect to the axis from -ve to +ve
// (looking along the axis).
inline tensor Rx(const scalar& omega) inline tensor Rx(const scalar& omega)
{ {
const scalar s = sin(omega); const scalar s = sin(omega);
@ -90,41 +93,50 @@ inline tensor Rx(const scalar& omega)
return tensor return tensor
( (
1, 0, 0, 1, 0, 0,
0, c, s, 0, c, -s,
0, -s, c 0, s, c
); );
} }
//- Rotational transformation tensor about the y-axis by omega radians //- Rotational transformation tensor about the y-axis by omega radians
// The rotation is defined in a right-handed coordinate system
// i.e. clockwise with respect to the axis from -ve to +ve
// (looking along the axis).
inline tensor Ry(const scalar& omega) inline tensor Ry(const scalar& omega)
{ {
const scalar s = sin(omega); const scalar s = sin(omega);
const scalar c = cos(omega); const scalar c = cos(omega);
return tensor return tensor
( (
c, 0, -s, c, 0, s,
0, 1, 0, 0, 1, 0,
s, 0, c -s, 0, c
); );
} }
//- Rotational transformation tensor about the z-axis by omega radians //- Rotational transformation tensor about the z-axis by omega radians
// The rotation is defined in a right-handed coordinate system
// i.e. clockwise with respect to the axis from -ve to +ve
// (looking along the axis).
inline tensor Rz(const scalar& omega) inline tensor Rz(const scalar& omega)
{ {
const scalar s = sin(omega); const scalar s = sin(omega);
const scalar c = cos(omega); const scalar c = cos(omega);
return tensor return tensor
( (
c, s, 0, c, -s, 0,
-s, c, 0, s, c, 0,
0, 0, 1 0, 0, 1
); );
} }
//- Rotational transformation tensor about axis a by omega radians //- Rotational transformation tensor about axis a by omega radians
// The rotation is defined in a right-handed coordinate system
// i.e. clockwise with respect to the axis from -ve to +ve
// (looking along the axis).
inline tensor Ra(const vector& a, const scalar omega) inline tensor Ra(const vector& a, const scalar omega)
{ {
const scalar s = sin(omega); const scalar s = sin(omega);
@ -133,15 +145,15 @@ inline tensor Ra(const vector& a, const scalar omega)
return tensor return tensor
( (
sqr(a.x())*(1 - c) + c, sqr(a.x())*(1 - c) + c,
a.y()*a.x()*(1 - c) + a.z()*s, 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.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.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 sqr(a.z())*(1 - c) + c
); );
} }

View File

@ -51,7 +51,7 @@ vertices #codeStream
// Rotate points around z-axis and append // Rotate points around z-axis and append
for (label i = 0; i < 4; i++) for (label i = 0; i < 4; i++)
{ {
points.append(transform(Rz(-degToRad(i*$angle)), initPoints)); points.append(transform(Rz(degToRad(i*$angle)), initPoints));
} }
// Duplicate z points // Duplicate z points

View File

@ -6,7 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory
runApplication surfaceTransformPoints \ runApplication surfaceTransformPoints \
"translate=(-0.586 0 -0.156), \ "translate=(-0.586 0 -0.156), \
Ry=3.485, \ Ry=-3.485, \
translate=(0.586 0 0.156)" \ translate=(0.586 0 0.156)" \
constant/geometry/w3_orig.stl constant/geometry/w3.stl constant/geometry/w3_orig.stl constant/geometry/w3.stl

View File

@ -6,7 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory
runApplication surfaceTransformPoints \ runApplication surfaceTransformPoints \
"translate=(-0.586 0 -0.156), \ "translate=(-0.586 0 -0.156), \
Ry=3.485, \ Ry=-3.485, \
translate=(0.586 0 0.156)" \ translate=(0.586 0 0.156)" \
constant/geometry/w3_orig.stl constant/geometry/w3.stl constant/geometry/w3_orig.stl constant/geometry/w3.stl

View File

@ -56,7 +56,7 @@ vertices #codeStream
}); });
// Rotate points around z-axis // Rotate points around z-axis
points = transform(Rz(-degToRad($angle)), points); points = transform(Rz(degToRad($angle)), points);
// Append points 6 and 7 // Append points 6 and 7
points.append(points[0]); // pt 6 points.append(points[0]); // pt 6

View File

@ -56,7 +56,7 @@ vertices #codeStream
// Rotate points around z-axis and append // Rotate points around z-axis and append
for (label i = 0; i < 8; i++) for (label i = 0; i < 8; i++)
{ {
points.append(transform(Rz(-degToRad(i*$angle)), initPoints)); points.append(transform(Rz(degToRad(i*$angle)), initPoints));
} }
// Duplicate z points // Duplicate z points