OpenFAST
Wind turbine multiphysics simulator
Public Member Functions | List of all members
nwtc_num::eulerconstruct Interface Reference

This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians. More...

Public Member Functions

real(siki) function, dimension(3, 3) eulerconstructr4 (theta)
 This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians. More...
 
real(r8ki) function, dimension(3, 3) eulerconstructr8 (theta)
 This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians. More...
 
real(quki) function, dimension(3, 3) eulerconstructr16 (theta)
 This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians. More...
 

Detailed Description

This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians.

M represents a change of basis (from global to local coordinates; not a physical rotation of the body). It is the inverse of EulerExtract (nwtc_num::eulerextract).

\begin{eqnarray*} M & = & R(\theta_z) R(\theta_y) R(\theta_x) \\ & = & \begin{bmatrix} \cos(\theta_z) & \sin(\theta_z) & 0 \\ -\sin(\theta_z) & \cos(\theta_z) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta_y) & 0 & -\sin(\theta_y) \\ 0 & 1 & 0 \\ \sin(\theta_y) & 0 & \cos(\theta_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta_x) & \sin(\theta_x) \\ 0 & -\sin(\theta_x) & \cos(\theta_x) \end{bmatrix} \\ & = & \begin{bmatrix} \cos(\theta_y)\cos(\theta_z) & \cos(\theta_x)\sin(\theta_z)+\sin(\theta_x)\sin(\theta_y)\cos(\theta_z) & \sin(\theta_x)\sin(\theta_z)-\cos(\theta_x)\sin(\theta_y)\cos(\theta_z) \\ -\cos(\theta_y)\sin(\theta_z) & \cos(\theta_x)\cos(\theta_z)-\sin(\theta_x)\sin(\theta_y)\sin(\theta_z) & \sin(\theta_x)\cos(\theta_z)+\cos(\theta_x)\sin(\theta_y)\sin(\theta_z) \\ \sin(\theta_y) & -\sin(\theta_x)\cos(\theta_y) & \cos(\theta_x)\cos(\theta_y) \\ \end{bmatrix} \end{eqnarray*}

Use EulerConstruct (nwtc_num::eulerconstruct) instead of directly calling a specific routine in the generic interface.

Returns
rotation matrix, M
Parameters
[in]thetathe 3 rotation angles: \(\theta_x, \theta_y, \theta_z\)

Member Function/Subroutine Documentation

◆ eulerconstructr16()

real(quki) function, dimension(3,3) nwtc_num::eulerconstruct::eulerconstructr16 ( real(quki), dimension(3), intent(in)  theta)

This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians.

M represents a change of basis (from global to local coordinates; not a physical rotation of the body). It is the inverse of EulerExtract (nwtc_num::eulerextract).

\begin{eqnarray*} M & = & R(\theta_z) R(\theta_y) R(\theta_x) \\ & = & \begin{bmatrix} \cos(\theta_z) & \sin(\theta_z) & 0 \\ -\sin(\theta_z) & \cos(\theta_z) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta_y) & 0 & -\sin(\theta_y) \\ 0 & 1 & 0 \\ \sin(\theta_y) & 0 & \cos(\theta_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta_x) & \sin(\theta_x) \\ 0 & -\sin(\theta_x) & \cos(\theta_x) \end{bmatrix} \\ & = & \begin{bmatrix} \cos(\theta_y)\cos(\theta_z) & \cos(\theta_x)\sin(\theta_z)+\sin(\theta_x)\sin(\theta_y)\cos(\theta_z) & \sin(\theta_x)\sin(\theta_z)-\cos(\theta_x)\sin(\theta_y)\cos(\theta_z) \\ -\cos(\theta_y)\sin(\theta_z) & \cos(\theta_x)\cos(\theta_z)-\sin(\theta_x)\sin(\theta_y)\sin(\theta_z) & \sin(\theta_x)\cos(\theta_z)+\cos(\theta_x)\sin(\theta_y)\sin(\theta_z) \\ \sin(\theta_y) & -\sin(\theta_x)\cos(\theta_y) & \cos(\theta_x)\cos(\theta_y) \\ \end{bmatrix} \end{eqnarray*}

Use EulerConstruct (nwtc_num::eulerconstruct) instead of directly calling a specific routine in the generic interface.

Returns
rotation matrix, M
Parameters
[in]thetathe 3 rotation angles: \(\theta_x, \theta_y, \theta_z\)

◆ eulerconstructr4()

real(siki) function, dimension(3,3) nwtc_num::eulerconstruct::eulerconstructr4 ( real(siki), dimension(3), intent(in)  theta)

This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians.

M represents a change of basis (from global to local coordinates; not a physical rotation of the body). It is the inverse of EulerExtract (nwtc_num::eulerextract).

\begin{eqnarray*} M & = & R(\theta_z) R(\theta_y) R(\theta_x) \\ & = & \begin{bmatrix} \cos(\theta_z) & \sin(\theta_z) & 0 \\ -\sin(\theta_z) & \cos(\theta_z) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta_y) & 0 & -\sin(\theta_y) \\ 0 & 1 & 0 \\ \sin(\theta_y) & 0 & \cos(\theta_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta_x) & \sin(\theta_x) \\ 0 & -\sin(\theta_x) & \cos(\theta_x) \end{bmatrix} \\ & = & \begin{bmatrix} \cos(\theta_y)\cos(\theta_z) & \cos(\theta_x)\sin(\theta_z)+\sin(\theta_x)\sin(\theta_y)\cos(\theta_z) & \sin(\theta_x)\sin(\theta_z)-\cos(\theta_x)\sin(\theta_y)\cos(\theta_z) \\ -\cos(\theta_y)\sin(\theta_z) & \cos(\theta_x)\cos(\theta_z)-\sin(\theta_x)\sin(\theta_y)\sin(\theta_z) & \sin(\theta_x)\cos(\theta_z)+\cos(\theta_x)\sin(\theta_y)\sin(\theta_z) \\ \sin(\theta_y) & -\sin(\theta_x)\cos(\theta_y) & \cos(\theta_x)\cos(\theta_y) \\ \end{bmatrix} \end{eqnarray*}

Use EulerConstruct (nwtc_num::eulerconstruct) instead of directly calling a specific routine in the generic interface.

Returns
rotation matrix, M
Parameters
[in]thetathe 3 rotation angles: \(\theta_x, \theta_y, \theta_z\)

◆ eulerconstructr8()

real(r8ki) function, dimension(3,3) nwtc_num::eulerconstruct::eulerconstructr8 ( real(r8ki), dimension(3), intent(in)  theta)

This function creates a rotation matrix, M, from a 1-2-3 rotation sequence of the 3 Euler angles, \(\theta_x\), \(\theta_y\), and \(\theta_z\), in radians.

M represents a change of basis (from global to local coordinates; not a physical rotation of the body). It is the inverse of EulerExtract (nwtc_num::eulerextract).

\begin{eqnarray*} M & = & R(\theta_z) R(\theta_y) R(\theta_x) \\ & = & \begin{bmatrix} \cos(\theta_z) & \sin(\theta_z) & 0 \\ -\sin(\theta_z) & \cos(\theta_z) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta_y) & 0 & -\sin(\theta_y) \\ 0 & 1 & 0 \\ \sin(\theta_y) & 0 & \cos(\theta_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta_x) & \sin(\theta_x) \\ 0 & -\sin(\theta_x) & \cos(\theta_x) \end{bmatrix} \\ & = & \begin{bmatrix} \cos(\theta_y)\cos(\theta_z) & \cos(\theta_x)\sin(\theta_z)+\sin(\theta_x)\sin(\theta_y)\cos(\theta_z) & \sin(\theta_x)\sin(\theta_z)-\cos(\theta_x)\sin(\theta_y)\cos(\theta_z) \\ -\cos(\theta_y)\sin(\theta_z) & \cos(\theta_x)\cos(\theta_z)-\sin(\theta_x)\sin(\theta_y)\sin(\theta_z) & \sin(\theta_x)\cos(\theta_z)+\cos(\theta_x)\sin(\theta_y)\sin(\theta_z) \\ \sin(\theta_y) & -\sin(\theta_x)\cos(\theta_y) & \cos(\theta_x)\cos(\theta_y) \\ \end{bmatrix} \end{eqnarray*}

Use EulerConstruct (nwtc_num::eulerconstruct) instead of directly calling a specific routine in the generic interface.

Returns
rotation matrix, M
Parameters
[in]thetathe 3 rotation angles: \(\theta_x, \theta_y, \theta_z\)

The documentation for this interface was generated from the following file: