Skip to main content
CRAFTS

CRAFTS

Control-oriented, Reconfigurable and Acausal Flexible Technologies Simulator (CRAFTS) Library

Information

The CRAFTS (Control-oriented, Reconfigurable and Acausal Flexible Technologies Simulator) Library is a Modelica package designed for the modeling, control, and simulation of floating offshore wind turbines (FOWTs).

CRAFTS is developed by the Hybrid Sustainable Energy Systems (HySES) Laboratory at the University of Central Florida's College of Engineering and Computer Science: https://mae.ucf.edu/TDas/

CRAFTS is developed with funding from the ATLANTIS Project under the United States Department of Energy's ARPA-E.

This library allows for the creation, modification, and execution of new FOWT designs and validation tests by providing preset simulations, wind turbine template models, subsystems and components of FOWTs, and additional resources such as functions or data records.


Getting started

See the CRAFTS User's Guide for information on the library, its contents, and how to utilize it.

See the CRAFTS website for more.


Authors

  • Dr. Tuhin Das (2019 - Present)
    Lab PI, beta testing and feedback, advising, and mentorship.

  • Dr. Tri Ngo (2020 - 2025)
    Beta testing and feedback, advising, and mentorship.

  • Mohammad Odeh (2019 - 2024)
    Initial developer of model framework, aerodynamic modules, structural modules, verification and validation, and QFT control design.

  • Kazi Mohsin (2020 - Present)
    Beta testing and feedback, Controller design, control validation and verification.

  • Doyal Sarker (2021 - Present)
    Main developer of hydrodynamics. Modeling of FloatingPlatform and Mooring. Control design for active TMD and mooring actuation.

  • Tajnuba Hasan (2021 - 2023)
    Developer of hydrodynamics. Modeling of Mooring and OC3 spar buoy model.

  • Dung Tran (2023 - Present)
    Main developer of FOWT aerodynamics and cross-platform compatibility with ROSCO, HydroDyn, and AeroDyn. Designer of wind farm controls.

  • Saad Rahman (2023 - Present)
    Main developer of Tower, Foundations, and soil structure interactions. Contributions to modeling of FloatingPlatform.

  • Md. Rafid-Ul Haque Sakif (2023 - Present)
    Developer of hydrodynamics and frequency dependence blocks.

  • Nathan Singhal (2024 - Present)
    Developer of flexible rotor blades.

  • Samuel Pabon (2024 - Present)
    Developer for library packaging and software testing. Graphic design and marketing.

  • Bao Nguyen (2025 - Present)
    Software engineer for Data Generation Tool, website development, licensing and documentation, project management infrastructure, and quality assurance.

  • Jhon Tabio (2025 - Present)
    Software engineer for regression testing program, website development, software testing, quality assurance, and version control and security infrastructure.

Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

Package Content

Name Description
CRAFTS.UsersGuide UsersGuide User's Guide
CRAFTS.Experiments Experiments Ready-for-simulation examples
CRAFTS.Assembly Assembly Configured wind turbine system models
CRAFTS.Rotor Rotor Library of hub and blades
CRAFTS.Nacelle Nacelle Library of nacelle body and inner components
CRAFTS.Tower Tower Library of turbine tower models
CRAFTS.Controller Controller Library of FOWT controllers
CRAFTS.Environment Environment Library of basic enviromental conditions with wind and wave analysis
CRAFTS.Common Common Classes that are reused throughout CRAFTS
CRAFTS.Icons Icons Package of reusable class icons

CRAFTS.UsersGuide CRAFTS.UsersGuide

The User's Guide consists of the topics listed below, which offer a broad introduction to the CRAFTS library. For specifics, see the documentation within the relevant classes in CRAFTS.


Start Here

What is CRAFTS used for? : The purpose and use cases of CRAFTS.

Overview of CRAFTS: A description of library layout and important features.

Conventions: A list of conventions used for units, coordinate systems, naming, and more.


Miscellaneous

Help: External resources for additional support.

Contact Info: Contact information of CRAFTS developers and library officers.

Release Notes: Version history of CRAFTS.

Extends from CRAFTS.Icons.Information (Icon for general information packages).

Package Content

Name Description
CRAFTS.UsersGuide.Purpose Purpose What is the CRAFTS Library used for?
CRAFTS.UsersGuide.Overview Overview Overview of Package Structure
CRAFTS.UsersGuide.Conventions Conventions Conventions
CRAFTS.UsersGuide.Help Help Help
CRAFTS.UsersGuide.Contact Contact Contact Info
CRAFTS.UsersGuide.ReleaseNotes ReleaseNotes Release Notes

CRAFTS.UsersGuide.Purpose CRAFTS.UsersGuide.Purpose

The Control-oriented, Reconfigurable and Acausal Flexible Technologies Simulator (CRAFTS) library provides tools for control co-design via modeling and simulation of floating offshore wind turbines (FOWTs). CRAFTS offers a flexible design and simulation environment where wind turbine researchers and developers can simulate various built-in wind turbine configurations or build their own wind turbine configurations using existing or imported models. The models are sufficiently parameterized to allow for design iterations. The plug-and-play feature of CRAFTS, which utilizes the acausal modeling approach of Modelica, allows the user to drag and drop component models and visualize physical connections between components.

For demonstrations and additional information on the tools availlable in CRAFTS, see the CRAFTS channel on YouTube. Some of the features are highlighted below:

FOCAL Campaign 1 load case 1.1

Prebuilt Validation Tests

As part of CRAFTS's participation in research efforts such as the FOCAL Campaigns, ready-made wind turbine models are available. See the Experiments package for various models with instructions for use, documented results, and fully configured data records.

IEA 15MW reference turbine [1]

Reference Wind Turbine Models

See the Assembly package for premade models of reference wind turbines. These reusable models can be dragged into the diagram layer to begin working without having to manually build the entire turbine.

Rotor and nacelle subsystems

Wind Turbine Components

CRAFTS contains models of wind turbine components that can be connected and configured to fully customize new wind turbine models. Examples include the Rotor, Tower, or Controller.

FMU co-simulation block in Simulink

Cross-Platform Compatibility

Dymola's cross-platform support includes features like FMI compatibility and interfacing with external C code. FMU translation allows CRAFTS models to be exported to platforms like MATLAB/Simulink, while FMU import allows CRAFTS models to connect to external models. By linking to DLLs, CRAFTS functions have the flexibility to run C code or even access other external code via C bindings.

Data Generation Tool

Parameterization

Models in CRAFTS are configured using data records populated from .txt and .mat files, giving flexible control over all parameters. The Data Generation Tool can be used to quickly and easily produce files and store input data for later use.

[1] Gaertner, Evan, Jennifer Rinker, Latha Sethuraman, Frederik Zahle, Benjamin Anderson, Garrett Barter, Nikhar Abbas, Fanzhong Meng, Pietro Bortolotti, Witold Skrzypinski, George Scott, Roland Feil, Henrik Bredmose, Katherine Dykes, Matt Shields, Christopher Allen, and Anthony Viselli. 2020. Definition of the IEA 15-Megawatt Offshore Reference Wind. Golden, CO: National Renewable Energy Laboratory. NREL/TP-5000-75698.
https://docs.nlr.gov/docs/fy20osti/75698.pdf

Extends from CRAFTS.Icons.Information (Icon for general information packages).

CRAFTS.UsersGuide.Overview CRAFTS.UsersGuide.Overview

The package layout of the CRAFTS Library is based on v2.0.0 of the WindIO ontology.


Top Level

At the top level, the library contains Experiments, Assembly, subsystems (Rotor, Nacelle, Tower, Controller, and Environment), Common, and Icons.

  1. Experiments contains models to run prebuilt simulations.
  2. Assembly contains template models of fully assembled wind turbines.
  3. Subsystems contain models of the respective section of the FOWT (e.g. Rotor contains models of hub and blades).
    These packages also contain components and other classes that are used to form the subsystem model.
  4. Common contains general-use classes that do not belong in any individual subsystem.
  5. Icons contains classes with imagery to create class icons.


Subsystem Level

Within each subsystem are the packages Models, Components, Blocks, DataRecords, and Utilities. Utilities also contains Interfaces, Functions, and Types. If a subsystem has no need for one of these packages, it will be omitted (e.g. the Nacelle package has no Blocks).

  1. Models contains fully built subsystem models, such as an entire rotor or tower. Since models tend to be complex, they usually include data records to populate many parameters at once.
  2. Components contains models that form building blocks of the subsystem. As lower-level models, components tend to be less complex and may not include data records. In other words, their parameters should be entered manually.
  3. Blocks are another type of subsystem building block, similar to components. In contrast to the model class in Modelica, the block class is causal.
  4. DataRecords are records that import variable values from data files and populate the parameters of the overall model or its contents.
  5. Utilities contains additional classes that are not intended to be interacted with graphically (they generally cannot be dragged and dropped into the Diagram Layer). These classes are reserved for internal development or advanced users.
  6. Interfaces contains partial models and connectors, which define the I/O interfaces of a model. Partial models should be extended to create higher level models or components.
  7. Functions contains Modelica functions that support the given subsystem models.
  8. Types contains class types used to define physical quantities, units, or drop-down menus to control selection options.


Navigation

The Library's hierarchical structure allows users to assemble FOWT models in a rapid and modular manner, facilitating iterative design. Contents can be classified by varying degrees of configurability:

  1. Ready-to-simulate models are prebuilt and entirely configured for simulation. These models consist of a fully assembled system with connected I/O and populated parameters. They can be found in the Experiments package and serve as examples for user reference as well as validation models for various load cases. To use a ready-to-simulate model, simply open the model and run a simulation.
    Icons with teal outlines indicate ready-to-simulate models.
  2. Ready-to-build models are partially assembled models that are used to built a larger overall system. While these models' internal parameters and connections are already configured, they require external connections or parameters to be specified before simulation. Wind turbine Assemblies or subsystems like a Rotor model are examples of ready-to-build models. To use these models, drag the desired class into the Diagram Layer before setting its connections and parameters.
    Icons with dark blue outlines indicate ready-to-build models.
  3. Component class describes various classes that form the lowest-level parts of models. These include component models, blocks, or data records. To use a component class, drag it into the Diagram Layer and set its connections before filling its parameters — many of which may be read from a data file using a data record.
    Icons with light blue outlines indicate component classes.
  4. Utilities are additional classes that do not directly form higher level models. These classes usually interact with the Modelica text of a model to control variable properties, implement organizational logic, or extend to form a new model.
    Icons with red outlines indicate utilities.

Extends from CRAFTS.Icons.Information (Icon for general information packages).

CRAFTS.UsersGuide.Conventions CRAFTS.UsersGuide.Conventions

Common conventions in CRAFTS are presented here, for reference.

Nomenclature

Abbreviation

Full Name

Notes

BEM

Blade Element Momentum (Theory)

A method for calculating aerodynamic loading on rotor blades. It combines Blade Element Theory and Momentum Theory.

BRBM

Blade Root Bending Moment

The bending moment applied to the root of a rotor blade, which appears in the edge-wise and flap-wise directions. BRBMs are important measures of blade loading, with applications such as blade fatigue.

Cp

Coefficient of Power

Nondimensional value characterizing power generation. See Calculate_Cp.

Cq

Coefficient of Torque

Nondimensional value characterizing aerodynamic torque. See Calculate_Cq.

CRAFTS

Control-oriented, Reconfigurable and Acausal Flexible Technologies Simulator

The name of this library, used for modeling and simulation in offshore control co-design.

Ct

Coefficient of Thrust

Nondimensional value characterizing aerodynamic thrust. See Calculate_Ct.

DOF

Degree of Freedom

FC

FOCAL Campaign

See "FOCAL" for notes on the FOCAL project. CRAFTS participation includes Campaigns 1, 2, and 4.

FMU/FMI

Functional Mock-up Unit/Interface

A standard for the structure and formatting of dynamic models. Utilized for model exchange and co-simulation [8] [9].

FOCAL

Floating Offshore-wind Controls Advanced Laboratory

An ARPA-E ATLANTIS project for the development and validation of numerical models for offshore wind turbines and their controllers. FOCAL was organized into campaigns, each of which compared participants' results with experimental data [3].

FOWT

Floating Offshore Wind Turbine

IEA

International Energy Agency

The IEA Wind Technology Collaboration Programme [1] administers various research projects and publishes reference wind turbine models [2] that are common in CRAFTS.

LC

Load Case

AKA test case: a set of specified testing conditions for simulation and validation.

MBE

Multi-Body Element

A component used to model the sub-elements of a discretized body. Enabling various degrees of freedom in the MBE allows body flexibility in bending and/or torsion.

OC3

Offshore Code Comparison Collaboration

A research project under IEA Wind Task 23 that emphasized validation of offshore support structure modeling [4].

OC6

Offshore Code Comparison, Collaboration, Continued, with Correlation and unCertainty

A research project under IEA Wind Task 30 that spanned validation of hydrodynamics, soil/structure interaction, and aerodynamics modeling [5], [6].

OC7

Offshore Code Comparison Collaboration 7 Project

A research project under IEA Wind Task 56 that emphasizes hydrodynamic viscous loading, flexibility of offshore supports, and behavior of floating wind farms [7].

ROSCO

Reference Open-Source Controller

A framework from NREL/NLR for the design of wind turbine controllers [10] [11].

RWT

Reference Wind Turbine

TFA

Tower Fore-Aft

The direction of tower bending that aligns with the direction of the wind.

TMD

Tuned Mass Damper

A mechanism that uses tuned mass and spring constants to absorb vibrations.

TSR

Tip Speed Ratio

Ratio between velocity of blade tip and incoming wind speed. Represented algebraically by lambda.

TSS

Tower Side-to-Side

The direction of tower bending that is perpendicular to the direction of the wind.


Coordinate Systems

The global reference frame is typically defined at ground or still water level, with the x-axis horizontal along the nominal wind direction and the z-axis vertical.

The tower base frame has its coordinates aligned with the global frame, although it may be translated from the global origin (e.g., if the tower is supported by a foundation). The tower top frame is translated vertically relative to the base frame for rigid-body towers. For flexible-body towers, the top frame may be rotated by bending in the fore-aft or side-side directions as well as torsion.

Tower frames

The nacelle coordinate system includes the tower top frame (indicated by subscript T), drive shaft frame (subscript S), and rotor apex frame (subscript R). The drive shaft frame is translated vertically and rotated about the y-axis relative to the tower top frame. For models that include a yaw degree of freedom, the shaft frame is also rotated about the tower top z-axis according to the yaw angle. The rotor apex frame is translated along the x-axis (which is pitched, and potentially yawed) relative to the shaft frame.

Nacelle frames

The rotor coordinate system is defined about the rotor apex frame, which is pitched by the nacelle tilt (γ). The azimuth angle, θ, is positive clockwise from the z-axis when looking downwind at the rotating frame. The rotor apex frame rotates with the azimuth angle, so the hub and blades are rotated by θ as the rotor spins.

Rotor frame

Each blade root frame is translated along the z-axis from the rotor apex to account for the hub radius, then subsequently rotated to account for the starting azimuth angle (i.e., 0°, 120°, and 240° for a 3-blade rotor). Each blade pitches about the z-axis at its root frame. The blade pitch is defined such that, for θ = 0, a 0-degree pitch angle aligns the root frame's x-axis with the nominal wind direction (i.e., the blade root frame is aligned with the rotor apex frame). The blade span extends along the z-axis. For rigid-body blade models, radial stations of the blade are translated along the z-axis relative to the blade root, with the local geometry described by the chord length, local twist angle, and airfoil type. For flexible-body blade models, elements along the blade may also be rotated according to edgewise or flapwise bending degrees of freedom, in addition to torsion.

Blade root frame


See Also

[1] IEA Wind TCP

[2] IEA Wind Systems GitHub: reference wind turbines

[3] FOCAL

[4] OC3

[5] OC6: Task 30 Description

[6] OC6: Project Datasets

[7] OC7

[8] FMI website

[9] GMI GitHub

[10] ROSCO documentation

[11] ROSCO GitHub

Extends from CRAFTS.Icons.Information (Icon for general information packages).

CRAFTS.UsersGuide.Help CRAFTS.UsersGuide.Help

Have any unanswered questions or concerns?

See the CRAFTS website for more resources, like our tutorial videos or "Contact Us" form.

Extends from CRAFTS.Icons.Information (Icon for general information packages).

CRAFTS.UsersGuide.Contact CRAFTS.UsersGuide.Contact

For additional support, contact the CRAFTS development team: crafts@ucf.edu

CRAFTS.UsersGuide.ReleaseNotes CRAFTS.UsersGuide.ReleaseNotes

Information on the history of CRAFTS releases is provided in the following release notes.

CRAFTS Version

Release Date

Open Source v1.0.0

September 1, 2026

Extends from CRAFTS.Icons.ReleaseNotes (Icon for release notes).

Package Content

Name Description
CRAFTS.UsersGuide.ReleaseNotes.v1_0_0 v1_0_0 Open source v1.0.0 (September 1, 2026)

CRAFTS.UsersGuide.ReleaseNotes.v1_0_0 CRAFTS.UsersGuide.ReleaseNotes.v1_0_0

The initial open-source release of CRAFTS includes:

  • Experiment models from load case 1.x of FOCAL Campaign 1
  • Assembly model of the fixed-base IEA 15-MW reference wind turbine
  • Rigid-blade rotor model
  • Nacelle model with geared or direct-drive drivetrains
  • Rigid tower model
  • Nonlinear wind turbine controller
  • Basic wind profile selections in Environment
  • Calculation blocks for basic math and coefficients of power, thrust, and torque

Extends from CRAFTS.Icons.ReleaseNotes (Icon for release notes).

CRAFTS.Experiments

Ready-for-simulation examples

Information

Different experiments are set up for various wind turbine configurations in CRAFTS for verification and validation (V&V). The V&V process will compare CRAFTS results against OpenFAST, OrcaFlex, and/or experimental data. The validation plan focuses on a series of load cases designed to evaluate the capability of CRAFTS to accurately capture aero-hydro-structural dynamics and load responses. Specifically:

1. Aerodynamics validation will use FOCAL campaign 1 load cases (e.g., LC 1.1–1.4, LC 2.1–2.5, LC 3.1–3.6), validated against OpenFAST, and/or FOCAL experimental results.

2. Hydrodynamics validation will use FOCAL campaigns 2 and 4, as well as OC3 and OC7 Phase I load cases (e.g., LC 1.0–1.3, LC 2.1–2.3, LC 3.1–3.9), validated against OrcaFlex, OpenFAST, and/or FOCAL experimental results.

3. Integrated system validation will focus on structural vibrations and power production using IEC DLC1.2 load cases. Multiple wind conditions will be considered, including rated, above-rated, and high wind speeds, as well as load cases with pitch offsets (validated against OpenFAST). For cases requiring closed-loop simulations, either an internally developed controller or the ROSCO controller will be implemented in both models for consistency.

A summary table of the CRAFTS experiments is provided below.

Module

Experiments

Software

Aerodynamics

FOCAL Campaign 1

CRAFTS, OpenFAST

Hydrodynamics

FOCAL Campaign 2, OC3, OC7 Phase 1

CRAFTS, OpenFAST, OrcaFlex

Structural dynamics

OC6 Phase 2, OC7 Phase 2

CRAFTS, OpenFAST

Control

FOCAL Campaign 1, 4

CRAFTS, ROSCO

Overall system

FOCAL Campaign 4

CRAFTS, OpenFAST, OrcaFlex

Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

Package Content

Name Description
CRAFTS.Experiments.FOCALCampaign1 FOCALCampaign1 Components and load cases for FOCAL Campaign 1

CRAFTS.Experiments.FOCALCampaign1

Components and load cases for FOCAL Campaign 1

Information

To validate CRAFTS, multiple test cases were devised to compare the CRAFTS model performance against the thoroughly validated and industry standard platform, OpenFAST, as well as experiment data from Campaign 1 of the Floating Offshore-wind Controls Advanced Laboratory Experimental Program (FOCAL) [Kimball 2022]. Campaign 1 is designed to generate a dataset for validating the aerodynamic performance of a scaled model of the IEA Wind 15 MW Reference Wind Turbine [Gaertner 2020] mounted on a rigid, fixed-base tower.

  • TC (Test Case) 1.x focuses on the turbine's response with respect to rotor speed maneuvers.
  • TC 2.x focuses on the turbine's response with respect to pitching maneuvers. TC 3.x focuses on turbine control through ROSCO for a variety of wind conditions. TC 1.x and TC 2.x are used to verify the characteristics of the turbine and ensure coherent aerodynamic performance of the model.
  • In TC 3.x, the turbine model is tested under closed-loop scenarios by incorporating active control.

Modeling Approach

The aero-dynamic model used the blade element momentum theory with static polars of airfoil data. The control model simulated the controller algorithms, sensors, and actuators of the blade pitch and generator torque of the wind turbine system. The structural dynamics were modeled using a 3D multi-body dynamics approach and modal analysis theory. Coupling between all models was achieved through plug-and-play CRAFTS features, enabling co-simulation with other numerical platforms, such as the ROSCO toolbox in MATLAB or OpenFAST via a functional mock-up interface (FMI). Vice versa, an FMI kit for Simulink enabled an existing Simulink model to be compiled into an FMU, and then imported into the CRAFTS platform. For more details, interested readers may consult [Odeh 2023, Mendoza 2022].

FOCAL Campaign 1 dataset: https://wdh.energy.gov/ds/focal/focal.campaign1

References

  • Gaertner, E.; Rinker, J.; Sethuraman, L.; Zahle, F.; Anderson, B.; Barter, G.E.; Abbas, N.J.; Meng, F.; Bortolotti, P.; Skrzypinski, W.; et al. IEA Wind TCP Task 37: Definition of the IEA 15-Megawatt Offshore Reference Wind Turbine; NREL/TP-5000-75698; National Renewable Energy Laboratory: Golden, CO, USA, 2020. Available online: https://www.nlr.gov/docs/fy20osti/75698.pdf (accessed on 1 March 2022)
  • Kimball, R.; Robertson, A.N.; Fowler, M.; Mendoza, N.; Wright, A.; Goupee, A.J.; Lenfest, E.; Parker, A. Results from the FOCAL Experiment Campaign 1: Turbine Control Co-Design. J. Phys. Conf. Ser. 2022, 2265, 022082. https://iopscience.iop.org/article/10.1088/1742-6596/2265/2/022082
  • Mendoza, Nicole et al., "Verification and Validation of Model-Scale Turbine Performance and Control for the IEA Wind 15 MW Reference Wind Turbine," Energies, vol. 15, no. 20, 2022, https://doi.org/10.3390/en15207649.
  • Odeh, Mohammad, Kazi Mohsin, Tri Ngo, Daniel Zalkind, Jason Jonkman, Alan Wright, Amy Robertson, and Tuhin Das. "Development of a wind turbine model and simulation platform using an acausal approach: Multiphysics modeling, validation, and control." Wind Energy 26, no. 9 (2023): 985-1011.

Extends from CRAFTS.Icons.Packages.TealPackage (Teal icon outline to indicate ready-to-simulate).

Package Content

Name Description
CRAFTS.Experiments.FOCALCampaign1.LC11 LC11 Load case 1.1 of FOCAL Campaign 1
CRAFTS.Experiments.FOCALCampaign1.LC12 LC12 Load case 1.2 of FOCAL Campaign 1
CRAFTS.Experiments.FOCALCampaign1.LC13 LC13 Load case 1.3 of FOCAL Campaign 1
CRAFTS.Experiments.FOCALCampaign1.LC14 LC14 Load case 1.4 of FOCAL Campaign 1

CRAFTS.Experiments.FOCALCampaign1.LC11 CRAFTS.Experiments.FOCALCampaign1.LC11

Load case 1.1 of FOCAL Campaign 1

Information

This model is configured for validation testing corresponding to Test Case 1.x of the FOCAL Campaign 1. It receives wind velocity and blade pitch as inputs and outputs the aerodynamic performance coefficients—power (Cp), torque (Cq), and thrust (Ct)—as well as the tip speed ratio (λ) via the CpCtCq block.

Additional clarification is needed regarding specific output definitions to ensure accurate comparisons:

  • Rotor Thrust should include only aerodynamic forces and exclude any inertial contributions.
  • Rotor Torque should account for both aerodynamic and inertial forces, as the load cell is mounted on the low-speed shaft.
  • Tower Top Forces and Moments must have any static offset values removed prior to analysis.
  • Blade Bending Moments are expected to include mass (inertial) effects.

FOCAL Campaign 1 utilizes experimental data from scale-model tests conducted at the University of Maine to validate the aerodynamic and control behavior of a fixed-base IEA 15-MW reference wind turbine. Load Case 1.X represents a scenario with constant wind speed and blade pitch, while rotor speed varies with time. The broader objective of FOCAL Campaign 1 is to support the reduction of structural loads on offshore wind turbines through advanced control strategies, particularly blade pitch control.


Modeling Approach

A World block is used to set the world frame, with gravity acting along the negative z-axis and the x-axis defined as the nominal wind direction.

The land-based IEA 15-MW is modeled with a rigid tower, rigid-bladed rotor, and direct-drive nacelle. A BodyCylinder is used to model the tower base. Data files with FOCAL Campaign 1 parameters for the land-based IEA 15-MW are used to populate the model. Note that these properties differ from the IEA 15-MW reference wind turbine (RWT).

A signal bus is used to connect to the rotor signal bus and unpack the required I/O signals (e.g., blade pitch input and rotor speed output) for connection to other components.

The wind speed and blade pitch inputs are provided in the vWind and beta blocks, respectively. These are Constant signal inputs whose values correspond to the load case definition. The blocks are declared as arrays of size 3 to account for the 3 dimensions of wind velocity and 3 blade pitch signals, one per blade.

To evaluate results across a range of tip speed ratios according to the load case definitions, the CpLambdaController is used to control the generator speed (and rotor speed, since the turbine is direct-drive). The reference rotor speed is provided via temporal values in a lookup table. The rotor speed is initialized at 2 rpm.

The CpCtCq block is used to calculate the tip speed ratio and performance coefficients.


Simulation and Post-Processing

After running the simulation, aerodynamic performance metrics can be visualized using pre-configured scripts.

The plots should appear automatically after simulation, but to generate them again:

  1. Click the "Commands" button in the top-left of the Simulation toolbar.
  2. Select "Plot CpCtCq"
  3. Plots of Cp, Ct, and Cq should appear vs time and vs tip speed ratio (λ).


See Also

For more information on FOCAL Campaign 1, refer to the following resources:

  • FOCAL Campaign 1 report: https://docs.nlr.gov/docs/fy22osti/82446.pdf
  • Performance benchmarking paper: https://www.mdpi.com/1888760

Extends from CRAFTS.Icons.Example (Icon for Example or Experiment models).

Connectors

NameDescription
signalBus 

CRAFTS.Experiments.FOCALCampaign1.LC12 CRAFTS.Experiments.FOCALCampaign1.LC12

Load case 1.2 of FOCAL Campaign 1

Information

This model is configured for validation testing corresponding to Test Case 1.x of the FOCAL Campaign 1. It receives wind velocity and blade pitch as inputs and outputs the aerodynamic performance coefficients—power (Cp), torque (Cq), and thrust (Ct)—as well as the tip speed ratio (λ) via the CpCtCq block.

Additional clarification is needed regarding specific output definitions to ensure accurate comparisons:

  • Rotor Thrust should include only aerodynamic forces and exclude any inertial contributions.
  • Rotor Torque should account for both aerodynamic and inertial forces, as the load cell is mounted on the low-speed shaft.
  • Tower Top Forces and Moments must have any static offset values removed prior to analysis.
  • Blade Bending Moments are expected to include mass (inertial) effects.

FOCAL Campaign 1 utilizes experimental data from scale-model tests conducted at the University of Maine to validate the aerodynamic and control behavior of a fixed-base IEA 15-MW reference wind turbine. Load Case 1.X represents a scenario with constant wind speed and blade pitch, while rotor speed varies with time. The broader objective of FOCAL Campaign 1 is to support the reduction of structural loads on offshore wind turbines through advanced control strategies, particularly blade pitch control.


Modeling Approach

A World block is used to set the world frame, with gravity acting along the negative z-axis and the x-axis defined as the nominal wind direction.

The land-based IEA 15-MW is modeled with a rigid tower, rigid-bladed rotor, and direct-drive nacelle. A BodyCylinder is used to model the tower base. Data files with FOCAL Campaign 1 parameters for the land-based IEA 15-MW are used to populate the model. Note that these properties differ from the IEA 15-MW reference wind turbine (RWT).

A signal bus is used to connect to the rotor signal bus and unpack the required I/O signals (e.g., blade pitch input and rotor speed output) for connection to other components.

The wind speed and blade pitch inputs are provided in the vWind and beta blocks, respectively. These are Constant signal inputs whose values correspond to the load case definition. The blocks are declared as arrays of size 3 to account for the 3 dimensions of wind velocity and 3 blade pitch signals, one per blade.

To evaluate results across a range of tip speed ratios according to the load case definitions, the CpLambdaController is used to control the generator speed (and rotor speed, since the turbine is direct-drive). The reference rotor speed is provided via temporal values in a lookup table. The rotor speed is initialized at 2 rpm.

The CpCtCq block is used to calculate the tip speed ratio and performance coefficients.


Simulation and Post-Processing

After running the simulation, aerodynamic performance metrics can be visualized using pre-configured scripts.

The plots should appear automatically after simulation, but to generate them again:

  1. Click the "Commands" button in the top-left of the Simulation toolbar.
  2. Select "Plot CpCtCq"
  3. Plots of Cp, Ct, and Cq should appear vs time and vs tip speed ratio (λ).


See Also

For more information on FOCAL Campaign 1, refer to the following resources:

  • FOCAL Campaign 1 report: https://docs.nlr.gov/docs/fy22osti/82446.pdf
  • Performance benchmarking paper: https://www.mdpi.com/1888760

Extends from CRAFTS.Icons.Example (Icon for Example or Experiment models).

Connectors

NameDescription
signalBus 

CRAFTS.Experiments.FOCALCampaign1.LC13 CRAFTS.Experiments.FOCALCampaign1.LC13

Load case 1.3 of FOCAL Campaign 1

Information

This model is configured for validation testing corresponding to Test Case 1.x of the FOCAL Campaign 1. It receives wind velocity and blade pitch as inputs and outputs the aerodynamic performance coefficients—power (Cp), torque (Cq), and thrust (Ct)—as well as the tip speed ratio (λ) via the CpCtCq block.

Additional clarification is needed regarding specific output definitions to ensure accurate comparisons:

  • Rotor Thrust should include only aerodynamic forces and exclude any inertial contributions.
  • Rotor Torque should account for both aerodynamic and inertial forces, as the load cell is mounted on the low-speed shaft.
  • Tower Top Forces and Moments must have any static offset values removed prior to analysis.
  • Blade Bending Moments are expected to include mass (inertial) effects.

FOCAL Campaign 1 utilizes experimental data from scale-model tests conducted at the University of Maine to validate the aerodynamic and control behavior of a fixed-base IEA 15-MW reference wind turbine. Load Case 1.X represents a scenario with constant wind speed and blade pitch, while rotor speed varies with time. The broader objective of FOCAL Campaign 1 is to support the reduction of structural loads on offshore wind turbines through advanced control strategies, particularly blade pitch control.


Modeling Approach

A World block is used to set the world frame, with gravity acting along the negative z-axis and the x-axis defined as the nominal wind direction.

The land-based IEA 15-MW is modeled with a rigid tower, rigid-bladed rotor, and direct-drive nacelle. A BodyCylinder is used to model the tower base. Data files with FOCAL Campaign 1 parameters for the land-based IEA 15-MW are used to populate the model. Note that these properties differ from the IEA 15-MW reference wind turbine (RWT).

A signal bus is used to connect to the rotor signal bus and unpack the required I/O signals (e.g., blade pitch input and rotor speed output) for connection to other components.

The wind speed and blade pitch inputs are provided in the vWind and beta blocks, respectively. These are Constant signal inputs whose values correspond to the load case definition. The blocks are declared as arrays of size 3 to account for the 3 dimensions of wind velocity and 3 blade pitch signals, one per blade.

To evaluate results across a range of tip speed ratios according to the load case definitions, the CpLambdaController is used to control the generator speed (and rotor speed, since the turbine is direct-drive). The reference rotor speed is provided via temporal values in a lookup table. The rotor speed is initialized at 2 rpm.

The CpCtCq block is used to calculate the tip speed ratio and performance coefficients.


Simulation and Post-Processing

After running the simulation, aerodynamic performance metrics can be visualized using pre-configured scripts.

The plots should appear automatically after simulation, but to generate them again:

  1. Click the "Commands" button in the top-left of the Simulation toolbar.
  2. Select "Plot CpCtCq"
  3. Plots of Cp, Ct, and Cq should appear vs time and vs tip speed ratio (λ).


See Also

For more information on FOCAL Campaign 1, refer to the following resources:

  • FOCAL Campaign 1 report: https://docs.nlr.gov/docs/fy22osti/82446.pdf
  • Performance benchmarking paper: https://www.mdpi.com/1888760

Extends from CRAFTS.Icons.Example (Icon for Example or Experiment models).

Connectors

NameDescription
signalBus 

CRAFTS.Experiments.FOCALCampaign1.LC14 CRAFTS.Experiments.FOCALCampaign1.LC14

Load case 1.4 of FOCAL Campaign 1

Information

This model is configured for validation testing corresponding to Test Case 1.x of the FOCAL Campaign 1. It receives wind velocity and blade pitch as inputs and outputs the aerodynamic performance coefficients—power (Cp), torque (Cq), and thrust (Ct)—as well as the tip speed ratio (λ) via the CpCtCq block.

Additional clarification is needed regarding specific output definitions to ensure accurate comparisons:

  • Rotor Thrust should include only aerodynamic forces and exclude any inertial contributions.
  • Rotor Torque should account for both aerodynamic and inertial forces, as the load cell is mounted on the low-speed shaft.
  • Tower Top Forces and Moments must have any static offset values removed prior to analysis.
  • Blade Bending Moments are expected to include mass (inertial) effects.

FOCAL Campaign 1 utilizes experimental data from scale-model tests conducted at the University of Maine to validate the aerodynamic and control behavior of a fixed-base IEA 15-MW reference wind turbine. Load Case 1.X represents a scenario with constant wind speed and blade pitch, while rotor speed varies with time. The broader objective of FOCAL Campaign 1 is to support the reduction of structural loads on offshore wind turbines through advanced control strategies, particularly blade pitch control.


Modeling Approach

A World block is used to set the world frame, with gravity acting along the negative z-axis and the x-axis defined as the nominal wind direction.

The land-based IEA 15-MW is modeled with a rigid tower, rigid-bladed rotor, and direct-drive nacelle. A BodyCylinder is used to model the tower base. Data files with FOCAL Campaign 1 parameters for the land-based IEA 15-MW are used to populate the model. Note that these properties differ from the IEA 15-MW reference wind turbine (RWT).

A signal bus is used to connect to the rotor signal bus and unpack the required I/O signals (e.g., blade pitch input and rotor speed output) for connection to other components.

The wind speed and blade pitch inputs are provided in the vWind and beta blocks, respectively. These are Constant signal inputs whose values correspond to the load case definition. The blocks are declared as arrays of size 3 to account for the 3 dimensions of wind velocity and 3 blade pitch signals, one per blade.

To evaluate results across a range of tip speed ratios according to the load case definitions, the CpLambdaController is used to control the generator speed (and rotor speed, since the turbine is direct-drive). The reference rotor speed is provided via temporal values in a lookup table. The rotor speed is initialized at 2 rpm.

The CpCtCq block is used to calculate the tip speed ratio and performance coefficients.


Simulation and Post-Processing

After running the simulation, aerodynamic performance metrics can be visualized using pre-configured scripts.

The plots should appear automatically after simulation, but to generate them again:

  1. Click the "Commands" button in the top-left of the Simulation toolbar.
  2. Select "Plot CpCtCq"
  3. Plots of Cp, Ct, and Cq should appear vs time and vs tip speed ratio (λ).


See Also

For more information on FOCAL Campaign 1, refer to the following resources:

  • FOCAL Campaign 1 report: https://docs.nlr.gov/docs/fy22osti/82446.pdf
  • Performance benchmarking paper: https://www.mdpi.com/1888760

Extends from CRAFTS.Icons.Example (Icon for Example or Experiment models).

Connectors

NameDescription
signalBus 

CRAFTS.Assembly

Configured wind turbine system models

Information

Wind turbine assemblies are prebuilt and preconfigured models of reference wind turbines (RWTs). These models provide access to standardized wind turbine systems for ease of testing and comparison of results.

Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

Package Content

Name Description
CRAFTS.Assembly.IEA IEA International Energy Agency (IEA) RWTs

CRAFTS.Assembly.IEA

International Energy Agency (IEA) RWTs

Information

The International Energy Agency (IEA) has produced a set of reference wind turbines that are widely used by engineers and researchers for computational modeling. The RWTs are developed through IEA Wind Technology Collaboration Programme (TCP) tasks, such as the IEA 15-MW Offshore Wind Turbine from Task 37. Some of the RWT definitions and files can be found at the IEA Wind Systems GitHub.

Extends from Icons.Packages.DarkBluePackage (Dark blue icon outline to indicate ready-to-build models).

Package Content

Name Description
CRAFTS.Assembly.IEA.Fixed15MW Fixed15MW Fixed-base IEA 15-MW reference wind turbine

CRAFTS.Assembly.IEA.Fixed15MW CRAFTS.Assembly.IEA.Fixed15MW

Fixed-base IEA 15-MW reference wind turbine

Information

The IEA 15-MW is a standardized and conceptual open-source model of a reference wind turbine with a 15-megawatt rated power output. There are separate definitions for the offshore and fixed-base variants of the IEA 15-MW. This model represents the fixed-base version.

The development of the IEA 15-MW was completed by IEA Wind Task 37, led by researchers at the National Laboratory of the Rockies (NLR), previously known as NREL, and the Technical University of Denmark (DTU). The University of Maine (UMaine) contributed to the floating platform model.

The IEA 15-MW was designed to provide a high-capacity RWT for the research community, reflecting modern design innovations like longer blades, direct-drive drivetrains, peak-shaving control strategies, and floating platform foundations.

Key characteristics include:

  • Rated power: 15 MW
  • IEC Wind Class: Class IB
  • Rotor Orientation: 3-bladed, upwind
  • Rotor Diameter: 240 m
  • Hub Height: 150 m
  • Cut-in, rated, and cut-out wind speeds: 3 m/s, 10.59 m/s, 25 m/s
  • Rotor speed range: 5.0 to 7.56 RPM
  • Drivetrain: Direct-drive permanent magnet synchronous generator (PMSG)
  • Foundation options: Fixed-bottom monopile and Volturn US-S semisubmersible platform


Figures

IEA 15MW Definition Document Diagram [1]


Modeling Approach

This assembly includes a rotor with 3 rigid blades, a direct-drive nacelle, and a rigid tower with 5 MBEs (corresponding to the 11 tower nodes specified in the model definition).

A signal bus is used to carry control signals to/from the assembly. The signal names are:

Inputs

  • signalBus.Beta: Vector of size 3, where each element is the blade pitch input for the corresponding blade* [rad].

Outputs:

  • signalBus.Power: Mechanical power output through the drivetrain shaft, leading to the generator [W].
  • signalBus.flapBRBM: Vector of size 3, where each element is the flapwise blade root bending moment for the corresponding blade* [N.m].
  • signalBus.edgeBRBM: Vector of size 3, where each element is the edgewise blade root bending moment for the corresponding blade* [N.m].
  • signalBus.Azimuth: Vector of size 3, where each element is the azimuth angle for the corresponding blade* [rad].
  • signalBus.Thrust: Rotor thrust [N].
  • signalBus.Torque: Rotor torque [N.m].
  • signalBus.OmegaRotor: Rotor speed [rad/s].


Implementation

Data files containing properties for the IEA 15-MW RWT assembly are already initialized in the model. To finish initialization, the required connections should be made and desired parameters should be selected.

Connections: Input signals should be connected to vWind and signalBus.Beta. Both are vectors of size 3: the elements of vWind correspond to the x, y, and z components of wind speed, while Beta corresponds to the blade numbers. The towerBase frame should also be connected.

Parameters: The initial condition for rotor speed, rotorSpeed_start, should be specified. A tower discretization with 5 MBEs is given in the default data file. To customize the tower discretization, a new data file must be generated and selected in the model, then the corresponding NumMBEs should be selected. The tower flexibility degrees of freedom can also be enabled/disabled with the parameters EnableForeAftDoF, EnableSideSideDoF, and EnableTorsionalDoF.


Limitations

This implementation of the rotor uses rigid bodies for the blade structures.


Notes

*: At an azimuth angle of 0, blades 1, 2, and 3 are defined at 0, 120, and 240 degrees in the rotating frame, respectively. See CRAFTS.Rotor.Models.Rotor for a diagram of the rotating frame.


Acknowledgements

IEA Wind Task 37: Design of the IEA 15-MW RWT and publication of definition documents and reference materials [1] [2].

National Laboratory of the Rockies (NLR), previously known as NREL: Publication of compared results from HAWC2 and OpenFAST for the IEA 15-MW RWT [3].

Orcina, Ltd.: Publication of compared results from OrcaFlex and OpenFAST [4] [5].


See Also

[1] Gaertner, Evan, Jennifer Rinker, Latha Sethuraman, Frederik Zahle, Benjamin Anderson, Garrett Barter, Nikhar Abbas, Fanzhong Meng, Pietro Bortolotti, Witold Skrzypinski, George Scott, Roland Feil, Henrik Bredmose, Katherine Dykes, Matt Shields, Christopher Allen, and Anthony Viselli. 2020. Definition of the IEA 15-Megawatt Offshore Reference Wind. Golden, CO: National Renewable Energy Laboratory. NREL/TP-5000-75698.
https://docs.nlr.gov/docs/fy20osti/75698.pdf.

[2] IEA Wind Task 37, "IEA-15-240-RWT", v1.1.18, 2026. [Source code]. Available: https://github.com/IEAWindSystems/IEA-15-240-RWT.

[3] Rinker, Jennifer, Evan Gaertner, Frederik Zahle, Witold Skrzypinski, Nikar Abbas, Henrik Bredmose, Garrett Barter, and Katherine Dykes. "Comparison of loads from HAWC2 and OpenFAST for the IEA Wind 15 MW Reference Wind Turbine", in The Science of Making Torque from Wind (TORQUE 2020). 2020. [Online]. Available: doi:10.1088/1742-6596/1618/5/052052.

[4] J. Pell, "Orcina Project 1512 Comparison of loads from OrcaFlex and OpenFast for the IEA 15 MW RWT," Orcina Ltd., Ulverston, United Kingdom, Rep. 01, Jan. 16, 2023. [Online] Available: https://www.orcina.com/wp-content/uploads/resources/validation/R15120101-OrcaFlex-15MW-RWT-Validation-Report.pdf.

[5] Orcina Ltd. "K03 15MW semi-sub FOWT." Orcina. https://www.orcina.com/wp-content/uploads/examples/k/k03/K03%2015MW%20semi-sub%20FOWT.pdf.

Parameters

NameDescription
Initialization
rotorSpeed_startInitial rotor speed [rad/s]
Aerodynamics
rhoDensity of air in [kg/m^3] [kg/m3]
noAero= true, if no aerodynamic forces/torques are desired
inductionFactor= true, compute induction factors
useCcode= true, use C code induction factor algorithm
tipLoss= true, if Prandtl's tip loss factor is desired, otherwise not computed
hubLoss= true, if Prandtl's hub loss factor is desired, otherwise not computed
towerPotential= true, compute tower's potential on wind
windProfileWind profile: (1) Uniform, (2) PL, (3) EXP
Tower
NumMBEsNumber of Multibody Beam Elements (MBEs) in the tower
EnableForeAftDoFIf false, fore-aft bending degree of freedom for all tower MBEs is disabled
EnableSideSideDoFIf false, side-side bending degree of freedom for all tower MBEs is disabled
EnableTorsionalDoFIf false, torsional degree of freedom for all tower MBEs is disabled
TowerDataFileManually select data file, otherwise arbitrary inertia properties will be used
Animation
Nacelle
lengthLength of nacelle for animation [m]
widthWidth of nacelle for animation [m]
heightHeight of nacelle for animation [m]
colorColor of nacelle

Connectors

NameDescription
towerBase 
vWind[3] 
generatorFlange 
signalBus 

CRAFTS.Rotor

Library of hub and blades

Information

This package contains components to model the mechanics of wind turbine rotor assemblies.

Note all aerodynamic components of the CRAFTS Rotor library have the ability to model the effects of wind shear, tower wake, and inflow momentum loss. These functions are respectively enabled via parameters: "windProfile"; "towerPotential"; and "inductionFactor", "hubLoss", and "tipLoss".


Authors

Hub, Rigid Blade, and Aerodynamics Models

Authored by: Mohammed Odeh

Contact me: mohammed.odeh@ucf.edu || contact@mohammedodeh.com


FOCAL Campaign 4 Models and Upodated Induction Factor Functions

Authored by: Dung Tran

Contact me: dung.tran@ucf.edu


Flexible Blade Models

Authored by: Nathan Singhal

Contact me: nathan.singhal@ucf.edu

Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

Package Content

Name Description
CRAFTS.Rotor.Models Models  
CRAFTS.Rotor.Components Components  
CRAFTS.Rotor.Blocks Blocks Blocks used in Rotor models
CRAFTS.Rotor.DataRecords DataRecords Hub and Blades library data
CRAFTS.Rotor.Utilities Utilities Classes used internally in Rotor models; not intended for user interaction

CRAFTS.Rotor.Models

Information

This package contains models of the rotor subsystem. These models are intended to be used as components of a wind turbine model. In other words, they are not standalone models and should be connected to other components, such as the nacelle and blade pitch controller.

Extends from Icons.Packages.Models (Icon for Models packages).

Package Content

Name Description
CRAFTS.Rotor.Models.Rotor Rotor Model of hub with 2 or 3 blades

CRAFTS.Rotor.Models.Rotor CRAFTS.Rotor.Models.Rotor

Model of hub with 2 or 3 blades

Information

A general model of a two- or three-bladed rotor assembly including the hub's inertial properties (e.g. mass, center of mass, moments of inertia) and geometric properties (e.g. radius, overhang, locations of inteface with blades), and blades that can be swapped between standard and experimental structural profiles.


Figures

The azimuth angle, θ, is defined positive clockwise when looking downwind at the rotor. To implement this in a Right Hand Rule-based convention, frame_a of the rotor has its positive x-axis facing downwind, as illustrated in the figure. frame_a is pitched by the nacelle tilt, γ, with respect to the tower top.


Modeling Approach

The rotor axis is implemented using a revolute joint that connects between the hub body and frame_a.

The rotor's angular speed is measured via a speed sensor connected to the revolute joint's axis flange.

The rotor assembly's blade configuration is implemented using a set of fixed rotations that connect between blades' roots and the hub body.

The net thrust and torque acting on the hub's center at the hub-nacelle interface are measured via a cut-load sensor connected to the hub body.

The blades are instantiated as a dynamic array from a single component, so the number of blades can vary. The number of blades is determined by the parameter B, and is restricted to 2 or 3. The first blade is always defined at a starting position of θ = 0, then subsequent blades are rotated in increments around the positive azimuth direction.


Implementation

Toggle on the rotorSpeed parameter in the initialization menu to set an input value as the rotor's initial angular velocity.

The rotorBus connector contains control input and output signals. The input signal must be connected, but the output connections are optional. Vector signals are of size B, which determines the number of blades. The indices of vector signals coincide with the corresponding blade index.

The control input signal is:

  • rotorBus.Beta: vector of blade pitch signals for each of the blades, in rad
  • The control output signals are:

  • rotorBus.flapBRBM: vector of flapwise root bending moments of each of the blades
  • rotorBus.edgeBRBM: vector of edgewise root bending moments of each of the blades
  • rotorBus.Azimuth: vector of azimuth angles of each of the blades, in rad
  • rotorBus.Thrust: aerodynamic thrust force of the rotor
  • rotorBus.Torque: aerodynamic torque of the rotor
  • rotorBus.OmegaRotor: rotor speed, in rad/s
  • To assign airfoil polar data to each aerodynamic element in the array, it is necessary to create an airfoil manifest file, then select it under the AirfoilData parameter. The manifest is a .txt file where each aerodynamic element is assigned a file for airfoil polar data. It uses the following structure:

    airfoil1 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_1.mat";
    airfoil2 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_2.mat";
    airfoil3 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_3.mat";
    ...
    airfoilN = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_N.mat";
    

    The file path string supports Modelica URIs, as seen above, as well as absolute file paths. Comments can be used in the file by preceding them with a double slash: //.

    See AirfoilData for more information about the .mat data files used to hold airfoil polar data.

    When assigning the value of aerodynamic elements, N, ensure that the AirfoilData and BladeStructureData files contain data matching the selected discretization.


    Notes

    The parameter x_overhang is, by convention, always positive. It is the horizontal distance between the rotor apex and yaw axis/tower centerline.

    Extends from Utilities.Interfaces.RotorPartial (Partial rotor model interface).

    Parameters

    NameDescription
    BNumber of rotor blades
    NNumber of aerodynamic elements per blade
    Inflow parameters
    refHeightReference height (usually hub height), used for PL and EXP wind profiles [m]
    rhoDensity of air in [kg/m^3] [kg/m3]
    Assembly parameters
    towerRadiusTower radius [m] [m]
    x_overHangHorizontal distance from yaw axis to rotor apex [m] [m]
    Initialization
    rotorSpeedInitial rotor speed [rad/s]
    Aerodynamics
    Blade Aerodynamics
    noAero= true, if no aerodynamic forces/torques are desired
    inductionFactor= true, compute induction factors
    useCcode= true, use C code induction factor algorithm
    tipLoss= true, if Prandtl's tip loss factor is desired, otherwise not computed
    hubLoss= true, if Prandtl's hub loss factor is desired, otherwise not computed
    Wind Aerodynamics
    towerPotential= true, compute tower's potential on wind
    windProfileWind profile: (1) Uniform, (2) PL, (3) EXP
    File Selection
    Blade Element Cluster
    usePresetStructure=true, if preset file is desired instead of custom file
    presetStructureSelect a preset data file
    customStructureSelect a data file from File Explorer
    Airfoils
    AirfoilDataSelect manifest text file pointing to airfoil polar data files
    Blade
    usePresetBlade=true, if preset file is desired instead of custom file
    preset_bladeSelect a preset data file
    custom_bladeSelect a data file from File Explorer
    Hub
    usePresetHub=true, if preset file is desired instead of custom file
    preset_hubSelect a preset data file
    custom_hubSelect a data file from File Explorer

    Connectors

    NameDescription
    rotorApexFrameFrame to nacelle
    shaftFlangeFlange to nacelle
    v_wind_global[3]Global wind velocity [m/s]
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]
    rotorBusBus for control I/O signals

    CRAFTS.Rotor.Components

    Information

    This package contains components of the rotor subsystem. These are models which are used in the formation of the overall rotor model.

    Extends from CRAFTS.Icons.Packages.Components (Icon for Components packages).

    Package Content

    Name Description
    CRAFTS.Rotor.Components.RigidBlade RigidBlade Rigid blade model with aerodynamic element sensors
    CRAFTS.Rotor.Components.BladeAeroElement BladeAeroElement Aerodynamics model of one blade element

    CRAFTS.Rotor.Components.RigidBlade CRAFTS.Rotor.Components.RigidBlade

    Rigid blade model with aerodynamic element sensors

    Information

    An inelastic blade model to be mounted onto a wind turbine's rotor hub.


    Modeling Approach

    A revolute joint is included to accommodate pitching actuation and a set of arrays of the AerodynamicElement block (BladeAeroElement) calculates discrete aerodynamic loadings along the blade's span.

    The aerodynamic thrusts and torques are resolved and imposed at the blade's root to enable observation of the wind-driven power generation and structural mechanics within the wind turbine.

    The aerodynamic and structural properties of the blade, and the basis of the model's discretization, are respectively implemented (and modifiable) via the model's AirfoilData, BladeData, and BladeElementClusterData data records.

    To accommodate land-based and floating wind turbine applications, this model adopts a sensor-based approach to directly measure the wind input and the motion (including position, velocity, and orientation) of each aerodynamic element.


    Impementation

    After introducing RigidBlade into a model, its parameters can be specified by double-clicking the component in Graphics.

    General parameters::

    The noAero parameter is used to bypass the calculation of the blade's aerodynamic loading and impose a no load condition when toggled on.

    The number of aerodynamic elements in the blade, N, is assigned as an integer value.

    Aerodynamics::

    The towerPotential boolean and windProfile drop-downs determine the inclusion of effects from the tower's wake and the wind shear (either uniform, power law, or logarithmic), respectively, into the calculation of aerodynamic loading on the blade. The rho parameter is used to define the local air's density via a numeric input.

    The inductionFactor, tipLoss, and hubLoss booleans enable the modeling of the interplay between the rotor and inflow momenta (i.e., inflow induction and losses at the blade's tip and root)

    Wind Turbine Parameters::

    The numeric refHeight, B, towerRadius, x_overHang, and hubRadius parameters are used to assign values (respectively) for the turbine's reference/hub height, number of blades, tower radius, overhand of rotor apex, and hub radius. Therein, all quantities of length are nominally input in units of meters.

    File Selection::

    Data files for the BladeData (inertial properties of the blade lumped body) and BladeStructureData (discretized properties of the blade structure at each of the aerodynamic elements) should be selected in the File Selection tab of the Parameter Window.

    To assign airfoil polar data to each aerodynamic element in the array, it is necessary to create an airfoil manifest file, then select it under the AirfoilData parameter. The manifest is a .txt file where each aerodynamic element is assigned a file for airfoil polar data. It uses the following structure:

    airfoil1 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_1.mat";
    airfoil2 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_2.mat";
    airfoil3 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_3.mat";
    ...
    airfoilN = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_N.mat";
    

    The file path string supports Modelica URIs, as seen above, as well as absolute file paths. Comments can be used in the file by preceding them with a double slash: //.

    See AirfoilData for more information about the .mat data files used to hold airfoil polar data.

    When assigning the value of aerodynamic elements, N, ensure that the AirfoilData and BladeStructureData files contain data matching the selected discretization.


    Connectors:

    • frame_a connects to the rotated frame of the hub axis (i.e., frame_a of a chosen fixedRotation in the rotor model).

    Extends from Utilities.Interfaces.BladePartial (Partial model of rigid blade with interface).

    Parameters

    NameDescription
    NNumber of aerodynamic elements
    Blade Aerodynamics
    noAero= true, if no aerodynamic forces/torques are desired
    Aerodynamics
    towerPotential= true, compute tower's potential on wind
    windProfileWind profile: (1) Uniform, (2) PL, (3) EXP
    rhoDensity of air in [kg/m^3] [kg/m3]
    Blade Aerodynamics
    inductionFactor= true, compute induction factors
    useCcode= true, use C code induction factor algorithm
    tipLoss= true, if Prandtl's tip loss factor is desired, otherwise not computed
    hubLoss= true, if Prandtl's hub loss factor is desired, otherwise not computed
    Wind Turbine Parameters
    refHeightReference height (usually hub height), used for PL and EXP wind profiles [m]
    BNumber of blades [-]
    towerRadiusTower radius [m] [m]
    x_overHangHorizontal distance from yaw axis to rotor apex [m] [m]
    hubRadiusRadius of hub [m] [m]
    File Selection
    Blade Structure
    usePresetStructure=true, if preset file is desired instead of custom file
    presetStructureSelect a preset data file
    customStructureSelect a data file from File Explorer
    Airfoils
    AirfoilDataSelect manifest text file pointing to airfoil polar data files
    Blade
    usePresetBlade=true, if preset file is desired instead of custom file
    preset_bladeSelect a preset data file
    custom_bladeSelect a data file from File Explorer

    Connectors

    NameDescription
    flapBRBMFlapwise blade Root Bending Moment [N.m]
    edgeBRBMEdgewise blade root bending moment [N.m]
    windVel[3]Wind velocity (m/s)
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]
    Blade_PitchBlade pitch (rad)
    frame_aFrame to hub
    bladeAzimuthBlade azimuth angle [rad]

    CRAFTS.Rotor.Components.BladeAeroElement CRAFTS.Rotor.Components.BladeAeroElement

    Aerodynamics model of one blade element

    Information

    This is a model of an array of discrete aerodynamic loading modules that act along a specified portion of a rigid wind turbine blade.


    Modeling Approach

    For floating wind turbine applications, this model adopts a sensor-based approach to directly measure the wind input and the motion (including position, velocity, and orientation) of each aerodynamic element. The aerodynamic element and connected sensors are declared as arrays of size N, allowing the aerodynamic discretization to be reconfigured. The aerodynamic forces and torques acting on each element are computed using Blade-Element Momentum (BEM) theory (see AerodynamicElement). These individual contributions are then aggregated to determine the total aerodynamic load.


    Implementation

    The properties of the aerodynamic element nodes (spanwise position, chord length, and local blade twist), relative to the blade root (i.e., frame a) are specified via the data record BladeStructureData. Parameters used in the internal calculation of aerodynamic loads are also specified in this way via the BladeData and AirfoilData data records.

    To assign airfoil polar data to each aerodynamic element in the array, it is necessary to create an airfoil manifest file, then select it under the AirfoilData parameter. The manifest is a .txt file where each aerodynamic element is assigned a file for airfoil polar data. It uses the following structure:

    airfoil1 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_1.mat";
    airfoil2 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_2.mat";
    airfoil3 = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_3.mat";
    ...
    airfoilN = "modelica://CRAFTS/Resources/Data/Rotor/IEA 15MW/AirfoilPolars/IEA15MW_Polar_N.mat";
    

    The file path string supports Modelica URIs, as seen above, as well as absolute file paths. Comments can be used in the file by preceding them with a double slash: //.

    See AirfoilData for more information about the .mat data files used to hold airfoil polar data.

    When assigning the value of aerodynamic elements, N, ensure that the AirfoilData and BladeStructureData files contain data matching the selected discretization.

    
    

    Extends from Utilities.Interfaces.BladeAeroElementPartial (Partial model of blade element with interface).

    Parameters

    NameDescription
    Input File
    AirfoilDataSelect manifest text file pointing to airfoil polar data files
    Input Files
    usePresetStructure=true, if preset file is desired instead of custom file
    presetStructureSelect a preset blade structure data file
    customStructureSelect a blade structure data file from File Explorer
    Aerodynamic Element Parameters
    NNumber of elements
    Aerodynamics
    Blade Aerodynamics
    inductionFactor= true, compute induction factors
    useCcode= true, use C code induction factor algorithm
    tipLoss= true, if Prandtl's tip loss factor is desired, otherwise not computed
    hubLoss= true, if Prandtl's hub loss factor is desired, otherwise not computed
    towerPotential= true, compute tower's potential on wind
    rhoDensity of air, in [kg/m^3]
    windProfileWind profile: (1) Uniform, (2) PL, (3) EXP
    Wind Turbine Parameters
    refHeightReference height (usually hub height), used for PL and EXP wind profiles [m]
    BNumber of blades [-]
    towerRadiusTower radius [m] [m]
    x_overHangHorizontal distance from yaw axis to rotor apex [m] [m]
    hubRadiusRadius of hub [m] [m]
    Blade Parameters
    S_bladeTotal blade span [m]

    Connectors

    NameDescription
    windVel[3]Wind velocity [m/s]
    frame_a 
    orienVec[4]Orientations vector [rad]
    F[3]Total force from cluster
    M[3]Total moment from cluster

    CRAFTS.Rotor.Blocks

    Blocks used in Rotor models

    Information

    This package contains the causal models (i.e., functions) present within the wind turbine rotor system. These models recieve data from their input connections, use the data to compute the values of variables which influence the system, and provide the computed results to the directly influenced components via the output connections to elicit their appropriate response.

    Extends from Icons.Packages.Blocks.

    Package Content

    Name Description
    CRAFTS.Rotor.Blocks.AerodynamicElement AerodynamicElement Computes element aerodynamic forces and induction factors

    CRAFTS.Rotor.Blocks.AerodynamicElement CRAFTS.Rotor.Blocks.AerodynamicElement

    Computes element aerodynamic forces and induction factors

    Information

    An element which computes the resultant aerodynamic loads acting on a given segment of a turbine blade, via blade element momentum theory, and resolves them at the blade root.


    Modeling Approach

    Aerodynamic forces and torques acting on an individual blade element are computed using Blade-Element Momentum (BEM) Theory. In this implementation, the inputs windVel_local and bldElemVelVec_local are obtained directly from sensor measurements and are already expressed in the rotating reference frame. Consequently, an explicit rotation matrix transformation is not required.

    The inflow relative velocity is then used to compute the lift and drag acting on the blade element based on the blade's pitch angle and specified airfoil parameters (i.e., local blade twist and angle-of-attack-dependent lift and drag coefficients). The lift and drag loads are finally resolved into axial thrusts and tangential torques acting on the blade's root using the blade pitch and local blade twist angles and the specified distance of the blade element from the root.

    The external functions logarithmicWindProfile / powerLawWindProfile, towerPotential, and inductionFactor can be enabled to account for the respective effects of wind shear, tower wake, and momentum losses (due to vorticity at the blade tip and root and the inflow induction) on the aerodynamic loads.


    Implementation

    After introducing AerodynamicElement into a model, its parameters are typically assigned in its parent blade model. The parameters can also be adjusted for any individual block by double-clicking it in Graphics.

    
    

    Extends from Utilities.Interfaces.AerodynamicElementPartial (Partial model defining the interface for aerodynamic element).

    Parameters

    NameDescription
    Blade Aerodynamics
    inductionFactor= true, compute induction factors
    useCcode= true, use C code induction factor algorithm
    tipLoss= true, if Prandtl's tip loss factor is desired, otherwise not computed
    hubLoss= true, if Prandtl's hub loss factor is desired, otherwise not computed
    Aerodynamics
    towerPotential= true, compute tower's potential on wind
    rhoDensity of air in [kg/m^3] [kg/m3]
    windProfileWind profile: (1) Uniform, (2) PL, (3) EXP
    Optional Parameters
    disableElement= true, to disable blade element (i.e. no force/moment contribution)
    Wind Turbine Parameters
    refHeightReference height (usually hub height), used for PL and EXP wind profiles [m]
    BNumber of blades [-]
    towerRadiusTower radius [m] [m]
    x_overHangHorizontal distance from yaw axis to rotor apex [m] [m]
    hubRadiusRadius of hub [m] [m]
    Blade Element Parameters
    rRadial distance of element from blade root [m] [m]
    AArea of blade element [m^2] [m2]
    S_bladeBlade length [m] [m]
    c_bladeChord length [m] [m]
    local_twistLocal aerodynamic twist of blade [deg] [deg]
    airfoilFileSelect a data file from File Explorer

    Connectors

    NameDescription
    windVel_local[3]Wind velocity components in local frame, Vx, Vy, Vz, in that order [m/s]
    elementHeightElement's height in the z-dir in global frame [m]
    orienVec[4]Azimuth(x), Pitch(z), Flap(x) angles in that sequence in Rad [rad]
    bldElemVelVec_local[3]Blade element velocity in local frame (m/s)
    F_aero_loc[3]Aerodynamic forces on element in local frame [N]
    M_aero_loc[3]Aerodynamic moment at blade root in local frame (Nm) [N.m]

    CRAFTS.Rotor.DataRecords

    Hub and Blades library data

    Information

    This package contains data records to define the profiles of the wind turbine rotor and its blades and hub. Model parameters are read from external data files by selecting provided preset files and/or specifying custom files.

    Extends from CRAFTS.Icons.Packages.Records (Icon for Data packages).

    Package Content

    Name Description
    CRAFTS.Rotor.DataRecords.HubData HubData Rotor hub data
    CRAFTS.Rotor.DataRecords.BladeData BladeData Turbine blade data
    CRAFTS.Rotor.DataRecords.BladeStructureData BladeStructureData Structural properties of blade across span
    CRAFTS.Rotor.DataRecords.AirfoilData AirfoilData Coefficients of lift and drag data

    CRAFTS.Rotor.DataRecords.HubData CRAFTS.Rotor.DataRecords.HubData

    Rotor hub data

    Information

    This data record describes the geometric and inertial properties of a rotor hub model read from a .txt file.

    The parameters must follow the format shown below (the property names must match exactly as specified):

    //==================================================================================================
    // "Geometric properties"
    //==================================================================================================
    D_hub       = 0.0000;                  // Diameter of hub [m]
    r_cm_x      = 0.0000;                  // Distance from frame a to hub's center of mass in x direction [m]
    r_cm_y      = 0.0000;                  // Distance from frame a to hub's center of mass in y direction [m]
    r_cm_z      = 0.0000;                  // Distance from frame a to hub's center of mass in z direction [m]
    
    
    //==================================================================================================
    // "Inertial properties"
    //==================================================================================================
    m_hub    = 0.0000;              // Mass of the hub [kg]
    Ixx      = 0.0000;              // Mass moment of inertia of hub about its center of mass along the x-axis [kg·m²]
    Iyy      = 0.0000;              // Mass moment of inertia of hub about its center of mass along the x-axis [kg·m²]
    Izz      = 0.0000;              // Mass moment of inertia of hub about its center of mass along the x-axis [kg·m²]
    Ixy      = 0.0000;	        // Product of inertia of hub about its center of mass [kg·m²]
    Ixz      = 0.0000;	        // Product of inertia of hub about its center of mass (pitched) [kg·m²]
    Iyz      = 0.0000;	        // Product of inertia of hub about its center of mass [kg·m²]
    

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    Geometric properties
    D_hubDiameter of hub [m]
    r_cm_xC.o.M location from frame a in x direction [m]
    r_cm_yC.o.M location from frame a in y direction [m]
    r_cm_zC.o.M location from frame a in z direction [m]
    Inertial properties
    m_hubMass of the hub [kg]
    I_xx_hubHub 2nd mass moment of inertia w.r.t x axis [kg.m2]
    I_yy_hubHub 2nd mass moment of inertia w.r.t y axis [kg.m2]
    I_zz_hubHub 2nd mass moment of inertia w.r.t z axis [kg.m2]
    I_xy_hubHub x-y product of inertia [kg.m2]
    I_xz_hubHub x-z product of inertia [kg.m2]
    I_yz_hubHub y-z product of inertia [kg.m2]
    File Selection
    usePreset=true, if preset file is desired instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    CRAFTS.Rotor.DataRecords.BladeData CRAFTS.Rotor.DataRecords.BladeData

    Turbine blade data

    Information

    This data record reads the structural properties of a rigid blade model from a .txt file.

    The parameters must follow the format shown below (the property names must match exactly as specified):

    S_blade	= 0.00000;		// Total span of blade ~(turbine radius-hub)	[    m    ]
    m	= 0.00000; 		// Mass of blade				[    kg   ] 
    blade_cm = 0.00000;		// Blade C.M. w.r.t root along axis		[    m    ] 
    I_xx	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    I_yy	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    I_zz	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    I_xy	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    I_xz	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    I_yz	= 0.00000;		// Blade inertia w.r.t root			[  kg.m^2 ] 
    
    
    

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    Material/Geometric properties
    S_bladeTotal span of blade [m]
    mBlade mass [kg]
    blade_cmBlade C.M. w.r.t root along axis [m]
    I_xxBlade inertia w.r.t root [kg.m2]
    I_yyBlade inertia w.r.t root [kg.m2]
    I_zzBlade inertia w.r.t root [kg.m2]
    I_xyBlade inertia w.r.t root [kg.m2]
    I_xzBlade inertia w.r.t root [kg.m2]
    I_yzBlade inertia w.r.t root [kg.m2]
    File Selection
    usePreset=true, if preset file is desired instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    CRAFTS.Rotor.DataRecords.BladeStructureData CRAFTS.Rotor.DataRecords.BladeStructureData

    Structural properties of blade across span

    Information

    This data record reads the structural properties of a blade from a .mat file.

    The .mat file must contain the following objects (the names of the objects must match exactly as mentioned below):

    BldSpan : A vector of N values for spanwise positions, in meters, corresponding to N aerodynamic elements.
    BldTwist : A vector of N values for blade twist, in degrees, corresponding to N aerodynamic elements.
    ChordLen : A vector of N values for chord length, in meters, corresponding to N aerodynamic elements.
    

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    Local chord distribution
    c_blade[:, 1]Array of local chord distributions [m]
    Local blade twist distribution
    angle[:, 1]Array of local blade twists [deg]
    Array of spanwise positions
    spans[:, 1]Array of spanwise positions [m]
    File Selection
    usePreset=true, if preset file is desired instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    CRAFTS.Rotor.DataRecords.AirfoilData CRAFTS.Rotor.DataRecords.AirfoilData

    Coefficients of lift and drag data

    Information

    This data record reads the aerodynamic properties of an airfoil from a .mat file.

    The .mat file must contain the following objects (the names of the objects must match exactly as mentioned below):

    AoA : A vector of N possible angles of attack, ranging between negative and positive 180 degrees, for which the airfoil's 
          coefficients of aerodynamic lift and drag are being provided.
    Cl  : A vector of N coefficients of the aerodynamic lift with all entries corresponding index-wise to the angles of attack 
          in the vector AoA.
    Cd  : A vector of N coefficients of the aerodynamic drag with all entries corresponding index-wise to the angles of attack 
          in the vector AoA.
    

    Here, N represents a scalar of arbitrary real value which reflects the amount of individual angle-of-attack-dependent lift and drag coefficients being provided.

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    File Selection
    fileSelect a data file from File Explorer
    Airfoil Properties
    AoA[dim[1], 1]Angle of attack, alpha
    C_L[dim[1], 1]Coefficient of lift
    C_D[dim[1], 1]Coefficient of drag

    CRAFTS.Rotor.Utilities

    Classes used internally in Rotor models; not intended for user interaction

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Rotor.Utilities.Interfaces Interfaces Base/partial models
    CRAFTS.Rotor.Utilities.Functions Functions Functions for aerodynamics and the rotor
    CRAFTS.Rotor.Utilities.Types Types Available file choices for Rotor subsystem

    CRAFTS.Rotor.Utilities.Interfaces

    Base/partial models

    Information

    Package containing partial models with connectors used to define model interfaces. These standard interfaces allow models to extend from a common partial model and promote compatible replaceability.

    Extends from CRAFTS.Icons.Packages.Interfaces (Icon for packages with interfaces or connectors).

    Package Content

    Name Description
    CRAFTS.Rotor.Utilities.Interfaces.RotorPartial RotorPartial Partial rotor model interface
    CRAFTS.Rotor.Utilities.Interfaces.BladePartial BladePartial Partial model of rigid blade with interface
    CRAFTS.Rotor.Utilities.Interfaces.BladeAeroElementPartial BladeAeroElementPartial Partial model of blade element with interface
    CRAFTS.Rotor.Utilities.Interfaces.AerodynamicElementPartial AerodynamicElementPartial Partial model defining the interface for aerodynamic element
    CRAFTS.Rotor.Utilities.Interfaces.RotorBus RotorBus Bus to connect rotor input/output signals

    CRAFTS.Rotor.Utilities.Interfaces.RotorPartial CRAFTS.Rotor.Utilities.Interfaces.RotorPartial

    Partial rotor model interface

    Information

    This partial model is used to define the base connectors for the general rotor model. By extending from this partial, a rotor model can be created with equal system compatibility with existing models'. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new two- or three-bladed rotor models.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Parameters

    NameDescription
    BNumber of rotor blades

    Connectors

    NameDescription
    rotorApexFrameFrame to nacelle
    shaftFlangeFlange to nacelle
    v_wind_global[3]Global wind velocity [m/s]
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]
    rotorBusBus for control I/O signals

    CRAFTS.Rotor.Utilities.Interfaces.BladePartial CRAFTS.Rotor.Utilities.Interfaces.BladePartial

    Partial model of rigid blade with interface

    Information

    This partial model is used to define the base connectors for the general rigid rotor blade model. By extending from this partial, a rigid rotor blade model can be created with equal system compatibility with existing models'. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new rigid rotor blade models, particularly ones with behavior similar to the default rigid blade model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Connectors

    NameDescription
    flapBRBMFlapwise blade Root Bending Moment [N.m]
    edgeBRBMEdgewise blade root bending moment [N.m]
    windVel[3]Wind velocity (m/s)
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]
    Blade_PitchBlade pitch (rad)
    frame_aFrame to hub
    bladeAzimuthBlade azimuth angle [rad]

    CRAFTS.Rotor.Utilities.Interfaces.BladeAeroElementPartial CRAFTS.Rotor.Utilities.Interfaces.BladeAeroElementPartial

    Partial model of blade element with interface

    Information

    This partial model is used to define the base connectors for the general model for the aerodynamics of a cluster of rigid blade elements. By extending from this partial, a clustered rigid blade element aerodynamics model can be created with equal system compatibility with existing models'. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new rigid blade element array models, particularly ones with behavior similar to the default blade element array model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Connectors

    NameDescription
    windVel[3]Wind velocity [m/s]
    frame_a 
    orienVec[4]Orientations vector [rad]
    F[3]Total force from cluster
    M[3]Total moment from cluster

    CRAFTS.Rotor.Utilities.Interfaces.AerodynamicElementPartial CRAFTS.Rotor.Utilities.Interfaces.AerodynamicElementPartial

    Partial model defining the interface for aerodynamic element

    Information

    This partial model is used to define the base connectors for the general model of blade element aerodynamics. By extending from this partial, a blade element aerodynamics model can be created with equal system compatibility with existing models'. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new blade element aerodynamics models, particularly ones with behavior similar to the default blade element aerodynamics model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Connectors

    NameDescription
    windVel_local[3]Wind velocity components in local frame, Vx, Vy, Vz, in that order [m/s]
    elementHeightElement's height in the z-dir in global frame [m]
    orienVec[4]Azimuth(x), Pitch(z), Flap(x) angles in that sequence in Rad [rad]
    bldElemVelVec_local[3]Blade element velocity in local frame (m/s)
    F_aero_loc[3]Aerodynamic forces on element in local frame [N]
    M_aero_loc[3]Aerodynamic moment at blade root in local frame (Nm) [N.m]

    CRAFTS.Rotor.Utilities.Interfaces.RotorBus CRAFTS.Rotor.Utilities.Interfaces.RotorBus

    Bus to connect rotor input/output signals

    Information

    This signal bus is an expandable connector, which means the connector can expand to accommodate new signals as they are connected. The bus definition is empty, so it has no attributes by default. See BusUsage for elaboration on using signal buses.

    Implementation

    When using RotorBus as a connector within a model, any desired signal can be connected to the bus. Use a connect statement in the Modelica code or drag a connection in the Diagram Layer, which should provide a pop-up helper window for making connections.

    When a signal is connected to the RotorBus, the bus needs a new sub-variable to receive the signal.

    When making connections to a model that already contains a RotorBus, the connection can be:

    1. drawn/typed directly from the signal source/receiver to the bus, or

    2. another bus can be connected to receive and unpack all the contained signal data.

    CRAFTS.Rotor.Utilities.Functions

    Functions for aerodynamics and the rotor

    Information

    This package provides functions for calculating the induction factor using Blade Element Momentum (BEM) theory.

    
    

    Extends from CRAFTS.Icons.Packages.Functions (Icon for Functions packages).

    Package Content

    Name Description
    CRAFTS.Rotor.Utilities.Functions.inductionFactor inductionFactor Updated IF based on CCBLADE by NREL
    CRAFTS.Rotor.Utilities.Functions.inductionFactor_Ccode inductionFactor_Ccode C code version of induction factor calculation
    CRAFTS.Rotor.Utilities.Functions.inductionFactor_C_external inductionFactor_C_external C code version of induction factor calculation
    CRAFTS.Rotor.Utilities.Functions.towerPotential towerPotential Compute influence of tower on incoming freestream wind

    CRAFTS.Rotor.Utilities.Functions.inductionFactor

    Updated IF based on CCBLADE by NREL

    Information


    Syntax

    (a,ap,CN,CT,phi,AoA_deg,CL,CD,N_Iter) = inductionFactor(Vwind_x, Vwind_y, local_twist, be, AoA_data[:], CL_data[:], CD_data[:], sigma, B, S_blade, r, R_hub, tipLoss, hubLoss);

    Inputs

    NameDescription
    Vwind_xUpstream wind velcotiy
    Vwind_yBlade linear speed at radius r
    local_twist 
    beLocal blade twist angle, blade pitch [deg]
    AoA_data[:, :] 
    CL_data[:, :] 
    CD_data[:, :]Airfoil data for interpolation
    sigma 
    BRotor solidity, number of blades
    S_bladeTotal blade length
    rLocal blade radius (r=0 at root, r=S_blade at tip)
    R_hubHub radius
    tipLossTip loss ON/OFF toggle
    hubLossHub loss ON/OFF toggle

    Outputs

    NameDescription
    a 
    apAxial induction factor (a), Tangential induction factor (a')
    CN 
    CTNormal/thrust, Tangential/torque force coeff.
    phi 
    AoA_degInflow angle [rad], Angle of attack [deg]
    CL 
    CDInterpolated coeff. of lift and drag
    N_IterNumber of iterations

    CRAFTS.Rotor.Utilities.Functions.inductionFactor_Ccode

    C code version of induction factor calculation

    Information

    This function is an alternative to inductionFactor. It can be used interchangeably by adding "_Ccode" after the function name.


    Syntax

    (a,ap,CN,CT,phi,AoA_deg,CL,CD,N_iter) = inductionFactor_Ccode(Vwind_x, Vwind_y, local_twist, be, AoA_data[:], CL_data[:], CD_data[:], sigma, B, S_blade, r, tipLoss, hubLoss);


    Modeling Approach

    This function has identical inputs and outputs as the Modelica-based function inductionFactor. However, because C language does not support functions with multiple outputs, it is unable to call the C code directly from this function. This issue was resolved by adding an intermediary function named inductionFactor_C_external, which combines all outputs into a single array, OutArg. The vector is then extracted to the outputs of this function.


    References:

    [1] S. A. Ning, G. Hayman, R. Damiani, and J. Jonkman, Development and Validation of a New Blade Element Momentum Skewed-Wake Model within AeroDyn, Preprint of AIAA SciTech 2015 Forum, Kissimmee, FL, Jan. 5–9, 2015, NREL/CP-5000-63217, Dec. 2014. [Online]. Available: https://www.nrel.gov/docs/fy15osti/63217.pdf

    [2] S. A. Ning, A Simple Solution Method for the Blade Element Momentum Equations with Guaranteed Convergence, Wind Energy, vol. 17, no. 9, pp. 1327–1345, Sep. 2014, published online 17 June 2013. doi: 10.1002/we.1636. [Online]. Available: https://onlinelibrary.wiley.com/doi/epdf/10.1002/we.1636

    [3] Wikipedia, Brent’s method, Wikipedia, The Free Encyclopedia. [Online]. Available: https://en.wikipedia.org/wiki/Brent%27s_method. [Accessed: 20-Aug-2025]

    [4] Implementation of Brent’s Algorithm to Find Roots of a Polynomial, Code Review Stack Exchange. [Online]. Available: https://codereview.stackexchange.com/questions/103762/implementation-of-brents-algorithm-to-find-roots-of-a-polynomial. [Accessed: 20-Aug-2025]


    See also

    inductionFactor

    inductionFactor_C_external

    Inputs

    NameDescription
    Vwind_xUpstream wind velcotiy
    Vwind_yBlade linear speed at radius r
    local_twist 
    beLocal blade twist angle [deg]
    AoA_data[:, :] 
    CL_data[:, :] 
    CD_data[:, :]Airfoil data for interpolation
    sigma 
    BRotor solidity, number of blades
    S_bladeTotal blade length
    rLocal blade radius (r=0 at root, r=S_blade at tip)
    R_hubHub radius
    tipLossTip loss ON/OFF toggle
    hubLossHub loss ON/OFF toggle

    Outputs

    NameDescription
    a 
    apAxial induction factor (a), Tangential induction factor (a')
    CN 
    CTNormal/thrust, Tangential/torque force coeff.
    phi 
    AoA_degInflow angle [rad], Angle of attack [deg]
    CL 
    CDInterpolated coeff. of lift and drag
    N_IterNumber of iterations

    CRAFTS.Rotor.Utilities.Functions.inductionFactor_C_external

    C code version of induction factor calculation

    Information

    This function serves as an intermediary for the C-based inductionFactor_Ccode function. It aggregates all outputs into a single array to overcome the limitation of C functions, which cannot directly return multiple outputs.


    Syntax

    OutArg = inductionFactor_C_external(Vwind_x, Vwind_y, local_twist, be, AoA_data[:], CL_data[:], CD_data[:], sigma, B, S_blade, r, tipLoss, hubLoss);


    Modeling Approach

    This function is called internally by inductionFactor_Ccode to compute the blade element momentum parameters. It consolidates all output variables of inductionFactor_Ccode into a single vector OutArg. The calling function then extracts the individual outputs from this vector for further use. The output vector OutArg contains 10 variables: a, ap, CN, CT, phi, AoA_deg, CL, CD, N_iter, fzero. The last parameter, fzero, is the residual of the iterative algorithm and is intended for debugging purposes only.


    References:

    [1] S. A. Ning, G. Hayman, R. Damiani, and J. Jonkman, Development and Validation of a New Blade Element Momentum Skewed-Wake Model within AeroDyn, Preprint of AIAA SciTech 2015 Forum, Kissimmee, FL, Jan. 5–9, 2015, NREL/CP-5000-63217, Dec. 2014. [Online]. Available: https://www.nrel.gov/docs/fy15osti/63217.pdf

    [2] S. A. Ning, A Simple Solution Method for the Blade Element Momentum Equations with Guaranteed Convergence, Wind Energy, vol. 17, no. 9, pp. 1327–1345, Sep. 2014, published online 17 June 2013. doi: 10.1002/we.1636. [Online]. Available: https://onlinelibrary.wiley.com/doi/epdf/10.1002/we.1636


    See also

    inductionFactor

    inductionFactor_Ccode

    Inputs

    NameDescription
    Vwind_xUpstream wind velcotiy
    Vwind_yBlade linear speed at radius r
    local_twist 
    beLocal blade twist angle [deg]
    AoA_data[:, :] 
    CL_data[:, :] 
    CD_data[:, :]Airfoil data for interpolation
    sigma 
    BRotor solidity, number of blades
    S_bladeTotal blade length
    rLocal blade radius (r=0 at root, r=S_blade at tip)
    R_hubHub radius
    tipLossTip loss ON/OFF toggle
    hubLossHub loss ON/OFF toggle

    Outputs

    NameDescription
    OutArg[10] 

    CRAFTS.Rotor.Utilities.Functions.towerPotential

    Compute influence of tower on incoming freestream wind

    Information


    Syntax

    (V_Twr) = towerPotential(V_ref, a, x_overHang, r, azimuth, tilt);

    Inputs

    NameDescription
    V_ref[3]Reference wind speed at hub height [m/s] [m/s]
    aTower radius [m] [m]
    x_overHangHorizontal distance from yaw axis to rotor apex [m] [m]
    rRadial distance from rotor axis [m] [m]
    azimuthBlade azimuthal angle [rad] [rad]
    tiltNacelle tilt angle [rad] [rad]

    Outputs

    NameDescription
    V_Twr[3]Wind speed components due to tower potential effect[m/s] [m/s]

    CRAFTS.Rotor.Utilities.Types

    Available file choices for Rotor subsystem

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from CRAFTS.Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Rotor.Utilities.Types.BladeType BladeType Choice of available blades
    CRAFTS.Rotor.Utilities.Types.HubType HubType Choice of available hubs
    CRAFTS.Rotor.Utilities.Types.StructureType StructureType Choice of available blade structural properties
    CRAFTS.Rotor.Utilities.Types.NumBlades NumBlades Enumeration for number of supported rotor blades

    CRAFTS.Rotor.Utilities.Types.BladeType CRAFTS.Rotor.Utilities.Types.BladeType

    Choice of available blades

    Information

    This type lists the built-in data files available for the BladeData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Rotor.Utilities.Types.HubType CRAFTS.Rotor.Utilities.Types.HubType

    Choice of available hubs

    Information

    This type lists the built-in data files available for the HubData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Rotor.Utilities.Types.StructureType CRAFTS.Rotor.Utilities.Types.StructureType

    Choice of available blade structural properties

    Information

    This type lists the built-in data files available for the BladeStructureData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Rotor.Utilities.Types.NumBlades CRAFTS.Rotor.Utilities.Types.NumBlades

    Enumeration for number of supported rotor blades

    CRAFTS.Nacelle

    Library of nacelle body and inner components

    Information

    The nacelle is the portion of a wind turbine that is supported by the tower and connects to the rotor. It contains the generator and drivetrain to convert the rotor's kinetic energy into electrical energy.

    A nacelle's drivetrain can be classified as direct-drive or gearbox. Direct drive nacelles use a direct drive shaft, which directly connects from the rotor to the generator. Gearboxes connect from the rotor's low-speed shaft to the generator's high-speed shaft to increase rotational speed while reducing torque.

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Nacelle.Models Models Models of the nacelle subsystem
    CRAFTS.Nacelle.Components Components Components within the nacelle subsystem
    CRAFTS.Nacelle.DataRecords DataRecords Data records for the nacelle subsystem
    CRAFTS.Nacelle.Utilities Utilities Internal classes for advanced users only

    CRAFTS.Nacelle.Models

    Models of the nacelle subsystem

    Information

    This package contains models of the nacelle subsystem. These models are intended to be used as components of a wind turbine model. In other words, they are not standalone models and should be connected to other components, such as the rotor and tower.

    Extends from Icons.Packages.Models (Icon for Models packages).

    Package Content

    Name Description
    CRAFTS.Nacelle.Models.Nacelle Nacelle Model of nacelle body, drivetrain, and power output

    CRAFTS.Nacelle.Models.Nacelle CRAFTS.Nacelle.Models.Nacelle

    Model of nacelle body, drivetrain, and power output

    Information

    A general nacelle model including structural properties (e.g. mass, center of mass, moments of inertia), geometric properties (e.g. nacelle tilt and overhang with respect to tower top), and a drivetrain that can swap between direct-drive and geared.


    Figures


    Modeling Approach

    If the directDrive boolean is disabled, ideal gears will be used for the gearbox. See Drivetrain documentation for more.

    The drive shaft tilt is implemented using a fixed rotation that translates along the z-axis from the tower top centerline to the drive shaft centerline, then rotates about the y-axis. The rotation follows the Right Hand Rule, or counterclockwise positive.

    The translation along the drive shaft to the hub is implemented using a fixed translation that connects from the pitched drive shaft, directly above the tower centerline, to frame_b.


    Implementation

    Parameters:

    Use the directDrive boolean parameter to swap between direct-drive and geared drivetrains.

    Connections:

    The connector flange_b can optionally connect to a controller (e.g. to control drivetrain speed and torque), but may also remain unconnected.


    Notes

    The center of mass position vector, cm_nacelle_*, inertia tensor, I_**, and Twr2Shft in the nacelle data file should be resolved in the tower top frame. The tower top frame has the z-axis aligned with the tower centerline, pointing vertically, and the x-axis horizontal in the downwind direction.

    The nacelle inertia tensor should be expressed about the nacelle center of mass.

    The parameter overhang in the nacelle data file should be expressed in the pitched frame of the drive shaft. The overhang distance is measured along the shaft from directly above the tower centerline to the rotor apex. It is typically negative, since the positive x-axis points downwind.

    The lumped mass of the nacelle should include the yaw system, generator, and other components of the rotor-nacelle assembly (RNA) aside from the hub and blades.

    Extends from Utilities.Interfaces.NacellePartial (Base nacelle model).

    Parameters

    NameDescription
    directDrive= true, no gearbox present; LS shaft directly connected to generator
    File Selection
    Nacelle File
    usePresetNacelle=true, if preset file is desired instead of custom file
    nacelle_presetSelect a preset data file
    nacelle_customSelect a data file from File Explorer
    Animation
    lengthLength of nacelle [m]
    widthWidth of nacelle [m]
    heightHeight of nacelle [m]
    colorColor of nacelle

    Connectors

    NameDescription
    towerTopFrameFrame to tower top
    shaftFlangeFlange to rotor drive shaft
    generatorFlangeFlange to generator
    rotorApexFrameFrame to rotor
    TurbinePowerTurbine power output [W]
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]

    CRAFTS.Nacelle.Components

    Components within the nacelle subsystem

    Information

    This package contains components of the nacelle subsystem. These are models which are used in the formation of the overall nacelle model.

    Extends from Icons.Packages.Components (Icon for Components packages).

    Package Content

    Name Description
    CRAFTS.Nacelle.Components.Drivetrain Drivetrain Gearbox assembly or direct drive shaft

    CRAFTS.Nacelle.Components.Drivetrain CRAFTS.Nacelle.Components.Drivetrain

    Gearbox assembly or direct drive shaft

    Information

    This is a model of a wind turbine's drivetrain, to be mounted inside a nacelle. It has a low speed (ls) shaft (wind turbine's hub/blade side) and a high speed (hs) shaft (wind turbine's generator side). The two shafts are connected by an ideal gearbox. The model also includes a power sensor mounted on the high speed shaft. Flange b of the mounting1D component (mounting1D.flange_b) can be used to incorporate damping (or spring in appropriate scenarios) between the hs or ls shaft and the mounting. For instance, it can be used to model power loss in the bearings supporting the hs and ls shafts.


    Equations

    The gear ratio parameter, gb_ratio, is calculated as follows:

    gbRatio = phi_HS/phi_LS=omega_HS/omega_LS=tau_LS/tau_HS
// where HS denotes high speed shaft
// LS denotes low speed shaft
// phi is angular displacement
// omega is angular velocity
// tau is torque

    where HS and LS denote high-speed shaft and low-speed shaft, respectively. Phi is angular displacement, omega is angular velocity, and tau is torque.

    gb_ratio should be greater than 1.


    Modeling Approach

    If the directDrive parameter is disabled, the resulting gearbox will use ideal gears. This means that inertia, backlash, elasticity, and damping will be ignored. For more, see IdealGear.

    The boolean parameter directDrive controls the connections within the model. If enabled, the low-speed shaft will be connected directly to the power sensor and flange_b, avoiding the gear assembly and high-speed shaft.


    Implementation

    Parameters:

    All parameters listed in the parameter window must be given values.

    The directDrive boolean swaps the drivetrain between direct-drive and gearbox configurations. gb_ratio is the gearbox ratio, which is ignored if directDrive = true.

    The low-speed shaft parameters are located under the respective tab, separate from the general parameters. These include mass inertia of the shaft, rotational spring and damping constants of the shaft, and the damping constant of the mounting.

    The high-speed shaft parameters are located under the respective tab, similar to the low-speed shaft parameters.

    Extends from Utilities.Interfaces.DrivetrainPartial (Base drivetrain model).

    Parameters

    NameDescription
    Gearbox
    directDrive= true, no gearbox present; LS shaft directly connected to generator
    gb_ratioGearbox ratio
    Low-speed shaft
    I_ls_shaftMass inertia of low speed shaft [kg.m2]
    High-speed shaft
    I_hs_shaftMass inertia of high speed shaft [kg.m2]

    Connectors

    NameDescription
    flange_aLow speed side flange, to connect to hub
    flange_bHigh speed side flange, to connect to generator
    frame_aFixture mounted in nacelle
    PowerFlowPower flow through drivetrain [W]

    CRAFTS.Nacelle.DataRecords

    Data records for the nacelle subsystem

    Information

    This package contains data records to control the parameters of the nacelle model and its components. Parameters can be read from external data files by selecting preset, provided files or choosing a custom file manually.

    Extends from CRAFTS.Icons.Packages.Records (Icon for Data packages).

    Package Content

    Name Description
    CRAFTS.Nacelle.DataRecords.NacelleData NacelleData Nacelle data

    CRAFTS.Nacelle.DataRecords.NacelleData CRAFTS.Nacelle.DataRecords.NacelleData

    Nacelle data

    Information

    This data record describes the geometric, inertial, and drivetrain properties of a nacelle model, read from a .txt file.

    The parameters must follow the format shown below (the property names must match exactly as specified):

    m_nacelle = 0.000;                // Nacelle mass [kg]
    cm_nacelle_x = 0.000;             // Center of mass, x-coordinate [m]
    cm_nacelle_y = 0.000;             // Center of mass, y-coordinate [m]
    cm_nacelle_z = 0.000;             // Center of mass, z-coordinate [m]
    I_xx = 0.000;                     // Principal moment of inertia about x-axis [kg.m^2]
    I_yy = 0.000;                     // Principal moment of inertia about y-axis [kg.m^2]
    I_zz = 0.000;                     // Principal moment of inertia about z-axis [kg.m^2]
    I_xy = 0.000;                     // Product of inertia [kg.m^2]
    I_xz = 0.000;                     // Product of inertia [kg.m^2]
    I_yz = 0.000;                     // Product of inertia [kg.m^2]
    overhang = 0.000;                 // Distance along shaft from tower centerline to rotor apex [m]
    Twr2Shft = 0.000;                 // Vertical distance from tower top to drive shaft [m]
    tilt = 0.000;                     // Nacelle tilt angle [deg]
    
    I_hs_shaft = 0.000;               // Moment of inertia of high-speed shaft about axis of rotation [kg.m^2]
    I_ls_shaft = 0.000;               // Moment of inertia of low-speed shaft about axis of rotation [kg.m^2]
    gb_ratio = 0.000;                 // Gearbox ratio [-]
    


    Notes

    The parameters cm_nacelle_*, I_**, and Twr2Shft in the nacelle data file should be expressed in the tower top frame. The tower top frame has the z-axis aligned with the tower centerline, pointing vertically, and the x-axis horizontal in the downwind direction.

    The parameter overhang in the nacelle data file should be expressed in the pitched frame of the drive shaft. The overhang distance is measured along the shaft from directly above the tower centerline to the rotor apex.

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    Nacelle properties
    m_nacelleMass of nacelle body [kg]
    cm_nacelle_xNacelle C.M. in the x-dir [m]
    cm_nacelle_yNacelle C.M. in the y-dir [m]
    cm_nacelle_zNacelle C.M. in the z-dir [m]
    I_xxMass moment of inertia about x-axis [kg.m2]
    I_yyMass moment of inertia about y-axis [kg.m2]
    I_zzMass moment of inertia about z-axis [kg.m2]
    I_xyx-y product of inertia [kg.m2]
    I_xzx-z product of inertia [kg.m2]
    I_yzy-z product of inertia [kg.m2]
    overhangDistance along shaft from yaw axis to rotor apex [m]
    Twr2ShftVertical distance from tower-top to rotor apex [m]
    tiltNacelle tilt about y-axis [deg] [deg]
    Gearbox parameters
    gb_ratioGearbox ratio
    Low-speed shaft properties
    I_ls_shaftMass inertia of low speed shaft [kg.m2]
    High-speed shaft properties
    I_hs_shaftMass inertia of high speed shaft [kg.m2]
    File Selection
    usePreset=true, if preset file is desired instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    CRAFTS.Nacelle.Utilities

    Internal classes for advanced users only

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Nacelle.Utilities.Interfaces Interfaces Partial models and connectors for nacelle subsystem
    CRAFTS.Nacelle.Utilities.Types Types Available file choices for nacelle subsystem

    CRAFTS.Nacelle.Utilities.Interfaces

    Partial models and connectors for nacelle subsystem

    Information

    Package containing partial models with connectors used to define model interfaces. These standard interfaces allow models to extend from a common partial model and promote compatible replaceability.

    Extends from CRAFTS.Icons.Packages.Interfaces (Icon for packages with interfaces or connectors).

    Package Content

    Name Description
    CRAFTS.Nacelle.Utilities.Interfaces.NacellePartial NacellePartial Base nacelle model
    CRAFTS.Nacelle.Utilities.Interfaces.DrivetrainPartial DrivetrainPartial Base drivetrain model

    CRAFTS.Nacelle.Utilities.Interfaces.NacellePartial CRAFTS.Nacelle.Utilities.Interfaces.NacellePartial

    Base nacelle model

    Information

    This partial model is used to define the base connectors for the general nacelle model. By extending from this partial, the compatibility of similar models can be defined. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new nacelle models, particularly ones with behavior similar to the default nacelle model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Connectors

    NameDescription
    towerTopFrameFrame to tower top
    shaftFlangeFlange to rotor drive shaft
    generatorFlangeFlange to generator
    rotorApexFrameFrame to rotor
    TurbinePowerTurbine power output [W]
    nacelle_tiltTilt of nacelle w.r.t tower top [rad]

    CRAFTS.Nacelle.Utilities.Interfaces.DrivetrainPartial CRAFTS.Nacelle.Utilities.Interfaces.DrivetrainPartial

    Base drivetrain model

    Information

    This partial model is used to define the base connectors for the general drivetrain model. By extending from this partial, the compatibility of similar models can be defined. This is especially useful when using the "Change Class" feature or keyword replaceable ... constrainedby.


    Implementation

    Extend from this partial model to create new drivetrain models, particularly ones with behavior similar to the default drivetrain model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Parameters

    NameDescription
    Gearbox
    directDrive= true, no gearbox present; LS shaft directly connected to generator

    Connectors

    NameDescription
    flange_aLow speed side flange, to connect to hub
    flange_bHigh speed side flange, to connect to generator
    frame_aFixture mounted in nacelle
    PowerFlowPower flow through drivetrain [W]

    CRAFTS.Nacelle.Utilities.Types

    Available file choices for nacelle subsystem

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Nacelle.Utilities.Types.NacelleType NacelleType Choice of available nacelles

    CRAFTS.Nacelle.Utilities.Types.NacelleType CRAFTS.Nacelle.Utilities.Types.NacelleType

    Choice of available nacelles

    Information

    This type lists the built-in data files available for the NacelleData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Tower

    Library of turbine tower models

    Information

    The tower is the portion of a wind turbine that supports the nacelle and the hub/blade assembly. It connects to the ground for land-based wind turbines and to the floating structure in the case of floating wind turbines

    A tower can either be modeled simplistically as a single rigid body element or as an assembly of finite elements, essentially generating a flexible tower model. This library has provisions for building both types of models. The rigid tower can be an excellent setup to obtain initial simulation data, followed by high resolution data generated by simulating a flexible tower.

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Tower.Models Models Models of the tower subsystem
    CRAFTS.Tower.Components Components Components within the tower subsystem
    CRAFTS.Tower.DataRecords DataRecords Contains data records for the towers in the library
    CRAFTS.Tower.Utilities Utilities Internal classes for advanced users only

    CRAFTS.Tower.Models

    Models of the tower subsystem

    Information

    This package contains models of the tower subsystem. These models are intended to be used as components of a wind turbine model. In other words, they are not standalone models and should be connected to other components, such as the nacelle and floating substructure.

    Extends from Icons.Packages.Models (Icon for Models packages).

    Package Content

    Name Description
    CRAFTS.Tower.Models.Tower Tower A rigid tower model

    CRAFTS.Tower.Models.Tower CRAFTS.Tower.Models.Tower

    A rigid tower model

    Information

    In this model, the lower frame represents the bottom and the top frame represents the top of the whole tower. Note that by specifying the integer parameter value of NumMBEs, the model can automatically generate a discretized model of the tower with NumMBEs elements. Note that the discretization is purely for mass and geometric properties; the tower elements are rigidly connected and cannot model bending or torsion. Tower data and wiring data must be provided from .mat files.


    Modeling Approach

    The basic element of the model consists of two connected inertias. By specifying the integer parameter value of NumMBEs, the model can automatically generate a discretized model of the tower with NumMBEs elements. This is useful, for example, when modeling segmented or tapered towers whose properties change according to height.

    If the Wiring boolean is set to true, wiring is modeled as separate rigid bodies attached to tower bodies within MBEs.


    Coordinate System

    The figure below shows the coordinate system used for the tower model.

    Extends from Utilities.Interfaces.TowerPartial (Partial model of a turbine tower).

    Parameters

    NameDescription
    Discretization
    NumMBEsNumber of Multibody Beam Elements (MBEs) in the tower
    Tower Properties
    TowerDataFileManually select data file, otherwise arbitrary inertia properties will be used
    Wiring Properties (Optional)
    WiringIf true, wiring is modeled as separate rigid bodies attached to tower bodies within MBEs
    WiringAnimationif true, animation of the wiring will be enabled
    WiringDataFileManually select data file, otherwise arbitrary wiring mass properties will be used

    Connectors

    NameDescription
    TowerTopInterfaceInterface that connects the tower top to the RNA
    TowerBaseInterfaceFrame that connects the tower base to the monopile or the structure below

    CRAFTS.Tower.Components

    Components within the tower subsystem

    Information

    This package contains components of the tower subsystem. These are models which are used in the formation of the overall tower model.

    Extends from Icons.Packages.Components (Icon for Components packages).

    Package Content

    Name Description
    CRAFTS.Tower.Components.TowerMBE TowerMBE A rigid multibody beam element of a tower
    CRAFTS.Tower.Components.WiringElement WiringElement Wiring modeled as a rigid body with lumped mass and inertia

    CRAFTS.Tower.Components.TowerMBE CRAFTS.Tower.Components.TowerMBE

    A rigid multibody beam element of a tower

    Information

    The model consists of two connected rigid bodies. In addition, the model also gives the option of including a wiring element, with finite inertia values to be added alongside the tower element. The wiring element incorporates the inertia of wires running along the tower's length. This option can be switched on or off.


    Coordinate System

    The figure below shows the coordinate system used for a tower multi-body element. It can be seen that rotation in X produces side-to-side motion, rotation in Y produces fore-aft motion and rotation in Z produces torsional motion of the top with respect to the bottom. There are two frames for external connectivity to this model. TowerMBETop and TowerMBEBottom are the frames at the top and bottom of the model respectively, that establish connectivity to the element above and the element below respectively.


    See Also

    S. Rahman, D. Sarker, T. Ngo, R. Bergua, D. Zalkind, J. Jonkman, T.Das, “Modeling and Verification of Lumped-Parameter, Multibody Structural Dynamics for Offshore Wind Turbines,” Proceedings of 2025 Modeling, Estimation and Control Conference, Pittsburgh, PA, October 5-8, 2025 (https://doi.org/10.1016/j.ifacol.2025.12.242)

    Parameters

    NameDescription
    Wiring (Optional)
    WiringElementif true, wiring is modeled as rigid bodies attached to each tower body in the MBE
    WiringAnimationif true, animation of the wiring will be enabled
    Inertia Properties
    Mass Properties
    Mel[2, 1]Matrix of masses [m_A, m_B] of the rigid body elements [kg]
    Rcm[2, 3]Matrix of position vectors [rCM_A; rCM_B] of body centers of mass [m]
    Inertia Tensor Elements
    MoI[2, 3]Matrix of moments of inertia [Ixx_A, Iyy_A, Izz_A; Ixx_B, Iyy_B, Izz_B] about body centers of mass [kg.m2]
    PoI[2, 3]Matrix of products of inertia [Iyx_A, Izx_A, Izy_A; Iyx_B, Izx_B, Izy_B] about body centers of mass [kg.m2]
    Tower Geometry
    Rb[2, 3]Matrix of position vectors [rb_A; rb_B] of 'b' frames of each rigid body [m]
    L[2, 1]Matrix of the lengths [LengthA; LengthB] of the bodies [m]
    OD[2, 1]Matrix of the outer diameters [DiameterA; DiameterB] of the bodies [m]
    Wiring Properties
    Mass Properties
    WMel[1, 1]Mass of the wiring body element [kg]
    WRcm[1, 3]Position vector of wiring center of mass (relative to BodyA.frame_a) [m]
    Inertia Tensor Elements
    WMoI[1, 3]Matrix of moments of inertia [Ixx_A, Iyy_A, Izz_A; Ixx_B, Iyy_B, Izz_B] about body centers of mass [kg.m2]
    WPoI[1, 3]Matrix of products of inertia [Iyx_A, Izx_A, Izy_A; Iyx_B, Izx_B, Izy_B] about body centers of mass [kg.m2]

    Connectors

    NameDescription
    TowerMBETopFrame that connects the tower MBE to the structure/component above
    TowerMBEBottomFrame that connects the tower MBE to the structure/component below

    CRAFTS.Tower.Components.WiringElement CRAFTS.Tower.Components.WiringElement

    Wiring modeled as a rigid body with lumped mass and inertia

    Information

    This is a rigid-body model of a wiring element with finite inertia values to be added alongside a tower element. The wiring element incorporates the inertia of wires running along the tower's length.


    Coordinate System

    The figure below shows the coordinate system used for a wiring element. There is one frame for connectivity. Frame_a, located at the bottom of the wiring element, connects to the bottom of the associated TowerMBE element. The moments of inertia entered must be about the center of mass of the element.

    Parameters

    NameDescription
    Mass Properties
    r_CM[3]Vector from frame_a to center of mass, resolved in frame_a [m]
    mMass of wiring element [kg]
    Inertia Tensor Elements
    IxxElement (1,1) of inertia tensor of the wiring element [kg.m2]
    IyyElement (2,2) of inertia tensor of the wiring element [kg.m2]
    IzzElement (3,3) of inertia tensor of the wiring element [kg.m2]
    IxyElement (2,1) of inertia tensor of the wiring element [kg.m2]
    IzxElement (3,1) of inertia tensor of the wiring element [kg.m2]
    IzyElement (3,2) of inertia tensor of the wiring element [kg.m2]
    Animation Parameters
    WiringAnimation= true, if animation shall be enabled (show wiring)

    Connectors

    NameDescription
    WiringInterfaceInterface between the wiring and the structure it's connected to

    CRAFTS.Tower.DataRecords

    Contains data records for the towers in the library

    Information

    This package contains data records to control the parameters of the tower model and its components. Parameters can be read from external data files by selecting preset, provided files or choosing a custom file manually.

    Extends from CRAFTS.Icons.Packages.Records (Icon for Data packages).

    Package Content

    Name Description
    CRAFTS.Tower.DataRecords.TowerData TowerData Structural properties of a tower
    CRAFTS.Tower.DataRecords.WiringData WiringData Geometric and inertia properties of wiring

    CRAFTS.Tower.DataRecords.TowerData CRAFTS.Tower.DataRecords.TowerData

    Structural properties of a tower

    Information

    This data record reads the structural properties of a flexible tower model from a .mat file.

    The .mat file must contain the following matrices (the names of the matrices must match exactly as mentioned below):

    CylBodyMass           : A 2N×1 matrix containing the masses of the bodies.
    CylBodyLocalCoM       : A 2N×3 matrix containing the position vectors
                            of the body centers of mass with respect to the 
                            local frame at the bottom of the bodies.
    CylBodyR              : A 2N×3 matrix containing the position vectors
                            of the tops of the bodies with respect to the 
                            local frame at the bottom of the bodies.
    CylBodyMoI            : A 2N×3 matrix containing the mass moments of inertia
                            (Ixx, Iyy, Izz) of the bodies.
    CylBodyPoI            : A 2N×3 matrix containing the mass products of inertia
                            (Ixy, Izx, Iyz) of the bodies.
    CylBodyL              : A 2N×1 matrix containing the lengths of the bodies (for animation).
    CylBodyOD             : A 2N×1 matrix containing the average outer diameters of the bodies (for animation).
    

    Here, N is the number of elements in the tower model. Each tower element consists of two rigid bodies with a three-DOF flexibility component in between.

    
    

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    DataFileChoose a default tower property file
    fileManually select data file, overrides the default file choice above

    CRAFTS.Tower.DataRecords.WiringData CRAFTS.Tower.DataRecords.WiringData

    Geometric and inertia properties of wiring

    Information

    This data record describes the inertia properties of a wiring model read from a .mat file.

    The .mat file must contain the following matrices (the names of the matrices must match exactly as specified):

    WiringElementMass        : An N×1 matrix containing the masses of the wiring bodies.
    WiringLocalCenterOfMass  : An N×3 matrix containing the position vectors
                               of the wiring centers of mass relative to the 
                               local frame at the bottom of the tower element.
    WiringMomentsOfInertia   : An N×3 matrix containing the mass moments of inertia
                               (Ixx, Iyy, Izz) of the wiring bodies.
    WiringProductsOfInertia  : An N×3 matrix containing the mass products of inertia
                               (Ixy, Izx, Iyz) of the wiring bodies.
    

    Here, N is the number of wiring elements (this should be equal to the number of tower elements, as each tower element has an optional wiring element).

    
    

    Extends from CRAFTS.Icons.DataRecord (Icon for data records).

    Contents

    NameDescription
    WiringIf true, wiring elements are considered as rigid bodies separate from tower elements
    dataFileChoose a preset wiring property file
    fileManually select wiring data file

    CRAFTS.Tower.Utilities

    Internal classes for advanced users only

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Tower.Utilities.Interfaces Interfaces Infrastructure of models in the tower library
    CRAFTS.Tower.Utilities.Types Types Contains types for different models and/or components of the tower library

    CRAFTS.Tower.Utilities.Interfaces

    Infrastructure of models in the tower library

    Information

    Package containing partial models with connectors used to define model interfaces. These standard interfaces allow models to extend from a common partial model and promote compatible replaceability.

    Extends from CRAFTS.Icons.Packages.Interfaces (Icon for packages with interfaces or connectors).

    Package Content

    Name Description
    CRAFTS.Tower.Utilities.Interfaces.TowerPartial TowerPartial Partial model of a turbine tower

    CRAFTS.Tower.Utilities.Interfaces.TowerPartial CRAFTS.Tower.Utilities.Interfaces.TowerPartial

    Partial model of a turbine tower

    Information

    This partial tower model simply defines the interface frames at the top and bottom of the tower. The model does not refer to any specific data file.


    Implementation

    Extend from this partial model to create new tower models, particularly ones with behavior similar to the default tower model.

    See the CRAFTS User's Guide for more information on extending to create new models.

    Connectors

    NameDescription
    TowerTopInterfaceInterface that connects the tower top to the RNA
    TowerBaseInterfaceFrame that connects the tower base to the monopile or the structure below

    CRAFTS.Tower.Utilities.Types

    Contains types for different models and/or components of the tower library

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from CRAFTS.Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Tower.Utilities.Types.NumMBEs NumMBEs Selector with drop-down menu for number of MBEs in a structural model
    CRAFTS.Tower.Utilities.Types.TowerFiles TowerFiles Choice of default data files for a tower model
    CRAFTS.Tower.Utilities.Types.WiringFiles WiringFiles Choice of default files for wiring components

    CRAFTS.Tower.Utilities.Types.NumMBEs CRAFTS.Tower.Utilities.Types.NumMBEs

    Selector with drop-down menu for number of MBEs in a structural model

    Information

    This is a selector with drop-down menu for number of MBEs in a structural model


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeInteger (Icon for Integer types).

    CRAFTS.Tower.Utilities.Types.TowerFiles CRAFTS.Tower.Utilities.Types.TowerFiles

    Choice of default data files for a tower model

    Information

    This type lists the built-in data files available for the TowerData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Tower.Utilities.Types.WiringFiles CRAFTS.Tower.Utilities.Types.WiringFiles

    Choice of default files for wiring components

    Information

    This type lists the built-in data files available for the WiringData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Controller

    Library of FOWT controllers

    Information

    Controllers are an integral part of wind turbines. To maximize power generation and extract optimal performance, various control algorithms must be integrated with wind turbine systems. The primary control objectives are rotor speed regulation and power optimization. Additionally, to extend the operational lifespan of wind turbines, advanced control strategies are augmented to mitigate fatigue loads in different components—such as the blades and tower in land-based turbines, and platform motions (e.g., pitch, roll, and surge) in floating offshore wind turbines.

    The primary control objectives are typically achieved through actuation of the generator torque and collective blade pitch. Fatigue load reduction and mitigation of platform oscillations are generally addressed through individual pitch control (IPC), active and passive tuned mass dampers (TMDs), and mooring line actuation strategies.

    This controller package includes various control modules and their associated components.


    Author

    Author: Kazi Ishtiak Mohsin

    Responsibility: Development of control algorithms for rotor speed regulation, power generation, fatigue load reduction, and platform oscillation mitigation.

    Contact: ka402286@ucf.edu


    Author: Dung Tran

    Responsibility: Integration of ROSCO controller components in CRAFTS

    Contact: dung.tran@ucf.edu

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Controller.Models Models Contains various Control algorithm models
    CRAFTS.Controller.Components Components Contains Components of each control algorithm
    CRAFTS.Controller.DataRecords DataRecords Contains data records for the controllers in the library
    CRAFTS.Controller.Utilities Utilities Internal classes for advanced users

    CRAFTS.Controller.Models

    Contains various Control algorithm models

    Information

    This package contains various control algorithm models designed to be integrated as components of a complete wind turbine model. These models are not standalone; rather,they are designed to work in conjunction with the complete wind turbine model.

    Extends from Icons.Packages.Models (Icon for Models packages).

    Package Content

    Name Description
    CRAFTS.Controller.Models.CpLambdaController CpLambdaController Controller to assist in Cp-Lambda curve generation
    CRAFTS.Controller.Models.NonLinearController NonLinearController Control Algorithm for rotor speed and power regulation

    CRAFTS.Controller.Models.CpLambdaController CRAFTS.Controller.Models.CpLambdaController

    Controller to assist in Cp-Lambda curve generation

    Information

    This controller regulates rotor speed at a fixed setpoint via generator torque actuation to generate the Cp-λ characteristic curve. It is not intended for real-world operation and should only be used for model validation purposes.


    Implementation

    This controller should be used when validating the aerodynamic and structural behavior of the CRAFTS model under fixed rotor speed operating conditions. The desired fixed rotor speed should be provided as an input through ref_speed. The current rotor speed and torque should be supplied via the Rotor_speed and Rotor_torque inputs, respectively. Based on these inputs, the model outputs the required generator torque to maintain the specified rotor speed under the current operating conditions

    Parameters

    NameDescription
    gb_ratioGearbox ratio
    eta 
    k_pProportional gain
    k_iIntegral gain
    w_d 

    Connectors

    NameDescription
    Rotor_speedActing rotor speed
    Generator_torqueGenerator torque actuation
    Rotor_torqueActing rotor torque [N.m]
    Ref_speedReference rotor speed [rpm]

    CRAFTS.Controller.Models.NonLinearController CRAFTS.Controller.Models.NonLinearController

    Control Algorithm for rotor speed and power regulation

    Information

    The nonlinear controller is considered the baseline controller for CRAFTS and is primarily used for rotor speed and power regulation in wind turbines. The control operation of wind turbines is generally divided into two regimes:

    • Regime 2, where the wind speed is below the rated condition, and
    • Regime 3, where the wind speed exceeds the rated condition.

    In Regime 2, the objective is to regulate the rotor speed to track the optimum tip-speed ratio, which enables maximum power extraction. In this regime, generator torque control is actively applied, while the blade pitch angle remains constant.

    In Regime 3, the objective shifts to tracking the rated rotor speed and rated power. A constant generator torque equal to the rated torque is applied to maintain rated power, while the collective blade pitch angle is modulated to regulate the rotor speed.


    Figures

    The attached figure illustrates the control algorithm of the nonlinear controller. Here, \omega_{r}, \omega_{r,sw}, Sw_{out}, GR, \beta, and T_{g}represent the rotor speed, switching rotor speed, switching condition, gearbox ratio, blade pitch angle, and generator torque, respectively.

    As shown, the control algorithm switches between Regime 2 and Regime 3 based on the switching condition. Additionally, to ensure a smooth transition between the two regimes, a setpoint smoother block is integrated within the switching logic. This smoother adjusts the Regime 3 torque command to avoid abrupt changes during the transition.


    Equations

    Equations and conditions for switching speed, swithching condition, regime-2 torque, regime-3 torque, regime-2 pitch, regime-3 pitch canbe found in Rotorsw ,Regime2to3Trans, Regime2Torque ,

    Regime3Torque , Regime2Pitch , Regime3Pitch blocks respectively.


    Modeling Approach

    Control structure design and stability analysis is detailed in [Semurau2015].


    Implementation

    This controller is designed for a 15 MW reference wind turbine. It is integrated with the full-scale wind turbine model to regulate rotor speed and power generation. The controller takes rotor speed and gearbox ratio as inputs and outputs the required generator torque and blade pitch angle to achieve the control objectives.


    See Also

    [Semrau2015]

    G. Semrau, S. Rimkus, and T. Das,

    " Nonlinear Systems Analysis and Control of Variable Speed Wind Turbines for Multiregime operation",

    Journal of Dynamic Systems, Measurement, and Control

    Paper No:DS-13-1537.

    Parameters

    NameDescription
    File Selection
    usePresetif true, parameters from preset file used instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    Connectors

    NameDescription
    omega_rotorCurrent rotor speed [rad/s]
    gb_ratioGearbox ratio
    T_generatorGenerator torque output
    beta_out blade pitch angle output

    CRAFTS.Controller.Components

    Contains Components of each control algorithm

    Information

    This package contains components of the controller subsystem. These are models which are used in the formation of the overall controller models.

    Extends from Icons.Packages.Components (Icon for Components packages).

    Package Content

    Name Description
    CRAFTS.Controller.Components.NonlinearControllerComponents NonlinearControllerComponents  

    CRAFTS.Controller.Components.NonlinearControllerComponents

    Information

    This package contains components of the NonlinearController. These are models which are used in the formation of the overall controller model.


    Contains:

    Regime2Torque

    Actuates generator torque in regime 2

    Regime3Torque

    Actuates generator torque in regime 3

    RotorSw

    Calculates rotor speed switching point

    Regime2to3Trans

    Determines the switching point between regime 2 and 3

    Regime2Pitch

    Resets the collective pitch angle when the control algorithm transitions from Regime 3 to Regime 2

    Regime3Pitch

    Adjusts the collective blade pitch

    Regime3PitchLogic

    Determines when Regime 3 blade pitch modulation is disabled

    Package Content

    Name Description
    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Torque Regime2Torque Regime 2 torque control
    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Torque Regime3Torque Regime 3 torque control
    CRAFTS.Controller.Components.NonlinearControllerComponents.RotorSw RotorSw Rotor switching speed calculation
    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2to3Trans Regime2to3Trans Condition for transitioning between regime-2 and 3
    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Pitch Regime2Pitch Modified regime 2 control
    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Pitch Regime3Pitch Regime-3 pitch control

    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Torque CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Torque

    Regime 2 torque control

    Information

    This model actuates generator torque in regime-2 to track the optimum tip speed ratio which corresponds to optimum power.


    Equations

    Generator torque actuation is governed by the following equation:

    T_g =k_t*w_r^2/GR

    Here, omega and GR are acting rotor speed and gear box ration respectively . Again,

    K_t = K_t.opt = 1/2 *rho* A_rotor*R^3*C_p.opt/lambda_opt^3

    Here , rho, A, R, C_p.opt, lambda_opt denotes air density, rotor area, rotor radius, optimum power coeffciient and optimum tip speed ratio respectively.

    Parameters

    NameDescription
    KtKt value tracking Optimum tip speed ratio

    Connectors

    NameDescription
    Rotor_speedActing rotor speed [rad/s]
    GRGearbox ratio
    T_gGenerator torque actuation [N.m]

    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Torque CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Torque

    Regime 3 torque control

    Information

    This model actuates generator torque in Regime 3 to track the rated power output. In this operating region, the generator torque is held constant at its rated value to maintain rated power, while the rotor speed is regulated at rated value thorugh regulating collective blade pitch.


    Equations

    Generator toruqe in regime-3 is governed by the follwoing equation:


    T_g = P_ref/(w_r *GR)

    Here P_ref, w , and GR denotes rated power, rotor speed, and gearbox ratio respectively. Moreover, In the setpoint smoothing regime denoted by regime 2.5, Generator torque is governed by following equation:


    T_g = (P_ref+k*offset)/(w_r *GR)

    Here, offset refers to the difference between the actual rotor speed and the switching rotor speed. When the rotor speed is below the switching threshold (i.e., the offset is negative), the generator torque is regulated to track a slightly sub-rated reference power. This helps ensure a smooth transition between Regime 2 and Regime 3. The parameter k determines the deviation between the rated power and the sub-rated tracking point.

    Parameters

    NameDescription
    UlowLower limit of switching condition (rad/s)
    UhighUpper limit of switching condition (rad/s)
    PrefRated power (W)
    KgainGain value (W.s/rad)

    Connectors

    NameDescription
    Rotor_speedActing rotor speed [rad/s]
    GRGearbox ratio
    T_gGenerator torque actuation [N.m]
    OffsetOffset from rated rotor speed [rad/s]
    switching_logicSwitching logic between regime-2 and 3

    CRAFTS.Controller.Components.NonlinearControllerComponents.RotorSw CRAFTS.Controller.Components.NonlinearControllerComponents.RotorSw

    Rotor switching speed calculation

    Information

    This model calculates rotor speed switching point based on which generator torque and blade pitch actuation switches between regime-2 and 3.


    Equations

    Rotor speed switching point is determined by the following equation:

    w_r.sw = (P_ref/k_t)^(1/3)

    Here, P_ref and K_t are rated reference power and tip speed ratio tracking constant.

    Parameters

    NameDescription
    PrefReference rated power
    RswKtKt Value for rotor switching speed

    Connectors

    NameDescription
    omega_swController switching rotor speed

    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2to3Trans CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2to3Trans

    Condition for transitioning between regime-2 and 3

    Information

    This model determines the switching point between regime-2 and 3. Based on the output of this model controller switches between regime-2 and 3 torque and collective pitch control.


    Equations

    If output = false , then it denotes regime-2

    If output = true , then it denotes regime-3

    Here , output is the output of the model.

    Parameter, offset = w_r - w_r,sw

    Here, w_r, w_r,sw denotes current rotor speed and switching rotor speed respectively.

    Constant u_high, u_low

    when, output =false and offset>u_high, switch output to true

    when, output = true and offset<u_low, switch output to false.

    Parameters

    NameDescription
    UlowHysteresisLower Limit of Hysteresis Block
    UhighHysteresisHigher limit of hysteresis block

    Connectors

    NameDescription
    Rotor_speedCurrent rotor speed [rad/s]
    True3_False2Determines whether to control in regime-2 or 3
    omega_r_swSwitching rotor speed
    Offsetoffset in rotor speed from switching rotor speed

    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Pitch CRAFTS.Controller.Components.NonlinearControllerComponents.Regime2Pitch

    Modified regime 2 control

    Information

    This model resets the collective pitch angle to its lower limit when the control algorithm transitions from Regime 3 to Regime 2. In Regime 2, the blade pitch angle remains constant at this lower limit.


    Equations

    Regime-2 blade pitch is governed by the follwoing equation:

    Here, beta and beta_0 denotes the current pitching angle and lower limit of pitching angle. K_{p,2} is a proportional gain.

    Parameters

    NameDescription
    LowerBetaLower limit of blade pitch
    Kp2PitchProportional gain of Regime-2 blade pitch

    Connectors

    NameDescription
    beta_crntCurrent blade pitch angle
    betaBlade pitch actuation
    uSwitching logic between regime-2 and 3

    CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Pitch CRAFTS.Controller.Components.NonlinearControllerComponents.Regime3Pitch

    Regime-3 pitch control

    Information

    This model adjusts the collective blade pitch to maintain the rotor speed at its rated value.


    Equations

    Collective blade pitch in regime-3 is modulated by following equation:

    Here, w_r and w_r,sw represents the current rotor speed and switching rotor speed respectively. K_{p,3} and k_{i,3} denotes the proportional and integral gains. beta_{0} represents the lower limit of blade pitch.

    Parameters

    NameDescription
    LowerBetaLower limit for blade pitch
    Kp3PitchProportional gain for regime-3 blade pitch
    Ki3PitchIntegral gain for regime-3 blade pitch
    UpperBetaupper Limit of blade pitch

    Connectors

    NameDescription
    omega_rotorCurrent rotor speed[rad/s]
    omega_swSwitching rotor speed[rad/s]
    betaBlade pitch actuation[rad]
    beta_crntCurrent blade pitch angle[rad]
    uSwitching logic [boolean]

    CRAFTS.Controller.DataRecords

    Contains data records for the controllers in the library

    Information

    This package contains data records to control the parameters of controller models and their components. Parameters can be read from external data files by selecting preset, provided files or choosing a custom file manually.

    Extends from Icons.Packages.Records (Icon for Data packages).

    Package Content

    Name Description
    CRAFTS.Controller.DataRecords.NonlinearControllerData NonlinearControllerData Stores parameters of the nonlinear controller

    CRAFTS.Controller.DataRecords.NonlinearControllerData CRAFTS.Controller.DataRecords.NonlinearControllerData

    Stores parameters of the nonlinear controller

    Information

    This data record contains the settings for the nonlinear controller, read from a .txt file.

    The parameters must follow the format shown below (the property names must match exactly as specified):

    Pref 			= 0.00000	// Reference rated power [W]
    
    UlowHysteresis 		= 0.00000	// Lower limit of hysteresis block
    UhighHysteresis 	= 0.00000	// Upper limit of hysteresis block
    
    Kt 			= 0.00000	// Kt value of regime-2 torque controller
    R3TorqueKgain		= 0.00000	// Gain value of regime-3 torque controller
    TorqueMin		= 0.00000	// Minimum torque commanded [N.m]
    TorqueMax		= 0.00000	// Maximum torque commanded [N.m]
    TorqueMinRate		= 0.00000	// Minimum torque rate [N.m/s]
    TorqueMaxRate		= 0.00000	// Maximum torque rate [N.m/s]
    
    Kp2Pitch 		= 0.00000	// Proportional gain for regime-2 pitch controller
    Kp3Pitch 		= 0.00000	// Proportional gain for regime-3 pitch controller
    Ki3Pitch 		= 0.00000	// Integral gain for regime-3 pitch controller
    LowerBeta 		= 0.00000	// Lower threshold of pitch actuation [rad]
    UpperBeta 		= 0.00000	// Upper threshold of pitch actuation [rad]
    BetaMinRate		= 0.00000	// Minimum pitch rate [rad/s]
    BetaMaxRate		= 0.00000	// Maximum pitch rate [rad/s]
    
    

    See the documentation of the function readRealParameter for more information on reading from .txt files.


    Implementation

    See the CRAFTS User's Guide for information on using data records with CRAFTS models.

    Contents

    NameDescription
    Universal Parameters
    PrefReference rated Power
    Regime transition
    UlowHysteresisLower limit of hysteresis block
    UhighHysteresisHigher limit of hysteresis block
    Torque controller
    KtKt value of regime-2 torque controller
    R3TorqueKgainGain value of regime-3 torque controller
    TorqueMinMinimum torque commanded
    TorqueMaxMaximum torque commanded
    TorqueMinRateMinimum torque rate
    TorqueMaxRateMaximum torque rate
    Blade pitch controller
    Kp2PitchProportional gain for regime-2 pitch controller
    Kp3PitchProportional gain for regime-3 pitch controller
    Ki3PitchIntegral gain for regime-3 pitch controller
    LowerBetaLower threshold of pitch actuation
    UpperBetaUpper threshold of pitch actuation
    BetaMinRateMinimum pitch rate
    BetaMaxRateMaximum pitch rate
    File Selection
    usePresetif true, parameters from preset file used instead of custom file
    presetSelect a preset data file
    customSelect a data file from File Explorer

    CRAFTS.Controller.Utilities

    Internal classes for advanced users

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Controller.Utilities.Types Types Contains types for different models and/or components of the controller library

    CRAFTS.Controller.Utilities.Types

    Contains types for different models and/or components of the controller library

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Controller.Utilities.Types.NonlinearControllers NonlinearControllers Choice of default parameters for a nonlinear controller

    CRAFTS.Controller.Utilities.Types.NonlinearControllers CRAFTS.Controller.Utilities.Types.NonlinearControllers

    Choice of default parameters for a nonlinear controller

    Information

    This type lists the built-in data files available for the NonlinearControllerData record in CRAFTS.


    Implementation

    To view the string values of the defined choices within this type, open the Modelica text of the type and expand the annotation. The available data files will be listed in the form:

    choice = "FileName.txt" "Description of the choice"

    That is, the first string after the equals sign is the entire file name, including extension, and the second string is a descriptor. The description string is what appears in drop-down menus where the type is used. With this information, advanced users can track the choices in a drop-down menu to the corresponding built-in data files in the directory CRAFTS/Resources/Data/...


    Notes

    This type only contains built-in CRAFTS data files. To create new drop-down menus with additional data files, a new type needs to be created and the choices manually listed in the annotation.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Environment

    Library of basic enviromental conditions with wind and wave analysis

    Information

    The environment library defines the environmental conditions applied to the objects during simulation.


    Author

    Authored by: Doyal Kumar Sarker

    Contact me: doyal.kumar.sarker@ucf.edu

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Environment.Utilities Utilities Internal classes for advanced users only

    CRAFTS.Environment.Utilities

    Internal classes for advanced users only

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Environment.Utilities.Functions Functions Available functions to generate environmental conditions
    CRAFTS.Environment.Utilities.Types Types Available file choices for wind and wave types

    CRAFTS.Environment.Utilities.Functions

    Available functions to generate environmental conditions

    Information

    This package provides functions for wind and wave environmental conditions.

    Extends from CRAFTS.Icons.Packages.Functions (Icon for Functions packages).

    Package Content

    Name Description
    CRAFTS.Environment.Utilities.Functions.logarithmicWindProfile logarithmicWindProfile Compute wind shear based on logarithmic
    CRAFTS.Environment.Utilities.Functions.powerLawWindProfile powerLawWindProfile Compute wind shear based on power-law profile

    CRAFTS.Environment.Utilities.Functions.logarithmicWindProfile

    Compute wind shear based on logarithmic

    Information

    This function outputs wind profile data based on wind shear for a logarithmic wind type.


    Syntax

    V_bar[3] = logarithmicWindProfile(V_ref[3], H_ref, z);

    Inputs

    NameDescription
    V_ref[3]Reference wind speed [m/s]
    H_refHeight of the reference wind speed [m]
    zCurrent element height [m]

    Outputs

    NameDescription
    V_bar[3]Sheared wind speed at height Z_hub [m/s]

    CRAFTS.Environment.Utilities.Functions.powerLawWindProfile

    Compute wind shear based on power-law profile

    Information

    This function outputs wind profile data based on wind shear for a power law wind type.


    Syntax

    V_bar[3] = powerLawWindProfile(V_ref[3], Z_hub, z);

    Inputs

    NameDescription
    V_ref[3]Reference wind speed [m/s]
    Z_hubHeight of the reference wind speed [m]
    zCurrent element height [m]

    Outputs

    NameDescription
    V_bar[3]Sheared wind speed at height Z_hub [m/s]

    CRAFTS.Environment.Utilities.Types

    Available file choices for wind and wave types

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from CRAFTS.Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Environment.Utilities.Types.WindProfileType WindProfileType Choice of available wind profile inputs

    CRAFTS.Environment.Utilities.Types.WindProfileType CRAFTS.Environment.Utilities.Types.WindProfileType

    Choice of available wind profile inputs

    Information

    This type lists the options available for wind profile types in CRAFTS.

    Extends from Modelica.Icons.TypeString (Icon for String types).

    CRAFTS.Common

    Classes that are reused throughout CRAFTS

    Information

    Contains base classes that are used throughout the CRAFTS library to supplement the subsystem packages. Classes that do not fall within a specific subsystem or are shared among multiple subsystems are included in the Common package.


    Authors

    • General contents: Mohammad Odeh

    Contact me: Mohammad.Odeh@ucf.edu || contact@mohammadodeh.com

    • Mechanics components: Doyal Kumar Sarker

    Contact me: Doyal.Kumar.Sarker@ucf.edu

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Common.Blocks Blocks Mathematical operations
    CRAFTS.Common.DataRecords DataRecords  
    CRAFTS.Common.Utilities Utilities  

    CRAFTS.Common.Blocks

    Mathematical operations

    Information

    This package contains blocks that are common to all of CRAFTS and do not fall under any single subsystem package. These supplementary blocks perform extra calculations or operations for easy access and reusability.

    Extends from CRAFTS.Icons.Packages.Blocks.

    Package Content

    Name Description
    CRAFTS.Common.Blocks.Math Math Blocks used for calculation

    CRAFTS.Common.Blocks.Math

    Blocks used for calculation

    Information

    This package contains blocks that perform mathematical operations or calculations. For instance, the Power block can be used for exponentiation in controller design or Calculate_Cp can be inserted in a wind turbine model to find the coefficient of power.

    Extends from Icons.Packages.Math (Math package icon).

    Package Content

    Name Description
    CRAFTS.Common.Blocks.Math.Power Power Output the power to a base of the input
    CRAFTS.Common.Blocks.Math.Subtract Subtract Output the difference of the two inputs
    CRAFTS.Common.Blocks.Math.Calculate_Cp Calculate_Cp Block to calculate the power coefficient, Cp
    CRAFTS.Common.Blocks.Math.Calculate_Ct Calculate_Ct Block to calculate the thrust coefficient, Ct
    CRAFTS.Common.Blocks.Math.Calculate_Cq Calculate_Cq Block to calculate the torque coefficient, Cq
    CRAFTS.Common.Blocks.Math.CpCtCq CpCtCq Block to calculate the power, thrust, and torque coefficients (Cp, Ct, and Cq, respectively)

    CRAFTS.Common.Blocks.Math.Power CRAFTS.Common.Blocks.Math.Power

    Output the power to a base of the input

    Information

    This block computes the output y as the input x to the power of the input u. It is useful for blocks that perform operations involving exponentiation or for controller design.


    Equations

    The output is described by:

    y=x^u


    Implementation

    The block is intended to be connected to real scalar inputs, but can be declared as an array to connect to multidimensional inputs of the same size. See the following example for more.


    Examples

    In the following example, the power block was declared as an array of size [3] to be able to connect to inputs of the same size.

    The constant block was used as the source for the input x of the power block. Its array contents are {1,2,3}. The ramp block was used as the source for the input u of the power block. Its array contents are identical: ramps with amplitude = 2 and duration = 1s.

    The output y of the power block is an array containing the exponential curves of the bases 1, 2, and 3 raised to a linearly increasing power over time.

    Block diagram of the example.

    Array declaration of the power block.

    Connectors

    NameDescription
    uPower to which (x) is raised to
    xBase
    yOutput of x^u

    CRAFTS.Common.Blocks.Math.Subtract CRAFTS.Common.Blocks.Math.Subtract

    Output the difference of the two inputs

    Information

    This block computes the output y as the difference of the two real input signals u1 and u2. Each input has a corresponding gain, k1 and k2. It is recommended to leave the gains as positive values to preserve the subtraction of u1 - u2.


    Equations

    y = k1*u1 - k2*u2;


    See Also

    Alternatively, the add block can be used to perform subtraction by changing the gains k1 or k2 to negative values.

    Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

    Parameters

    NameDescription
    k1Gain of input signal 1
    k2Gain of input signal 2

    Connectors

    NameDescription
    u1Minuend (positive)
    u2Subtrahend (negative)
    yConnector of Real output signal

    CRAFTS.Common.Blocks.Math.Calculate_Cp CRAFTS.Common.Blocks.Math.Calculate_Cp

    Block to calculate the power coefficient, Cp

    Information

    This block outputs the coefficient of power (a dimensionless value) based on the input values of wind speed [m/s] and turbine power [W].


    Equations

    The calculation of the coefficient of power for wind turbines is described by the equation below:

    C_p = P_turbine/P_wind = P_turbine/(1/2*rho*v_wind^3*(pi*r_turbine^2))


    Implementation

    The parameter values of turbine radius and air density should be set after instantiation of the Cp block. Double-click on the block's icon while in the diagram layer (block diagram view) to open the parameter window and assign these values.


    See Also

    Block to calculate coefficients of power, thrust, and torque: CpCtCq

    Parameters

    NameDescription
    r_turbineTurbine radius (= r_hub + r_blade) [m] [m]
    rhoDensity of air [kg/m^3] [kg/m3]

    Connectors

    NameDescription
    v_windWind velocity field [m/s]
    P_turbineTurbine power output [W]
    CpCoefficient of power, Cp [-]

    CRAFTS.Common.Blocks.Math.Calculate_Ct CRAFTS.Common.Blocks.Math.Calculate_Ct

    Block to calculate the thrust coefficient, Ct

    Information

    This block outputs the coefficient of thrust (a dimensionless value) based on the input values of wind speed [m/s] and turbine thrust [N].


    Equations

    The calculation of the coefficient of thrust for wind turbines is described by the equation below:

    C_T = T/F_dynamic = T/(1/2*rho*v_wind^2*(pi*r_turbine^2))


    Implementation

    The parameter values of turbine radius and air density should be set after instantiation of the Ct block. Double-click on the block's icon while in the diagram layer (block diagram view) to open the parameter window and assign these values.


    See Also

    Block to calculate coefficients of power, thrust, and torque: CpCtCq

    Parameters

    NameDescription
    r_turbineTurbine radius (= r_hub + r_blade) [m] [m]
    rhoDensity of air [kg/m^3] [kg/m3]

    Connectors

    NameDescription
    v_windWind velocity field [m/s]
    Thrust_turbineTurbine thrust [N]
    CtCoefficient of thrust, Ct [-]

    CRAFTS.Common.Blocks.Math.Calculate_Cq CRAFTS.Common.Blocks.Math.Calculate_Cq

    Block to calculate the torque coefficient, Cq

    Information

    This block outputs the coefficient of torque (a dimensionless value) based on the input values of the coefficient of power [-] and tip speed ratio [-].


    Equations

    The calculation of the coefficient of torque for wind turbines is described by the equation below:

    C_q = C_p/lambda

    where Cp is the coefficient of power and lambda is the tip speed ratio. Lambda is defined as:

    lambda = v_tip/v_wind = omega*r/v_wind

    where omega is the angular velocity of the turbine and r is the turbine radius (from the center of the hub to the tip of the blade).


    See Also

    Block to calculate coefficients of power, thrust, and torque: CpCtCq

    Block to calculate the coefficient of power: Calculate_Cp

    Connectors

    NameDescription
    TSRTip speed ratio, lambda [ - ]
    CpCoefficient of power, Cp [ - ]
    CqCoefficient of torque, Cq [ - ]

    CRAFTS.Common.Blocks.Math.CpCtCq CRAFTS.Common.Blocks.Math.CpCtCq

    Block to calculate the power, thrust, and torque coefficients (Cp, Ct, and Cq, respectively)

    Information

    This block calculates the coefficients of power, thrust, and torque (dimensionless values) based on the input values of rotor angular velocity [rad/s], turbine torque [N.m], turbine thrust [N], and wind speed [m/s]. It contains the calculation blocks for Cp, Ct, and Cq. See the documentation of these blocks for the equations used to calculate each of the coefficients. The SampleClocked block can be used to output clocked signals for Cp, Ct, and Cq instead of continuous signals; this option is useful if the coefficients only need to be output intermittently.


    Implementation

    After instantiating the CpCtCq block, its parameters must be set. Open the parameter window and insert values for the turbine radius, air density, and clocked sampling period. The parameters R_hub, R_blade, and R_turbine have default values of 0.01 and samplingPeriod has a default value of 1 for the sole purpose of avoiding translation errors.

    There are 2 options to set the turbine radius. If the boolean Use_R_turbine is enabled, the turbine radius can be typed in the corresponding box. If disabled, the hub radius and blade length should be inserted, which will be summed automatically to find the turbine radius.

    Likewise, the boolean UseClockedSampling will activate or deactivate the clocked sampling of the output coefficients. If enabled, the parameter samplingPeriod should be defined.

    Finally, the value of air density should be defined for the parameter rho.

    Example parameter window with values defined


    See Also

    Block to calculate coefficient of power: Calculate_Cp

    Block to calculate coefficient of thrust: Calculate_Ct

    Block to calculate coefficient of torque: Calculate_Cq

    Parameters

    NameDescription
    Use_R_turbine= true, enter R_turbine instead of R_hub and R_blade.
    R_hubHub radius [m] [m]
    R_bladeBlade radius [m] [m]
    R_turbineTurbine radius [m] [m]
    rhoDensity of air [kg/m^3] [kg/m3]
    Clocked Configuration
    UseClockedSampling= true, output clocked signals
    samplingPeriodInterval at which to sample data points [s] [s]

    Connectors

    NameDescription
    omega_rotorRotor angular velocity [rad/s]
    RotorTorqueRotor torque [N.m]
    RotorThrustRotor thrust [N]
    v_windWind velocity field [m/s]
    CpCoefficient of power, Cp [-]
    CtCoefficient of thrust, Ct [-]
    CqCoefficient of torque, Cq [-]

    CRAFTS.Common.DataRecords

    Information

    This package contains data records to control the parameters of the common blocks and components. Parameters can be read from external data files by selecting preset, provided files or choosing a custom file manually.

    Extends from CRAFTS.Icons.Packages.Records (Icon for Data packages).

    Package Content

    Name Description
    CRAFTS.Common.DataRecords.BodyShapeDataRecord BodyShapeDataRecord Data record to populate parameters of a body shape

    CRAFTS.Common.DataRecords.BodyShapeDataRecord CRAFTS.Common.DataRecords.BodyShapeDataRecord

    Data record to populate parameters of a body shape

    Information

    This data record contains parameters used to populate body shape components, for instance a Rigid Tower or hydrodynamic column structure. Quantities for the geometric and inertia properties are read from a .txt file.

    The parameters must follow the format shown below (the property names must match exactly as specified):

    //==================================================================================================
    // Geometric Properties
    //==================================================================================================
    Rx       = 0.0000;                  // x-coordinate of the body top relative to the base [m]
    Ry       = 0.0000;                  // y-coordinate of the body top relative to the base [m]
    Rz       = 10.0000;                 // z-coordinate of the body top relative to the base [m]
    L        = 10.0000;                 // Length of the body [m]
    AvgOD    = 5.0000;                  // Average outer diameter of the body [m]
    AvgID    = 3.8900;                  // Average inner diameter of the body [m]
    
    //==================================================================================================
    // Inertia Properties
    //==================================================================================================
    M        = 57940.001;               // Mass of the body [kg]
    CMx      = 0.0000;                  // x-coordinate of the center of mass (CM) relative to the body base [m]
    CMy      = 0.0000;                  // y-coordinate of the center of mass (CM) relative to the body base [m]
    CMz      = 5.0000;                  // z-coordinate of the center of mass (CM) relative to the body base [m]
    Ixx      = 595570.457;              // Moment of inertia about the x-axis relative to the body center of mass [kg·m²]
    Iyy      = 595570.457;              // Moment of inertia about the y-axis relative to the body center of mass [kg·m²]
    Izz      = 225474.237;              // Moment of inertia about the z-axis relative to the body center of mass [kg·m²]
    

    Contents

    NameDescription
    Geometric Properties
    Rxx position coordinate relative to base [m]
    Ryy position Coordinate relative to base [m]
    Rzz position coordinate relative to base [m]
    LLength [m]
    DDiameter [m]
    Inertia Properties
    MMass [kg]
    CMxx coordinate of center of mass (CM) relative to base [m]
    CMyy coordinate of center of mass (CM) relative to base [m]
    CMzz coordinate of center of mass (CM) relative to base [m]
    IxxMoment of inertia about x-axis passing through CM [kg.m2]
    IyyMoment of inertia about y-axis passing through CM [kg.m2]
    IzzMoment of inertia about z-axis passing through CM [kg.m2]
    IxyProduct of inertia about x and y axes passing through CM [kg.m2]
    IyzProduct of inertia about y and z axes passing through CM [kg.m2]
    IzxProduct of inertia about z and x axes passing through CM [kg.m2]

    CRAFTS.Common.Utilities

    Information

    This package contains additional classes that are used in CRAFTS's internal functionality. These classes do not support direct interaction in the Diagram Layer; they must be implemented through extension and Modelica code. For this reason, all contents of Utilities should only be utilized by advanced users.

    Extends from Icons.Packages.Utilities (Icon for Utilities packages).

    Package Content

    Name Description
    CRAFTS.Common.Utilities.Interfaces Interfaces I/O connectors
    CRAFTS.Common.Utilities.Functions Functions Auxiliary functions
    CRAFTS.Common.Utilities.Types Types  
    CRAFTS.Common.Utilities.Directory Directory Record to track CRAFTS directories

    CRAFTS.Common.Utilities.Interfaces

    I/O connectors

    Information

    Package containing partial models and connectors to define model interfaces. These standard interfaces allow models to extend from a common partial model and promote compatible replaceability.

    Extends from CRAFTS.Icons.Packages.Interfaces (Icon for packages with interfaces or connectors).

    Package Content

    Name Description
    CRAFTS.Common.Utilities.Interfaces.AngleInput AngleInput Input Connector representing mechanical rotational 1D angle
    CRAFTS.Common.Utilities.Interfaces.AngleOutput AngleOutput Output Connector representing mechanical rotational 1D angle
    CRAFTS.Common.Utilities.Interfaces.NormalizedInput NormalizedInput Input Connector representing any kind of signal that is normalized
    CRAFTS.Common.Utilities.Interfaces.SignalBus SignalBus Bus to connect general input/output signals

    CRAFTS.Common.Utilities.Interfaces.AngleInput CRAFTS.Common.Utilities.Interfaces.AngleInput

    Input Connector representing mechanical rotational 1D angle

    Information

    A Real input connector used for 1D angles in rotational mechanical systems. Extends from Modelica.Units.SI.Angle, so units are in radians but can be chosen to be displayed in degrees.

    Extends from Modelica.Units.SI.Angle.

    CRAFTS.Common.Utilities.Interfaces.AngleOutput CRAFTS.Common.Utilities.Interfaces.AngleOutput

    Output Connector representing mechanical rotational 1D angle

    Information

    A Real output connector used for 1D angles in rotational mechanical systems. Extends from Modelica.Units.SI.Angle, so units are in radians but can be chosen to be displayed in degrees.

    Extends from Modelica.Units.SI.Angle.

    CRAFTS.Common.Utilities.Interfaces.NormalizedInput CRAFTS.Common.Utilities.Interfaces.NormalizedInput

    Input Connector representing any kind of signal that is normalized

    Information

    A Real input connector used for any incoming nondimensional or normalized signal. The signal is unitless, so the connector type is simply "Real."

    Extends from Real.

    Parameters

    NameDescription
    unit 

    CRAFTS.Common.Utilities.Interfaces.SignalBus CRAFTS.Common.Utilities.Interfaces.SignalBus

    Bus to connect general input/output signals

    Information

    This signal bus is an expandable connector, which means the connector can expand to accommodate new signals as they are connected. The bus definition is empty, so it has no attributes by default. See BusUsage for elaboration on using signal buses.

    Implementation

    When using SignalBus as a connector within a model, any desired signal can be connected to the bus. Use a connect statement in the Modelica code or drag a connection in the Diagram Layer, which should provide a pop-up helper window for making connections.

    When a signal is connected to the RotorBus, the bus needs a new sub-variable to receive the signal.

    When making connections to a model that already contains a bus, the connection can be:

    1. drawn/typed directly from the signal source/receiver to the bus, or

    2. another bus can be connected to receive and unpack all the contained signal data.

    CRAFTS.Common.Utilities.Functions

    Auxiliary functions

    Information

    This package contains additional functions that have use throughout the CRAFTS library.

    Extends from CRAFTS.Icons.Packages.Functions (Icon for Functions packages).

    Package Content

    Name Description
    CRAFTS.Common.Utilities.Functions.noDivideByZero noDivideByZero Prevent division by zero
    CRAFTS.Common.Utilities.Functions.readStringParameter readStringParameter Read the value of a string parameter from file

    CRAFTS.Common.Utilities.Functions.noDivideByZero

    Prevent division by zero

    Information

    This function prevents division by zero. If a denominator drops below a sufficiently small value, ε, the function will instead return the quotient of the numerator divided by epsilon.

    Syntax

    y = noDivideByZero(num, den, eps);

    Inputs

    NameDescription
    numNumerator
    denDenominator
    epsSmall epsilon value

    Outputs

    NameDescription
    yQuotient

    CRAFTS.Common.Utilities.Functions.readStringParameter CRAFTS.Common.Utilities.Functions.readStringParameter

    Read the value of a string parameter from file

    Information

    Syntax

    result = readStringParameter(fileName, name);
    

    Description

    This function reads the value of a string parameter from file. The function performs the following actions:

    1. It opens file "fileName" and reads the lines of the file.
    2. In every line, Modelica line comments ("// ... end-of-line") are skipped
    3. If a line consists of "name = expression" and the "name" in this line is identical to the second argument "name" of the function call, the expression is returned as the value of the parameter "name".
    4. The expression can optionally be terminated with a ";".

    Example

    On file "AirfoilData.txt" the following lines might be present:

    // Airfoil data files across aero elements
    airfoil1 = "path/to/file/1"; // Airfoil data file for 1st aerodynamic element
    airfoil2 = "path/to/file/2"; // Airfoil for 2nd aerodynamic element
    

    The function returns the value "path/to/file/2" when called as:

    readStringParameter("AirfoilData.txt", "airfoil2")
    

    Extends from Modelica.Icons.Function (Icon for functions).

    Inputs

    NameDescription
    fileNameName of file
    nameName of parameter

    Outputs

    NameDescription
    resultActual value of parameter on file

    CRAFTS.Common.Utilities.Types

    Information

    Package containing types, mainly to define drop-down menus for file selection.

    Extends from CRAFTS.Icons.Packages.Types (Icon for Types packages).

    Package Content

    Name Description
    CRAFTS.Common.Utilities.Types.Units Units Define any necessary units here

    CRAFTS.Common.Utilities.Types.Units

    Define any necessary units here

    Information

    This package contains custom unit types.

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Common.Utilities.Types.Units.FlexuralRigidity FlexuralRigidity  
    CRAFTS.Common.Utilities.Types.Units.Percent Percent  

    CRAFTS.Common.Utilities.Types.Units.FlexuralRigidity

    Parameters

    NameValue
    quantity"FlexuralRigidity"
    unit"N.m2"

    CRAFTS.Common.Utilities.Types.Units.Percent

    Parameters

    NameValue
    quantity"Percent"
    unit"1"
    displayUnit"1/100"

    CRAFTS.Common.Utilities.Directory

    Record to track CRAFTS directories

    Information

    This record is used to track the relative paths to CRAFTS directories. This is intended to save time when typing long file path strings, as well as reduce manual work in reconfiguring file paths, should they ever change.

    CRAFTS.Icons

    Package of reusable class icons

    Information

    This package contains icons used throughout the CRAFTS Library. The icons are stored in extendable classes to enable simple inheritance of parent icons and reduce wasteful repetition of image data. To use a CRAFTS icon in a new class, simply extend from the desired CRAFTS icon class. For classes that extend from multiple others (e.g. a model that extends from a partial model and an icon class), ensure the icon class is extended last. Icon classes in CRAFTS have no functionality other than storing icon data.


    Author

    Saad: Icon selection and design

    Samuel: Feature design and colors

    Extends from CRAFTS.Icons.Packages.Package (Icon for package backgrounds).

    Package Content

    Name Description
    CRAFTS.Icons.Information Information Icon for general information packages
    CRAFTS.Icons.DataRecord DataRecord Icon for data records
    CRAFTS.Icons.Example Example Icon for Example or Experiment models
    CRAFTS.Icons.ReleaseNotes ReleaseNotes Icon for release notes
    CRAFTS.Icons.Packages Packages  

    CRAFTS.Icons.Information CRAFTS.Icons.Information

    Icon for general information packages

    Information

    This icon indicates classes containing only documentation. For instance, classes in the User's Guide provide information on the content and features of the CRAFTS Library, but provide no functionality.

    CRAFTS.Icons.DataRecord CRAFTS.Icons.DataRecord

    Icon for data records

    Information

    This icon is used in data records, or records whose purpose is to store, read, and assign parameters and their values.

    CRAFTS.Icons.Example CRAFTS.Icons.Example

    Icon for Example or Experiment models

    Information

    This icon indicates classes containing only documentation. For instance, classes in the User's Guide provide information on the content and features of the CRAFTS Library, but provide no functionality.

    CRAFTS.Icons.ReleaseNotes CRAFTS.Icons.ReleaseNotes

    Icon for release notes

    Information

    This icon is used for release notes.

    CRAFTS.Icons.Packages

    Information

    This package contains icons that are used in packages of the CRAFTS Library. It can also be used to inherit the default gray square used for blank package icons.

    Package Content

    Name Description
    CRAFTS.Icons.Packages.Blocks Blocks  
    CRAFTS.Icons.Packages.Math Math Math package icon
    CRAFTS.Icons.Packages.Examples Examples Icon for Examples packages
    CRAFTS.Icons.Packages.Models Models Icon for Models packages
    CRAFTS.Icons.Packages.Components Components Icon for Components packages
    CRAFTS.Icons.Packages.Records Records Icon for Data packages
    CRAFTS.Icons.Packages.Types Types Icon for Types packages
    CRAFTS.Icons.Packages.Functions Functions Icon for Functions packages
    CRAFTS.Icons.Packages.Interfaces Interfaces Icon for packages with interfaces or connectors
    CRAFTS.Icons.Packages.Utilities Utilities Icon for Utilities packages
    CRAFTS.Icons.Packages.TealPackage TealPackage Teal icon outline to indicate ready-to-simulate
    CRAFTS.Icons.Packages.RedPackage RedPackage Red icon outline to indicate internal or restricted usage
    CRAFTS.Icons.Packages.DarkBluePackage DarkBluePackage Dark blue icon outline to indicate ready-to-build models
    CRAFTS.Icons.Packages.LightBluePackage LightBluePackage Light blue icon outline to indicate building blocks
    CRAFTS.Icons.Packages.Package Package Icon for package backgrounds

    CRAFTS.Icons.Packages.Blocks CRAFTS.Icons.Packages.Blocks

    Information

    This icon is used for packages of blocks.

    Extends from LightBluePackage (Light blue icon outline to indicate building blocks).

    CRAFTS.Icons.Packages.Math CRAFTS.Icons.Packages.Math

    Math package icon

    Information

    This icon is used for packages of blocks that perform mathematical computations.

    Extends from LightBluePackage (Light blue icon outline to indicate building blocks).

    CRAFTS.Icons.Packages.Examples CRAFTS.Icons.Packages.Examples

    Icon for Examples packages

    Information

    This icon is used for packages of example models that can be simulated.

    Extends from TealPackage (Teal icon outline to indicate ready-to-simulate).

    CRAFTS.Icons.Packages.Models CRAFTS.Icons.Packages.Models

    Icon for Models packages

    Information

    This icon is used for packages of FOWT subsystem models.

    Extends from DarkBluePackage (Dark blue icon outline to indicate ready-to-build models).

    CRAFTS.Icons.Packages.Components CRAFTS.Icons.Packages.Components

    Icon for Components packages

    Information

    This icon is used for packages of FOWT subsystem components.

    Extends from LightBluePackage (Light blue icon outline to indicate building blocks).

    CRAFTS.Icons.Packages.Records CRAFTS.Icons.Packages.Records

    Icon for Data packages

    Information

    This icon is used for packages of data records.

    Extends from LightBluePackage (Light blue icon outline to indicate building blocks).

    CRAFTS.Icons.Packages.Types CRAFTS.Icons.Packages.Types

    Icon for Types packages

    Information

    This icon is used for packages of types.

    Extends from Icons.Packages.RedPackage (Red icon outline to indicate internal or restricted usage).

    CRAFTS.Icons.Packages.Functions CRAFTS.Icons.Packages.Functions

    Icon for Functions packages

    Information

    This icon is used for packages of functions.

    Extends from Icons.Packages.RedPackage (Red icon outline to indicate internal or restricted usage).

    CRAFTS.Icons.Packages.Interfaces CRAFTS.Icons.Packages.Interfaces

    Icon for packages with interfaces or connectors

    Information

    This icon is used for packages of interfaces (partial models with connectors).

    Extends from Icons.Packages.RedPackage (Red icon outline to indicate internal or restricted usage).

    CRAFTS.Icons.Packages.Utilities CRAFTS.Icons.Packages.Utilities

    Icon for Utilities packages

    Information

    This icon is used for packages of Utilities (advanced classes for internal functionality).

    Extends from Icons.Packages.RedPackage (Red icon outline to indicate internal or restricted usage).

    CRAFTS.Icons.Packages.TealPackage CRAFTS.Icons.Packages.TealPackage

    Teal icon outline to indicate ready-to-simulate

    Information

    This icon is used to add a teal package outline to indicate readymade models with full functionality.

    CRAFTS.Icons.Packages.RedPackage CRAFTS.Icons.Packages.RedPackage

    Red icon outline to indicate internal or restricted usage

    Information

    This icon is used to add a red package outline to indicate restricted classes with advanced or internal functionality.

    CRAFTS.Icons.Packages.DarkBluePackage CRAFTS.Icons.Packages.DarkBluePackage

    Dark blue icon outline to indicate ready-to-build models

    Information

    This icon is used to add a dark blue package outline to indicate usable subsystem-level classes that are not fully configured; these are often used as components in higher-level models.

    CRAFTS.Icons.Packages.LightBluePackage CRAFTS.Icons.Packages.LightBluePackage

    Light blue icon outline to indicate building blocks

    Information

    This icon is used to add a light blue package outline to indicate usable classes that are not fully configured; these are often used as components in higher-level models.

    CRAFTS.Icons.Packages.Package

    Icon for package backgrounds

    Information

    This icon is used to provide a generic gray background to package icons.

    Automatically generated Wed Sep 2 03:06:38 2026.