CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Pre-Processing (http://www.cfd-online.com/Forums/openfoam-pre-processing/)
-   -   New transformation option for utility: transformPoints (http://www.cfd-online.com/Forums/openfoam-pre-processing/96153-new-transformation-option-utility-transformpoints.html)

philippose January 13, 2012 18:02

New transformation option for utility: transformPoints
 
Hello and a Good Evening,

Today I had the need to rotate my mesh along a specific axis, which does not pass through the origin..... an arbitrary axis defined by two points.

As far as I can see, none of the rotation transforms in the mesh utility: "transformPoints" allows this kind of a rotation about an arbitrary line..... or am I wrong?

In order to achieve my requirement, I added on one more command line option to transformPoints: "-rotateAlongLine", which allows the mesh to be rotated along any arbitrary axis which does not need to pass through the origin, and is defined by:

1. A point which lies on the axis P1(x,y,z)
2. A direction vector which defines the axis, which would typically by P2 - P1 (where P2 is another point on the line which defines the axis)
3. The required rotation angle (in degrees)

Hence, the new command-line option looks like this:

Code:

transformPoints -rotateAboutLine "(0 -0.05 0) (1 1 0) 45"
The above command would rotate the mesh about an axis which passes through the point P1(0,-0.05,0) and has the direction vector (1,1,0) by an angle of 45 degrees.

-----------

The implementation of this option is as follows:

1. Translate the mesh such that the given point becomes the origin of the mesh....:

Code:

points -= pointOnLine;
2. Create a Rodrigues Rotation tensor using the specified direction vector and the rotation angle, and transform the points:

Code:

tensor T = RodriguesRotation(dirVector, rotationAngle);
points = transform(T, points);

3. Shift the mesh back to the original location:

Code:

points += pointOnLine;

It would be great if someone could add this to the Git repository of the OpenFOAM-1.6-ext project....? Unless this kind of operation is already possible (without having do it manually by using three calls to transformPoints i.e. :-)!)


If required, I can put up a zipped copy of the modified "transformPoints" utility.


Philippose


All times are GMT -4. The time now is 14:18.