# rotate function in sixDoFRigidBodyMotionI.H

 Register Blogs Members List Search Today's Posts Mark Forums Read

 August 7, 2020, 04:54 rotate function in sixDoFRigidBodyMotionI.H #1 Senior Member   Michael Alletto Join Date: Jun 2018 Location: Bremen Posts: 448 Rep Power: 9 The rotate function in the file \\$FOAM_SRC/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H looks as follows: Code:  inline Foam::Tuple2 Foam::sixDoFRigidBodyMotion::rotate ( const tensor& Q0, const vector& pi0, const scalar deltaT ) const { Tuple2 Qpi(Q0, pi0); tensor& Q = Qpi.first(); vector& pi = Qpi.second(); tensor R = rotationTensorX(0.5*deltaT*pi.x()/momentOfInertia_.xx()); pi = pi & R; Q = Q & R; R = rotationTensorY(0.5*deltaT*pi.y()/momentOfInertia_.yy()); pi = pi & R; Q = Q & R; R = rotationTensorZ(deltaT*pi.z()/momentOfInertia_.zz()); pi = pi & R; Q = Q & R; R = rotationTensorY(0.5*deltaT*pi.y()/momentOfInertia_.yy()); pi = pi & R; Q = Q & R; R = rotationTensorX(0.5*deltaT*pi.x()/momentOfInertia_.xx()); pi = pi & R; Q = Q & R; return Qpi; } pi is the angular momentum vector and Q the orientation matrix (it describes the transformation from the local to the global coordinate system) What i figured out so fare the intention of this function is to compute the angle difference between the local coordinate system at the old and new time step. For this purpose one can use the equation for the angular momentum L Beeing I the diagonal inertial tensor and phi a vector. So my question is why the function first rotates half angle around the first axis, then half angle around the second axis, the full angle around the third axis, than half angle around the second axis and half angle around the first axis. What is the difference to perform the full rotation around the first, second and third axis? Best Michael

 August 10, 2020, 07:31 #2 Senior Member   Michael Alletto Join Date: Jun 2018 Location: Bremen Posts: 448 Rep Power: 9 Maybe some additional background: What I found so far is that in OpenFoam (I checked 2006) to obtain the new orientation of the local body fixed coordinate system we first integrate the equation of motion for the angular momentum transformed to the local coordinate system: The subscript C denotes that the angular momentum is computed using the center of gravity as reference point. If we integrate this equation ones we get the angular momentum at the new time step The moment of inertia in the above equation is only diagonal if axis of the local coordinate system are aligned with the axis of inertia. The subcript n+1 denotes that the vectors are expressed in the local coordinate system at the time step n+1 and the superscript n+1 denotes the time step at which the solution is computed. Unfortunately we know only the orientation of the local coordinate system in the last time step n. We get a first order approximation of the above equation if we express the vectors in the local coordinate system at the time step n: is the vector of angle differences between the orientation of the axis of the local coordinate system at the time step n and n+1. So if we rotate the axis of the local coordinate system by the three angles increments we get the orientation of the local coordinate system at the new time step. What i do not understand is why the rotate function is constructed like described in the previous post. Last edited by mAlletto; August 10, 2020 at 10:49.