This website uses local storage to ensure you get the best experience on our website.

Table of Contents

6 DOF Gearbox DLL Interface

The 6 Degree Of Freedom (DOF) Gearbox DLL models the gearbox, high-speed shaft and generator rotor inertia. The Bladed multibody structural components of the drive train are altered significantly when using 6DOF drive train DLL option. A free joint component called “Gearbox DLL" is added and allows the 6DOF accelerations of the gearbox component to be specified by the user. The Gearbox DLL component is straddled by the GM and GBL multibody nodes. The DLL inputs for the GM and GBL node forces and torques are in the proximal reference frame of the “Gearbox DLL” component, which is aligned with the GM node. The gearbox DLL acceleration outputs, which are calculated on initial conditions and state derivatives call types, are also with respect to the proximal reference frame. The inputs and outputs of the DLL are detailed in the tables below.

It is necessary to specify the length of the low-speed shaft and the location about which the bending is assumed. This bending point is specified as a % of the shaft length from the hub side. The stiffness and damping parameters in all 6 degrees of freedom can be specified in Power train > Transmission under the LSS Stiffness / Damping values.

On the Power Train > Mounting tab, the stiffness and damping parameters of the gearbox mounting in all 6 degrees of freedom have to be specified by clicking on the Mounting Stiffness / Damping values button. In addition the dimensions of the gearbox need to be entered by specifying the location of the LSS relative to the centre of the mounting.

The user must specify the mass and inertia of the stator in the “Mass+Inertia (stator side)” rigid body using the Added Inertias > Multibody Node Added Inertias option in the Additional Items window. Mass and inertia can be specified as either a 6×6 inertia tensor or as a scalar mass, with an offset vector from the GM node to the centre of mass, plus a 3×3 moment of inertia tensor. The specified inertia must be greater than zero in all 6 DOF, i.e. the mass, if specified, and the main diagonal elements of the inertia tensor must be greater than zero. Optionally, the “Mass+Inertia (rotor side)” component, attached to GBL node, may also be specified using the Added Inertias option in the Additional Items window.

A simplified schematic of the geometry of the drive train is shown below. The positions of the nodes are related to the following parameters, which are defined in the user interface:

  • Overhang, Hub Vertical Offset, and Tilt Angle in the Rotor window,

  • LSS Length and Bending Point in the Transmission tab of the Power Train window, and

  • Position of GBL node relative to GM node in the Mounting tab of the Power Train window.

Alt text

Figure 1: Geometry of the 6DOF drive train dll.

Functionality that is not supported or conditionally supported when using the 6DOF Gearbox DLL is listed below:

Calculations/ Features Compatible with 6DoF Gearbox DLL Comments Workaround
Modal Analysis No Running stand alone modal analysis from flexibility window is not supported. But modal analysis is automatically completed before commencing a simulation. Run Modal Analysis using a model that does not include 6DOF Gearbox DLL
Multirotor No Not supported Run using a model that does not include 6oF Gearbox DLL
Steady Power Curve No Not supported
Implicit Newmark beta integrator No Not supported None
Modal Analysis No Define initial mooting position must be selected under Initial Conditions

Interface Introduction

The procedure is called in different ways by Bladed, depending on the call type given by element 2 of Arg1. Arg2 always contains the time in seconds since the start of the simulation. Arg3 to Arg7 depend on the value of the call type, Arg1(2), as described below. Any arguments not mentioned are not used in that call, but must still be present.

Name : DLL_GBX_6DOF
Return value: None
Arguments: Data type Array length Description
Arg1 4-byte integer 10 See below
Arg2 8-byte real1 1 Time (s) since start of simulation
Arg3 4-byte integer Arg1(3) See below
Arg4 1-byte char 2 Arg1(4) See below
Arg5 8-byte real1 Arg1(5) See below
Arg6 8-byte real1 Arg1(6) See below
Arg7 8-byte real1 Arg1(7) See below
Arg8 1-byte char Arg1(8) Message returned by DLL

All arguments are passed by reference, so for example Arg1 is a pointer to the start of an array of ten 4-byte integers, Arg2 is a pointer to a single 8-byte (double-precision) floating point number, and Arg4 is a pointer to an array of one-byte characters, the number of elements in the array being given by the fourth element of Arg1. The other elements of Arg1 are defined as follows:

Elements of Arg1 INTEGER array
1 To DLL DLL interface version number.
2 To DLL Call type: 1 to 9.
3 To DLL Size of Arg3, intitially 4 then resized after Initialisation call type
4 To DLL Size of Arg4 = 2048
5 To DLL Size of Arg5, intitially 1 then resized after Initialisation call type
6 To DLL Size of Arg6 = 15
7 To DLL Size of Arg7, intitially 1 then resized after Initialisation call type
8 To DLL Size of Arg8 = 1024
9 From DLL 0 means OK, <0 means Abort
10 To DLL Unique number representing the number of brakes that have been activated. Up to 3 can be defined by the user. The decimal brake flag is \(\Sigma_i 2^{i-1} B_i\), where \(B_i\) is the state of each shaft brake (0=off, 1=on).

If Arg1(9) is returned with a non-zero value an explanatory message (terminated by a null character) should be returned in Arg8.

The number of characters returned in Arg4 and Arg8 must never exceed 2048 and 1024 respectively.

The required size of the Arg3, Arg5 and Arg 7 arrays depends on the numbers of user defined states (Nx), logged output variables (Nout) and user variables (NuserVars). Arg3, Arg5 and Arg 7 are resized after the Initialisation call type and the array sizes for subsequent call types are provided in Arg1 elements 3, 5 and 7 respectively, as shown below.

Element Post-initialisation call types
Arg1(3) 4 + Nx
Arg1(5) Maximum of: 20, 3 + Nx + NuserVars
Arg1(7) Maximum of: Nx + NuserVars, 7 + 2 \(\times\) Nout

Call Type 1: Initialisation

This call initialises the DLL model (using any constants which might come from the Bladed model) and returns the required number of integrator states and output variables.

Elements of Arg3 INTEGER array:
1 From DLL Nx = Number of states to integrate
2 From DLL Nout = Number of variables to output
3 To DLL Nx = Number of states to integrate
4 To DLL Nout = Number of variables to output
Elements of Arg4 CHAR*1 array
1 to NC(max) To DLL Name of Parameter File and Verification File, each terminated by a semi-colon (;). If desired the DLL may open and read the Parameter File, which contains any user-defined data. The Verification File must be opened FOR APPENDING ONLY, and can be used to keep a record of the DLL parameters. This will be the $VE file for the simulation, so it is important not to overwrite the data which it already contains. If opened, this file must be closed again before the DLL returns.
Elements of Arg5 REAL*8 array (NR1 \(\geq\) Nx)
1 To/From DLL Nominal overall gearbox ratio between input and output shaft3. If the value passed by Bladed is not correct, the DLL should overwrite this value set Arg1(9) greater than zero and return a message in Arg8.

Call Type 2: State Definition

This call returns the names and absolute tolerances of the integrator states required by the DLL.

Elements of Arg3 INTEGER array:
1 To DLL Nx
2 to Nx+1 From DLL Reserved for future use
Elements of Arg4 CHAR*1 array
1 to NC(max) From DLL "State name:Units4;" for each state
Elements of Arg5 REAL*8 array (NR1 \(\geq\) Nx)
1 to Nx From DLL Absolute tolerances of the integrator states

Call Type 3: Output Variable Definition

This call returns the names and units of variables from the DLL to be output in time history output from Bladed (\(\bvector{y}_{out}\) from the second state-space equation \(\bvector{y}_{out} = \bmatrix{C}_{out} \bvector{x} + \bmatrix{D}_{out} \bvector{u}\)).

Elements of Arg3 INTEGER array
1 To DLL Nout
Elements of Arg4 CHAR*1 array
1 to NC(max) From DLL "Variable name:Units4;" for each output variable

Call Type 4: Initial Conditions

This call executes one step of the initial conditions iteration, and also returns the initial values of the states (assuming everything is in the steady state).

Elements of Arg3 INTEGER array
1 To DLL Nx
2 To DLL Number of DLL variables in Arg5 = 20
3 To DLL Number of DLL output variables in Arg6 = 9
4 To DLL 0 = trial call, 1 = final call
5 to Nx+4 From DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 To DLL GBL node x force
5 To DLL GBL node y force
6 To DLL GBL node z force
7 To/From DLL GBL node \(\theta_{x}\) torque[^LSSTrq]
8 To DLL GBL node \(\theta_{y}\) torque
9 To DLL GBL node \(\theta_{z}\) torque
10 To DLL Generator air-gap torque |
11 To DLL GM node x force
12 To DLL GM node y force
13 To DLL GM node z force
14 To DLL GM node \(\theta_{x}\) torque
15 To DLL GM node \(\theta_{y}\) torque
16 To DLL GM node \(\theta_{z}\) torque
17 To DLL Brake applied torque if applicable (Nm) 6
18 To DLL Loss torque if applicable (Nm) 6
19 To DLL LSS angular position \(\theta\) (rad)
20 To DLL HSS angular velocity \(\theta\) (rad/s)
Elements of Arg6 REAL*8 array (NR2 \(\geq\) NoutInit)
1 From DLL HSS angular position (rad)
2 From DLL LSS \({\dot{\theta}}_{x}\) angular velocity (rad/s)
3 From DLL Gearbox DLL x acceleration (m/s²)7
4 From DLL Gearbox DLL y acceleration (m/s²)7
5 From DLL Gearbox DLL z acceleration (m/s²)7
6 From DLL Gearbox DLL \(\theta_x\) acceleration (rad/s²)7
7 From DLL Gearbox DLL \(\theta_y\) acceleration (rad/s²)7
8 From DLL Gearbox DLL \(\theta_z\) acceleration (rad/s²)7
9 From DLL HSS acceleration (rad/s²)
Elements of Arg7 REAL*8 array (NR3 \(\geq\) Nx+10)
1 to Nx From DLL Initial values of states if Arg3(4) = 1
Nx+1 To Nx+10 To/From DLL User variables 1 to 10 8
Nx+11 onwards To/From DLL Additional user variables

Call Type 5: State Derivatives

This call passes the current DLL state values and any required variables derived from Bladed states to the DLL, which returns the state derivatives \(\dot{\bvector{x}}\) calculated by the DLL.

Elements of Arg3 INTEGER array
1 To DLL Nx
2 To DLL Nu = Number of input variables in Arg6 = 15
3 to Nx+2 To DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 to Nx To DLL State variables
Nx+4 To Nx+13 To/From DLL User variables 1 to 10 8
Nx+14 onwards To/From DLL Additional user variables
Elements of Arg6 REAL*8 array
1 To DLL GBL node x force
2 To DLL GBL node y force
3 To DLL GBL node z force
4 To DLL GBL node \(\theta_{x}\) torque
5 To DLL GBL node \(\theta_{y}\) torque
6 To DLL GBL node \(\theta_{z}\) torque
7 To DLL Generator air-gap torque |
8 To DLL GM node x force
9 To DLL GM node y force
10 To DLL GM node z force
11 To DLL GM node \(\theta_{x}\) torque
12 To DLL GM node \(\theta_{y}\) torque
13 To DLL GM node \(\theta_{z}\) torque
14 To DLL Brake applied torque if applicable (Nm)
15 To DLL Loss torque if applicable (Nm)
Elements of Arg7 REAL*8 array (NR3 \(\geq\) Nx)
1 From DLL Gearbox DLL x acceleration (m/s²)7
2 From DLL Gearbox DLL y acceleration (m/s²)7
3 From DLL Gearbox DLL z acceleration (m/s²)7
4 From DLL Gearbox DLL \(\theta_x\) acceleration (rad/s²)7
5 From DLL Gearbox DLL \(\theta_y\) acceleration (rad/s²)7
6 From DLL Gearbox DLL \(\theta_z\) acceleration (rad/s²)7
7 From DLL HSS acceleration (rad/s²)
8 to Nx+7 From DLL State derivatives

Call Type 6: Variables Required

This call passes the current DLL state values and any required variables derived from Bladed states to the DLL, which returns the values of variables \(\bvector{y} (\bvector{y} = \bmatrix{C} \bvector{x} + \bmatrix{D} \bvector{u}_{in})\) that are required by Bladed.

Elements of Arg3 INTEGER array (NI \(\geq\) Nx+3)
1 To DLL Nx
2 To DLL Number of DLL input variables in Arg6 = 2
3 To DLL Number of DLL output variables in Arg7 = 2
4 to Nx+3 To DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 to Nx To DLL State variables
Nx+4 To Nx+13 To/From DLL User variables 1 to 10 8
Nx+14 onwards To/From DLL Additional user variables
Elements of Arg6 REAL*8 array (NR2 \(\geq\) Nin)
1 To DLL Brake applied torque if applicable (Nm)
2 To DLL Loss torque if applicable (Nm)
Elements of Arg7 REAL*8 array (NR3 \(\geq\) Ny)
1 From DLL High-speed (input) shaft angular position (rad)
2 From DLL High-speed (output) shaft angular velocity (rad/s)

Call Type 7: Output Variables

This call passes the current DLL state values and any required variables derived from Bladed states to the DLL, which returns the values of the output variables \(\bvector{y}_{out}\) that will be presented in the simulation time-history output.

Elements of Arg3 INTEGER array (NI \(\geq\) Nx+3)
1 To DLL Nx
2 To DLL Number of DLL input variables in Arg6 = 15
3 To DLL Nout
4 to Nx+3 To DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 to Nx To DLL State variables
Nx+4 To Nx+13 To/From DLL User variables 1 to 10 8
Nx+14 onwards To/From DLL Additional user variables
Elements of Arg6 REAL*8 array
1 To DLL GBL node x force
2 To DLL GBL node y force
3 To DLL GBL node z force
4 To DLL GBL node \(\theta_{x}\) torque
5 To DLL GBL node \(\theta_{y}\) torque
6 To DLL GBL node \(\theta_{z}\) torque
7 To DLL Generator air-gap torque |
8 To DLL GM node x force
9 To DLL GM node y force
10 To DLL GM node z force
11 To DLL GM node \(\theta_{x}\) torque
12 To DLL GM node \(\theta_{y}\) torque
13 To DLL GM node \(\theta_{z}\) torque
14 To DLL Brake applied torque if applicable (Nm)
15 To DLL Loss torque if applicable (Nm)
Elements of Arg7 REAL*8 array (NR3 \(\geq\) Nout)
1 to Nout From DLL Output variables

Call Type 8: Discontinuity Check

This call asks the DLL whether a discontinuity has been passed. If so, the DLL has the option of specifying a particular step reduction. These calls may be ignored by the DLL if it does not model any discontinuities.

This call asks the DLL whether a discontinuity has been passed. If so, the DLL has the option of requesting a time step reduction or a step back to a particular suggested time. Bladed will not step back to a time prior to the most recent completed time step. A suggested time must be between the end of the most recent completed time step and the current simulation time. This call may be ignored if the DLL does not model any discontinuities.

Elements of Arg3 INTEGER array (NI \(\geq\) Nx+4)
1 To DLL Nx
2 To DLL Number of DLL input variables in Arg6 = 15
3 To DLL 0 OK <0 request step back -2 reuest step back to suggested time in Arg7(1)
4 to Nx+3 To DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 to Nx To DLL State variables
Nx+4 To Nx+13 To/From DLL User variables 1 to 10 8
Nx+14 onwards To/From DLL Additional user variables
Elements of Arg6 REAL*8 array
1 To DLL GBL node x force
2 To DLL GBL node y force
3 To DLL GBL node z force
4 To DLL GBL node \(\theta_{x}\) torque
5 To DLL GBL node \(\theta_{y}\) torque
6 To DLL GBL node \(\theta_{z}\) torque
7 To DLL Generator air-gap torque |
8 To DLL GM node x force
9 To DLL GM node y force
10 To DLL GM node z force
11 To DLL GM node \(\theta_{x}\) torque
12 To DLL GM node \(\theta_{y}\) torque
13 To DLL GM node \(\theta_{z}\) torque
14 To DLL Brake applied torque if applicable (Nm)
15 To DLL Loss torque if applicable (Nm)
Elements of Arg7 REAL*8 array (NR3 \(\geq\) 1)
1 From DLL Suggested time to step back to if Arg3(3) = -2

Call Type 9: Completed Step

This call tells the DLL that the time step is complete, so that a discontinuous change to the dynamics can be implemented if required. These calls may be ignored by the DLL if it does not model any discontinuities.

Elements of Arg3 INTEGER array (NI \(\geq\) Nx+3)
1 To DLL Nx
2 To DLL Number of DLL input variables in Arg6 = 15
3 to Nx+2 To DLL 0 = State disabled; 1 = State enabled
Elements of Arg5 REAL*8 array
1 To DLL GM node orientation - rotation vector x component5
2 To DLL GM node orientation - rotation vector y component5
3 To DLL GM node orientation - rotation vector x component5
4 to Nx To DLL State variables
Nx+4 To Nx+13 To/From DLL User variables 1 to 10 8
Nx+14 onwards To/From DLL Additional user variables
Elements of Arg6 REAL*8 array
1 To DLL GBL node x force
2 To DLL GBL node y force
3 To DLL GBL node z force
4 To DLL GBL node \(\theta_{x}\) torque
5 To DLL GBL node \(\theta_{y}\) torque
6 To DLL GBL node \(\theta_{z}\) torque
7 To DLL Generator air-gap torque |
8 To DLL GM node x force
9 To DLL GM node y force
10 To DLL GM node z force
11 To DLL GM node \(\theta_{x}\) torque
12 To DLL GM node \(\theta_{y}\) torque
13 To DLL GM node \(\theta_{z}\) torque
14 To DLL Brake applied torque if applicable (Nm)
15 To DLL Loss torque if applicable (Nm)

Last updated 30-08-2024


  1. Double precision floating point number

  2. Declared as INTEGER*1 in FORTRAN

  3. This is a nominal ratio only, and is used, for example, to convert losses defined with respect to the low-speed shaft if they are actually applied at the high-speed shaft brake position. The actual overall ratio may be time-varying.

  4. Units are defined using letter permutations.

  5. Orientation of the gearbox mounting GM node in the global reference frame, specified by a rotation relative to the global x axis. This is defined by a rotation vector whose direction defines an axis, in the global reference frame, and whose magnitude gives the angle of rotation about this axis.

  6. May be used by the DLL if the Bladed shaft brake position is within the scope of the DLL; the applied brake torque is calculated (as a positive number) by Bladed but the DLL may substitute a different brake model; similarly with the loss torque, which is calculated with reference to the brake position. [^LSSTrq] Normally recalculated by the DLL; however in certain situations this cannot be done, in which case the value from Bladed can be used. This might be the case if the gearbox rotation is initially stopped by brake friction for example.

  7. The gearbox DLL accelerations are in the proximal reference frame of the Gearbox DLL component, which is aligned with the GM node.

  8. May be used to share information between user-defined DLLs for different turbine components.