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
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -83,6 +83,9 @@ inline tensor rotationTensor
//- 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)
{
const scalar s = sin(omega);
@ -90,41 +93,50 @@ inline tensor Rx(const scalar& omega)
return tensor
(
1, 0, 0,
0, c, s,
0, -s, c
0, c, -s,
0, s, c
);
}
//- 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)
{
const scalar s = sin(omega);
const scalar c = cos(omega);
return tensor
(
c, 0, -s,
c, 0, s,
0, 1, 0,
s, 0, c
-s, 0, c
);
}
//- 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)
{
const scalar s = sin(omega);
const scalar c = cos(omega);
return tensor
(
c, s, 0,
-s, c, 0,
c, -s, 0,
s, c, 0,
0, 0, 1
);
}
//- 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)
{
const scalar s = sin(omega);
@ -133,15 +145,15 @@ inline tensor Ra(const vector& a, const scalar 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.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
);
}

View File

@ -51,7 +51,7 @@ vertices #codeStream
// Rotate points around z-axis and append
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

View File

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

View File

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

View File

@ -56,7 +56,7 @@ vertices #codeStream
// Rotate points around z-axis and append
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