CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Pre-Processing (https://www.cfd-online.com/Forums/openfoam-pre-processing/)
-   -   SurfaceTransformPoints rotate suggestion for improvement (https://www.cfd-online.com/Forums/openfoam-pre-processing/62010-surfacetransformpoints-rotate-suggestion-improvement.html)

markc January 9, 2009 02:31

Hello All, We found it very
 
Hello All,

We found it very hard to understand the necessary input definition for rotating some surface object using the utility surfaceTransformPoints. One needs to supply 2 vectors which are used to construct a rotation matrix. We finally found how this matrix is constructed from these two vectors but were not able to find out how to relate the vectors to some kind of desired rotation. Therefore I modified the utility such that you only need to supply three angles of rotation (rotX, rotY, rotZ), which seems much more intuitively.
The code now reads:
argList::validOptions.insert("rotate", "'(degrX degrY degrZ)'");
...
...
if (args.options().found("rotate"))
{
using namespace mathematicalConstant;

vector angles = (IStringStream(args.options()["rotate"])());
scalar phiX = pi*angles[0]/180;
scalar phiY = pi*angles[1]/180;
scalar phiZ = pi*angles[2]/180;

tensor Rx (1, 0, 0, 0, Foam::cos(phiX), Foam::sin(phiX), 0, -Foam::sin(phiX), Foam::cos(phiX));
tensor Ry (Foam::cos(phiY), 0, -Foam::sin(phiY), 0, 1, 0, Foam::sin(phiY), 0, Foam::cos(phiY));
tensor Rz (Foam::cos(phiZ), Foam::sin(phiZ), 0, -Foam::sin(phiZ), Foam::cos(phiZ), 0, 0, 0, 1);

tensor T (Rz & Ry & Rx);
Info<< "Rotating points by " << T << endl;

points = transform(T, points);
}

Attached the complete code.
http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif surfaceTransform.tar.gz

Hopefully it is usefull for people.

Brgds,

Mark

schwermetall August 13, 2011 08:47

Hi everyone
unfortunatelly I'm new to openFoam, C++ and linux. So I apologize for stupid questions in the first place.
I really like to use surfaceTransfom, as m task is to run OpenFoam on airfoils at different angles of attack.

My question is, how can I use surfaceTransform ? I thought it has to be copied to the same directory as transformPoints but the Terminal returns command not found

Can anyone help me?
Thanks a lot


All times are GMT -4. The time now is 00:23.