Software Couplings

<< Click to Display Table of Contents >>

Navigation:  Flexcom > Theory > Model Building > Wind Turbine Modelling > Software Architecture >

Software Couplings

Previous pageNext page

Current Version

Flexcom 2026.1.1 (May 2026) is coupled with OpenFAST V4.1.2 (August 2025).

rotor NACELLE ASSEMBLY (RNA)

There are two options for modelling the rotor blades in Flexcom, either rigid or flexible. Refer to Rotor Blade Model for further details.

Coupling between Flexcom and AeroDyn

The *AERODYN DRIVER command provides the key link between Flexcom and AeroDyn. Here the user indicates to Flexcom some fundamental pieces of information, including:

The location (node number/label) in the finite element model which corresponds to the hub location in the aerodynamic model.

The portion (set of elements) of the finite element model which represents the tower.

At the beginning of a dynamic simulation, Flexcom passes all information pertaining to the blades and tower to AeroDyn. AeroDyn then computes the aerodynamic loads using blade element momentum theory. The total loads on the rotating blades are passed back to the Flexcom solver where they are added to the global force vector on the right hand side of the equations of motion. Similarly, wind loads on each tower node in the AeroDyn model are passed to the corresponding structural node in the Flexcom solver, and the global force vector is augmented accordingly.

Once all the constituent terms have been assembled, Flexcom solves the Finite Element Equations of Motion, and the global solution vector (predominately consisting of displacement terms) is populated. The updated locations for the hub/blade and tower nodes are then passed back to AeroDyn, and the aerodynamic computations are performed again, before the updated wind loads and passed back to the structural model. This solution progresses in an iterative manner until Solution Convergence has been achieved in the structural solver. The solution time is then advanced by one Fixed Time Step and the whole process recommences. The iterative nature of this solution scheme ensures that full coupling between the structural and aerodynamic models is achieved.

In terms of more specific details regarding the software coupling, Flexcom populates the following entries in AeroDyn:

Tower

AD%u(1)%TowerMotion%TranslationDisp

AD%u(1)%TowerMotion%Orientation

AD%u(1)%TowerMotion%TranslationVel

Hub

AD%u(1)%HubMotion%TranslationDisp

AD%u(1)%HubMotion%Orientation

AD%u(1)%HubMotion%RotationVel

Driver

DvrData%Cases(iCase)%RotSpeed

Blade

AD%u(1)%BladeRootMotion(k)%Orientation

AD%u(1)%BladeMotion(k)%Orientation

AD%u(1)%BladeMotion(k)%TranslationDisp

AD%u(1)%BladeMotion(k)%TranslationVel

AD%u(1)%BladeMotion(k)%RotationVel

The *PRINT keyword allows you to inspect the OpenFAST DCMs (direction cosine matrices), OpenFAST Displacement Vectors, OpenFAST Rotational Velocity Vectors and the OpenFAST Axis Systems which Flexcom creates at each timestep. Although of specialised interest, it provides greater transparency regarding the internal workings of the software.

Coupling between Flexcom and InflowWind

In addition to a coupling with AeroDyn, Flexcom also interfaces to the OpenFAST module InflowWind, via the *INFLOWWIND keyword, so dynamic and turbulent wind loading can be specified. InflowWind processes wind inflow data and supports several wind file formats including uniform, binary TurbSim full-field, binary Bladed-style full-field and HAWC formatted binary full-field wind files. It also has its own internal calculated steady wind and supports arbitrary wind directions. The turbulent wind field definition is typically generated in advance using TurbSim - refer to TurbSim Overview for further information.

At each timestep, InflowWind is given the blade and tower nodal locations and then calculates the undisturbed wind-inflow velocities at these positions. These are then used by AeroDyn to compute the aerodynamic loads at the relevant locations in the Flexcom model. Refer to InflowWind Overview for further information on this module.

Coupling between Flexcom and ServoDyn

The *SERVODYN keyword provides a link between Flexcom and the OpenFAST module ServoDyn. ServoDyn provides an interface between a user generated control dynamic link library (DLL) and solution variables provided by AeroDyn and Flexcom.

Flexcom Wind implements variable rotor speed control by allowing the user to modify generator torque. The turbine speed is varied by changing the generator or control torque via the DLL which is linked to Flexcom. Generator torque is computed at each iteration and turbine speed is calculated based on the relationship between angular acceleration and net torque:

where = rotor speed, = Aerodynamic torque, = Generator torque and = Rotor Inertia.

The rotor speed is then updated at each time step, typically to maximise energy capture.

When operating above the rated wind speed Flexcom provides blade pitch control, so as to shed additional power. Blade pitch is updated at each time step in the same manner as torque control.

Yaw control is also provided via the control DLL, which controls the twist applied to the yaw bearing element in the Flexcom model.

In terms of more specific details regarding the software coupling, Flexcom populates the following entries in ServoDyn:

u_SrvD%BlPitch(1)        !> * Record  4: Blade 1 pitch angle (rad) [SrvD input]

u_SrvD%RotPwr        !> * Record 14: Measured shaft power (W) [SrvD input]

u_SrvD%HSS_Spd        !> * Record 20: Measured generator speed (rad/s) [SrvD input]

u_SrvD%RotSpeed        !> * Record 21: Measured rotor speed (rad/s) [SrvD input]

u_SrvD%YawErr        !> * Record 24: Measured yaw error (rad) [SrvD input]

u_SrvD%HorWindV        !> * Record 27: Hub wind speed (m/s) [SrvD input]

u_SrvD%RootMyc(1)        !> * Record 30: Blade 1 root out-of-plane bending moment (Nm) [SrvD input]

u_SrvD%RootMyc(2)        !> * Record 31: Blade 2 root out-of-plane bending moment (Nm) [SrvD input]

u_SrvD%RootMyc(3)        !> * Record 32: Blade 3 root out-of-plane bending moment (Nm) [SrvD input]

u_SrvD%BlPitch(2)        !> * Record 33: Blade 2 pitch angle (rad) [SrvD input]

u_SrvD%BlPitch(3)        !> * Record 34: Blade 3 pitch angle (rad) [SrvD input]

u_SrvD%YawBrTAxp        !> * Record 53: Tower top fore-aft     acceleration (m/s^2) [SrvD input]

u_SrvD%YawBrTAyp        !> * Record 54: Tower top side-to-side acceleration (m/s^2) [SrvD input]

u_SrvD%LSSTipPxa        !> * Record 60: Rotor azimuth angle (rad) [SrvD input]

u_SrvD%RootMxc(1)        !> * Record 69: Blade 1 root in-plane bending moment (Nm) [SrvD input]

u_SrvD%RootMxc(2)        !> * Record 70: Blade 2 root in-plane bending moment (Nm) [SrvD input]

u_SrvD%RootMxc(3)        !> * Record 71: Blade 3 root in-plane bending moment (Nm) [SrvD input]

u_SrvD%LSSTipMya        !> * Record 73: Rotating hub My (GL co-ords) (Nm) [SrvD input]

u_SrvD%LSSTipMza        !> * Record 74: Rotating hub Mz (GL co-ords) (Nm) [SrvD input]

u_SrvD%LSSTipMys        !> * Record 75: Fixed    hub My (GL co-ords) (Nm) [SrvD input]

u_SrvD%LSSTipMzs        !> * Record 76: Fixed    hub Mz (GL co-ords) (Nm) [SrvD input]

u_SrvD%YawBrMyn        !> * Record 77: Yaw bearing  My (GL co-ords) (Nm) [SrvD input]

u_SrvD%YawBrMzn        !> * Record 78: Yaw bearing  Mz (GL co-ords) (Nm) [SrvD input]

u_SrvD%NcIMURAxs        !> * Record 82: Nacelle roll acceleration (rad/s^2) [SrvD input]

u_SrvD%NcIMURAys        !> * Record 83: Nacelle nodding acceleration (rad/s^2) [SrvD input]

u_SrvD%NcIMURAzs        !> * Record 84: Nacelle yaw acceleration (rad/s^2) [SrvD input]

u_SrvD%LSSTipMxa        !> * Record 109: Shaft torque (=hub Mx for clockwise rotor) (Nm) [SrvD input]

u_SrvD%LSShftFxa        !> * Record 110: Thrust - Rotating low-speed shaft force x (GL co-ords) (N) [SrvD input]

u_SrvD%LSShftFys        !> * Record 111: Nonrotating low-speed shaft force y (GL co-ords) (N) [SrvD input]

u_SrvD%LSShftFzs        !> * Record 112: Nonrotating low-speed shaft force z (GL co-ords) (N) [SrvD input]