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 |
|---|---|
| User's Guide | |
| Ready-for-simulation examples | |
| Configured wind turbine system models | |
| Library of hub and blades | |
| Library of nacelle body and inner components | |
| Library of turbine tower models | |
| Library of FOWT controllers | |
| Library of basic enviromental conditions with wind and wave analysis | |
| Classes that are reused throughout CRAFTS | |
| Package of reusable class icons |
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 |
|---|---|
| What is the CRAFTS Library used for? | |
| Overview of Package Structure | |
| Conventions | |
| Help | |
| Contact Info | |
| Release Notes |
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. |
|
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
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.
- Experiments contains models to run prebuilt simulations.
- Assembly contains template models of fully assembled wind turbines.
- 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. - Common contains general-use classes that do not belong in any individual subsystem.
- 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).
- 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.
- 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.
- Blocks are another type of subsystem building block, similar to components. In contrast to the
modelclass in Modelica, theblockclass is causal. - DataRecords are records that import variable values from data files and populate the parameters of the overall model or its contents.
- 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.
- 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.
- Functions contains Modelica functions that support the given subsystem models.
- 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:
- 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. - 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. - 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. - 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
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
[2] IEA Wind Systems GitHub: reference wind turbines
[8] FMI website
[9] GMI GitHub
Extends from CRAFTS.Icons.Information (Icon for general information packages).
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
For additional support, contact the CRAFTS development team: crafts@ucf.edu
CRAFTS.UsersGuide.ReleaseNotes
Information on the history of CRAFTS releases is provided in the following release notes.
CRAFTS Version |
Release Date |
September 1, 2026 |
Extends from CRAFTS.Icons.ReleaseNotes (Icon for release notes).
Package Content
| Name | Description |
|---|---|
| Open source v1.0.0 (September 1, 2026) |
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 |
|---|---|
| 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 |
|---|---|
| Load case 1.1 of FOCAL Campaign 1 | |
| Load case 1.2 of FOCAL Campaign 1 | |
| Load case 1.3 of FOCAL Campaign 1 | |
| Load case 1.4 of FOCAL Campaign 1 |
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:
- Click the "Commands" button in the top-left of the Simulation toolbar.
- Select "Plot CpCtCq"
- 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
| Name | Description |
|---|---|
| signalBus |
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:
- Click the "Commands" button in the top-left of the Simulation toolbar.
- Select "Plot CpCtCq"
- 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
| Name | Description |
|---|---|
| signalBus |
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:
- Click the "Commands" button in the top-left of the Simulation toolbar.
- Select "Plot CpCtCq"
- 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
| Name | Description |
|---|---|
| signalBus |
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:
- Click the "Commands" button in the top-left of the Simulation toolbar.
- Select "Plot CpCtCq"
- 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
| Name | Description |
|---|---|
| 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 |
|---|---|
| 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 |
|---|---|
| Fixed-base IEA 15-MW reference wind turbine |
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
| Name | Description |
|---|---|
| Initialization | |
| rotorSpeed_start | Initial rotor speed [rad/s] |
| Aerodynamics | |
| rho | Density 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 |
| windProfile | Wind profile: (1) Uniform, (2) PL, (3) EXP |
| Tower | |
| NumMBEs | Number of Multibody Beam Elements (MBEs) in the tower |
| EnableForeAftDoF | If false, fore-aft bending degree of freedom for all tower MBEs is disabled |
| EnableSideSideDoF | If false, side-side bending degree of freedom for all tower MBEs is disabled |
| EnableTorsionalDoF | If false, torsional degree of freedom for all tower MBEs is disabled |
| TowerDataFile | Manually select data file, otherwise arbitrary inertia properties will be used |
| Animation | |
| Nacelle | |
| length | Length of nacelle for animation [m] |
| width | Width of nacelle for animation [m] |
| height | Height of nacelle for animation [m] |
| color | Color of nacelle |
Connectors
| Name | Description |
|---|---|
| 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 |
|---|---|
| Blocks used in Rotor models | |
| Hub and Blades library data | |
| 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 |
|---|---|
| Model of hub with 2 or 3 blades |
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 radThe control output signals are:
rotorBus.flapBRBM: vector of flapwise root bending moments of each of the bladesrotorBus.edgeBRBM: vector of edgewise root bending moments of each of the bladesrotorBus.Azimuth: vector of azimuth angles of each of the blades, in radrotorBus.Thrust: aerodynamic thrust force of the rotorrotorBus.Torque: aerodynamic torque of the rotorrotorBus.OmegaRotor: rotor speed, in rad/sTo 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
| Name | Description |
|---|---|
| B | Number of rotor blades |
| N | Number of aerodynamic elements per blade |
| Inflow parameters | |
| refHeight | Reference height (usually hub height), used for PL and EXP wind profiles [m] |
| rho | Density of air in [kg/m^3] [kg/m3] |
| Assembly parameters | |
| towerRadius | Tower radius [m] [m] |
| x_overHang | Horizontal distance from yaw axis to rotor apex [m] [m] |
| Initialization | |
| rotorSpeed | Initial 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 |
| windProfile | Wind profile: (1) Uniform, (2) PL, (3) EXP |
| File Selection | |
| Blade Element Cluster | |
| usePresetStructure | =true, if preset file is desired instead of custom file |
| presetStructure | Select a preset data file |
| customStructure | Select a data file from File Explorer |
| Airfoils | |
| AirfoilData | Select manifest text file pointing to airfoil polar data files |
| Blade | |
| usePresetBlade | =true, if preset file is desired instead of custom file |
| preset_blade | Select a preset data file |
| custom_blade | Select a data file from File Explorer |
| Hub | |
| usePresetHub | =true, if preset file is desired instead of custom file |
| preset_hub | Select a preset data file |
| custom_hub | Select a data file from File Explorer |
Connectors
| Name | Description |
|---|---|
| rotorApexFrame | Frame to nacelle |
| shaftFlange | Flange to nacelle |
| v_wind_global[3] | Global wind velocity [m/s] |
| nacelle_tilt | Tilt of nacelle w.r.t tower top [rad] |
| rotorBus | Bus 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 |
|---|---|
| Rigid blade model with aerodynamic element sensors | |
| Aerodynamics model of one blade element |
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
| Name | Description |
|---|---|
| N | Number of aerodynamic elements |
| Blade Aerodynamics | |
| noAero | = true, if no aerodynamic forces/torques are desired |
| Aerodynamics | |
| towerPotential | = true, compute tower's potential on wind |
| windProfile | Wind profile: (1) Uniform, (2) PL, (3) EXP |
| rho | Density 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 | |
| refHeight | Reference height (usually hub height), used for PL and EXP wind profiles [m] |
| B | Number of blades [-] |
| towerRadius | Tower radius [m] [m] |
| x_overHang | Horizontal distance from yaw axis to rotor apex [m] [m] |
| hubRadius | Radius of hub [m] [m] |
| File Selection | |
| Blade Structure | |
| usePresetStructure | =true, if preset file is desired instead of custom file |
| presetStructure | Select a preset data file |
| customStructure | Select a data file from File Explorer |
| Airfoils | |
| AirfoilData | Select manifest text file pointing to airfoil polar data files |
| Blade | |
| usePresetBlade | =true, if preset file is desired instead of custom file |
| preset_blade | Select a preset data file |
| custom_blade | Select a data file from File Explorer |
Connectors
| Name | Description |
|---|---|
| flapBRBM | Flapwise blade Root Bending Moment [N.m] |
| edgeBRBM | Edgewise blade root bending moment [N.m] |
| windVel[3] | Wind velocity (m/s) |
| nacelle_tilt | Tilt of nacelle w.r.t tower top [rad] |
| Blade_Pitch | Blade pitch (rad) |
| frame_a | Frame to hub |
| bladeAzimuth | Blade azimuth angle [rad] |
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
| Name | Description |
|---|---|
| Input File | |
| AirfoilData | Select manifest text file pointing to airfoil polar data files |
| Input Files | |
| usePresetStructure | =true, if preset file is desired instead of custom file |
| presetStructure | Select a preset blade structure data file |
| customStructure | Select a blade structure data file from File Explorer |
| Aerodynamic Element Parameters | |
| N | Number 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 |
| rho | Density of air, in [kg/m^3] |
| windProfile | Wind profile: (1) Uniform, (2) PL, (3) EXP |
| Wind Turbine Parameters | |
| refHeight | Reference height (usually hub height), used for PL and EXP wind profiles [m] |
| B | Number of blades [-] |
| towerRadius | Tower radius [m] [m] |
| x_overHang | Horizontal distance from yaw axis to rotor apex [m] [m] |
| hubRadius | Radius of hub [m] [m] |
| Blade Parameters | |
| S_blade | Total blade span [m] |
Connectors
| Name | Description |
|---|---|
| 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 |
|---|---|
| Computes element aerodynamic forces and induction factors |
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 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
| Name | Description |
|---|---|
| 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 |
| rho | Density of air in [kg/m^3] [kg/m3] |
| windProfile | Wind profile: (1) Uniform, (2) PL, (3) EXP |
| Optional Parameters | |
| disableElement | = true, to disable blade element (i.e. no force/moment contribution) |
| Wind Turbine Parameters | |
| refHeight | Reference height (usually hub height), used for PL and EXP wind profiles [m] |
| B | Number of blades [-] |
| towerRadius | Tower radius [m] [m] |
| x_overHang | Horizontal distance from yaw axis to rotor apex [m] [m] |
| hubRadius | Radius of hub [m] [m] |
| Blade Element Parameters | |
| r | Radial distance of element from blade root [m] [m] |
| A | Area of blade element [m^2] [m2] |
| S_blade | Blade length [m] [m] |
| c_blade | Chord length [m] [m] |
| local_twist | Local aerodynamic twist of blade [deg] [deg] |
| airfoilFile | Select a data file from File Explorer |
Connectors
| Name | Description |
|---|---|
| windVel_local[3] | Wind velocity components in local frame, Vx, Vy, Vz, in that order [m/s] |
| elementHeight | Element'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 |
|---|---|
| Rotor hub data | |
| Turbine blade data | |
| Structural properties of blade across span | |
| Coefficients of lift and drag data |
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
| Name | Description |
|---|---|
| Geometric properties | |
| D_hub | Diameter of hub [m] |
| r_cm_x | C.o.M location from frame a in x direction [m] |
| r_cm_y | C.o.M location from frame a in y direction [m] |
| r_cm_z | C.o.M location from frame a in z direction [m] |
| Inertial properties | |
| m_hub | Mass of the hub [kg] |
| I_xx_hub | Hub 2nd mass moment of inertia w.r.t x axis [kg.m2] |
| I_yy_hub | Hub 2nd mass moment of inertia w.r.t y axis [kg.m2] |
| I_zz_hub | Hub 2nd mass moment of inertia w.r.t z axis [kg.m2] |
| I_xy_hub | Hub x-y product of inertia [kg.m2] |
| I_xz_hub | Hub x-z product of inertia [kg.m2] |
| I_yz_hub | Hub y-z product of inertia [kg.m2] |
| File Selection | |
| usePreset | =true, if preset file is desired instead of custom file |
| preset | Select a preset data file |
| custom | Select a data file from File Explorer |
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
| Name | Description |
|---|---|
| Material/Geometric properties | |
| S_blade | Total span of blade [m] |
| m | Blade mass [kg] |
| blade_cm | Blade C.M. w.r.t root along axis [m] |
| I_xx | Blade inertia w.r.t root [kg.m2] |
| I_yy | Blade inertia w.r.t root [kg.m2] |
| I_zz | Blade inertia w.r.t root [kg.m2] |
| I_xy | Blade inertia w.r.t root [kg.m2] |
| I_xz | Blade inertia w.r.t root [kg.m2] |
| I_yz | Blade inertia w.r.t root [kg.m2] |
| File Selection | |
| usePreset | =true, if preset file is desired instead of custom file |
| preset | Select a preset data file |
| custom | Select a data file from File Explorer |
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
| Name | Description |
|---|---|
| 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 |
| preset | Select a preset data file |
| custom | Select a data file from File Explorer |
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
| Name | Description |
|---|---|
| File Selection | |
| file | Select 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 |
|---|---|
| Base/partial models | |
| Functions for aerodynamics and the rotor | |
| 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 |
|---|---|
| Partial rotor model interface | |
| Partial model of rigid blade with interface | |
| Partial model of blade element with interface | |
| Partial model defining the interface for aerodynamic element | |
| Bus to connect rotor input/output signals |
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
| Name | Description |
|---|---|
| B | Number of rotor blades |
Connectors
| Name | Description |
|---|---|
| rotorApexFrame | Frame to nacelle |
| shaftFlange | Flange to nacelle |
| v_wind_global[3] | Global wind velocity [m/s] |
| nacelle_tilt | Tilt of nacelle w.r.t tower top [rad] |
| rotorBus | Bus for control I/O signals |
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
| Name | Description |
|---|---|
| flapBRBM | Flapwise blade Root Bending Moment [N.m] |
| edgeBRBM | Edgewise blade root bending moment [N.m] |
| windVel[3] | Wind velocity (m/s) |
| nacelle_tilt | Tilt of nacelle w.r.t tower top [rad] |
| Blade_Pitch | Blade pitch (rad) |
| frame_a | Frame to hub |
| bladeAzimuth | Blade azimuth angle [rad] |
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
| Name | Description |
|---|---|
| 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
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
| Name | Description |
|---|---|
| windVel_local[3] | Wind velocity components in local frame, Vx, Vy, Vz, in that order [m/s] |
| elementHeight | Element'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
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 |
|---|---|
| Updated IF based on CCBLADE by NREL | |
| C code version of induction factor calculation | |
| C code version of induction factor calculation | |
| 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
| Name | Description |
|---|---|
| Vwind_x | Upstream wind velcotiy |
| Vwind_y | Blade linear speed at radius r |
| local_twist | |
| be | Local blade twist angle, blade pitch [deg] |
| AoA_data[:, :] | |
| CL_data[:, :] | |
| CD_data[:, :] | Airfoil data for interpolation |
| sigma | |
| B | Rotor solidity, number of blades |
| S_blade | Total blade length |
| r | Local blade radius (r=0 at root, r=S_blade at tip) |
| R_hub | Hub radius |
| tipLoss | Tip loss ON/OFF toggle |
| hubLoss | Hub loss ON/OFF toggle |
Outputs
| Name | Description |
|---|---|
| a | |
| ap | Axial induction factor (a), Tangential induction factor (a') |
| CN | |
| CT | Normal/thrust, Tangential/torque force coeff. |
| phi | |
| AoA_deg | Inflow angle [rad], Angle of attack [deg] |
| CL | |
| CD | Interpolated coeff. of lift and drag |
| N_Iter | Number 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
Inputs
| Name | Description |
|---|---|
| Vwind_x | Upstream wind velcotiy |
| Vwind_y | Blade linear speed at radius r |
| local_twist | |
| be | Local blade twist angle [deg] |
| AoA_data[:, :] | |
| CL_data[:, :] | |
| CD_data[:, :] | Airfoil data for interpolation |
| sigma | |
| B | Rotor solidity, number of blades |
| S_blade | Total blade length |
| r | Local blade radius (r=0 at root, r=S_blade at tip) |
| R_hub | Hub radius |
| tipLoss | Tip loss ON/OFF toggle |
| hubLoss | Hub loss ON/OFF toggle |
Outputs
| Name | Description |
|---|---|
| a | |
| ap | Axial induction factor (a), Tangential induction factor (a') |
| CN | |
| CT | Normal/thrust, Tangential/torque force coeff. |
| phi | |
| AoA_deg | Inflow angle [rad], Angle of attack [deg] |
| CL | |
| CD | Interpolated coeff. of lift and drag |
| N_Iter | Number 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
Inputs
| Name | Description |
|---|---|
| Vwind_x | Upstream wind velcotiy |
| Vwind_y | Blade linear speed at radius r |
| local_twist | |
| be | Local blade twist angle [deg] |
| AoA_data[:, :] | |
| CL_data[:, :] | |
| CD_data[:, :] | Airfoil data for interpolation |
| sigma | |
| B | Rotor solidity, number of blades |
| S_blade | Total blade length |
| r | Local blade radius (r=0 at root, r=S_blade at tip) |
| R_hub | Hub radius |
| tipLoss | Tip loss ON/OFF toggle |
| hubLoss | Hub loss ON/OFF toggle |
Outputs
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| V_ref[3] | Reference wind speed at hub height [m/s] [m/s] |
| a | Tower radius [m] [m] |
| x_overHang | Horizontal distance from yaw axis to rotor apex [m] [m] |
| r | Radial distance from rotor axis [m] [m] |
| azimuth | Blade azimuthal angle [rad] [rad] |
| tilt | Nacelle tilt angle [rad] [rad] |
Outputs
| Name | Description |
|---|---|
| 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 |
|---|---|
| Choice of available blades | |
| Choice of available hubs | |
| Choice of available blade structural properties | |
| Enumeration for number of supported rotor blades |
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
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
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
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 |
|---|---|
| Models of the nacelle subsystem | |
| Components within the nacelle subsystem | |
| Data records for the nacelle subsystem | |
| 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 |
|---|---|
| Model of nacelle body, drivetrain, and power output |
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
| Name | Description |
|---|---|
| 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_preset | Select a preset data file |
| nacelle_custom | Select a data file from File Explorer |
| Animation | |
| length | Length of nacelle [m] |
| width | Width of nacelle [m] |
| height | Height of nacelle [m] |
| color | Color of nacelle |
Connectors
| Name | Description |
|---|---|
| towerTopFrame | Frame to tower top |
| shaftFlange | Flange to rotor drive shaft |
| generatorFlange | Flange to generator |
| rotorApexFrame | Frame to rotor |
| TurbinePower | Turbine power output [W] |
| nacelle_tilt | Tilt 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 |
|---|---|
| Gearbox assembly or direct drive shaft |
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:

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
| Name | Description |
|---|---|
| Gearbox | |
| directDrive | = true, no gearbox present; LS shaft directly connected to generator |
| gb_ratio | Gearbox ratio |
| Low-speed shaft | |
| I_ls_shaft | Mass inertia of low speed shaft [kg.m2] |
| High-speed shaft | |
| I_hs_shaft | Mass inertia of high speed shaft [kg.m2] |
Connectors
| Name | Description |
|---|---|
| flange_a | Low speed side flange, to connect to hub |
| flange_b | High speed side flange, to connect to generator |
| frame_a | Fixture mounted in nacelle |
| PowerFlow | Power 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 |
|---|---|
| Nacelle data |
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
| Name | Description |
|---|---|
| Nacelle properties | |
| m_nacelle | Mass of nacelle body [kg] |
| cm_nacelle_x | Nacelle C.M. in the x-dir [m] |
| cm_nacelle_y | Nacelle C.M. in the y-dir [m] |
| cm_nacelle_z | Nacelle C.M. in the z-dir [m] |
| I_xx | Mass moment of inertia about x-axis [kg.m2] |
| I_yy | Mass moment of inertia about y-axis [kg.m2] |
| I_zz | Mass moment of inertia about z-axis [kg.m2] |
| I_xy | x-y product of inertia [kg.m2] |
| I_xz | x-z product of inertia [kg.m2] |
| I_yz | y-z product of inertia [kg.m2] |
| overhang | Distance along shaft from yaw axis to rotor apex [m] |
| Twr2Shft | Vertical distance from tower-top to rotor apex [m] |
| tilt | Nacelle tilt about y-axis [deg] [deg] |
| Gearbox parameters | |
| gb_ratio | Gearbox ratio |
| Low-speed shaft properties | |
| I_ls_shaft | Mass inertia of low speed shaft [kg.m2] |
| High-speed shaft properties | |
| I_hs_shaft | Mass inertia of high speed shaft [kg.m2] |
| File Selection | |
| usePreset | =true, if preset file is desired instead of custom file |
| preset | Select a preset data file |
| custom | Select 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 |
|---|---|
| Partial models and connectors for nacelle subsystem | |
| 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 |
|---|---|
| Base nacelle model | |
| Base drivetrain model |
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
| Name | Description |
|---|---|
| towerTopFrame | Frame to tower top |
| shaftFlange | Flange to rotor drive shaft |
| generatorFlange | Flange to generator |
| rotorApexFrame | Frame to rotor |
| TurbinePower | Turbine power output [W] |
| nacelle_tilt | Tilt of nacelle w.r.t tower top [rad] |
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
| Name | Description |
|---|---|
| Gearbox | |
| directDrive | = true, no gearbox present; LS shaft directly connected to generator |
Connectors
| Name | Description |
|---|---|
| flange_a | Low speed side flange, to connect to hub |
| flange_b | High speed side flange, to connect to generator |
| frame_a | Fixture mounted in nacelle |
| PowerFlow | Power 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 |
|---|---|
| Choice of available nacelles |
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 |
|---|---|
| Models of the tower subsystem | |
| Components within the tower subsystem | |
| Contains data records for the towers in the library | |
| 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 |
|---|---|
| A rigid tower model |
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
| Name | Description |
|---|---|
| Discretization | |
| NumMBEs | Number of Multibody Beam Elements (MBEs) in the tower |
| Tower Properties | |
| TowerDataFile | Manually select data file, otherwise arbitrary inertia properties will be used |
| Wiring Properties (Optional) | |
| Wiring | If true, wiring is modeled as separate rigid bodies attached to tower bodies within MBEs |
| WiringAnimation | if true, animation of the wiring will be enabled |
| WiringDataFile | Manually select data file, otherwise arbitrary wiring mass properties will be used |
Connectors
| Name | Description |
|---|---|
| TowerTopInterface | Interface that connects the tower top to the RNA |
| TowerBaseInterface | Frame 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 |
|---|---|
| A rigid multibody beam element of a tower | |
| Wiring modeled as a rigid body with lumped mass and inertia |
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
| Name | Description |
|---|---|
| Wiring (Optional) | |
| WiringElement | if true, wiring is modeled as rigid bodies attached to each tower body in the MBE |
| WiringAnimation | if 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
| Name | Description |
|---|---|
| TowerMBETop | Frame that connects the tower MBE to the structure/component above |
| TowerMBEBottom | Frame that connects the tower MBE to the structure/component below |
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
| Name | Description |
|---|---|
| Mass Properties | |
| r_CM[3] | Vector from frame_a to center of mass, resolved in frame_a [m] |
| m | Mass of wiring element [kg] |
| Inertia Tensor Elements | |
| Ixx | Element (1,1) of inertia tensor of the wiring element [kg.m2] |
| Iyy | Element (2,2) of inertia tensor of the wiring element [kg.m2] |
| Izz | Element (3,3) of inertia tensor of the wiring element [kg.m2] |
| Ixy | Element (2,1) of inertia tensor of the wiring element [kg.m2] |
| Izx | Element (3,1) of inertia tensor of the wiring element [kg.m2] |
| Izy | Element (3,2) of inertia tensor of the wiring element [kg.m2] |
| Animation Parameters | |
| WiringAnimation | = true, if animation shall be enabled (show wiring) |
Connectors
| Name | Description |
|---|---|
| WiringInterface | Interface 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 |
|---|---|
| Structural properties of a tower | |
| Geometric and inertia properties of wiring |
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
| Name | Description |
|---|---|
| DataFile | Choose a default tower property file |
| file | Manually select data file, overrides the default file choice above |
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
| Name | Description |
|---|---|
| Wiring | If true, wiring elements are considered as rigid bodies separate from tower elements |
| dataFile | Choose a preset wiring property file |
| file | Manually 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 |
|---|---|
| Infrastructure of models in the tower library | |
| 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 |
|---|---|
| Partial model of a turbine tower |
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
| Name | Description |
|---|---|
| TowerTopInterface | Interface that connects the tower top to the RNA |
| TowerBaseInterface | Frame 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 |
|---|---|
| Selector with drop-down menu for number of MBEs in a structural model | |
| Choice of default data files for a tower model | |
| Choice of default files for wiring components |
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
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
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 |
|---|---|
| Contains various Control algorithm models | |
| Contains Components of each control algorithm | |
| Contains data records for the controllers in the library | |
| 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 |
|---|---|
| Controller to assist in Cp-Lambda curve generation | |
| Control Algorithm for rotor speed and power regulation |
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
| Name | Description |
|---|---|
| gb_ratio | Gearbox ratio |
| eta | |
| k_p | Proportional gain |
| k_i | Integral gain |
| w_d |
Connectors
| Name | Description |
|---|---|
| Rotor_speed | Acting rotor speed |
| Generator_torque | Generator torque actuation |
| Rotor_torque | Acting rotor torque [N.m] |
| Ref_speed | Reference rotor speed [rpm] |
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
| Name | Description |
|---|---|
| File Selection | |
| usePreset | if true, parameters from preset file used instead of custom file |
| preset | Select a preset data file |
| custom | Select a data file from File Explorer |
Connectors
| Name | Description |
|---|---|
| omega_rotor | Current rotor speed [rad/s] |
| gb_ratio | Gearbox ratio |
| T_generator | Generator 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
Information
This package contains components of the NonlinearController. These are models which are used in the formation of the overall controller model.
Contains:
Actuates generator torque in regime 2 |
|
Actuates generator torque in regime 3 |
|
Calculates rotor speed switching point |
|
Determines the switching point between regime 2 and 3 |
|
Resets the collective pitch angle when the control algorithm transitions from Regime 3 to Regime 2 |
|
Adjusts the collective blade pitch |
|
Determines when Regime 3 blade pitch modulation is disabled |
Package Content
| Name | Description |
|---|---|
| Regime 2 torque control | |
| Regime 3 torque control | |
| Rotor switching speed calculation | |
| Condition for transitioning between regime-2 and 3 | |
| Modified regime 2 control | |
| Regime-3 pitch control |
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:

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

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
| Name | Description |
|---|---|
| Kt | Kt value tracking Optimum tip speed ratio |
Connectors
| Name | Description |
|---|---|
| Rotor_speed | Acting rotor speed [rad/s] |
| GR | Gearbox ratio |
| T_g | Generator torque actuation [N.m] |
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:

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:

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
| Name | Description |
|---|---|
| Ulow | Lower limit of switching condition (rad/s) |
| Uhigh | Upper limit of switching condition (rad/s) |
| Pref | Rated power (W) |
| Kgain | Gain value (W.s/rad) |
Connectors
| Name | Description |
|---|---|
| Rotor_speed | Acting rotor speed [rad/s] |
| GR | Gearbox ratio |
| T_g | Generator torque actuation [N.m] |
| Offset | Offset from rated rotor speed [rad/s] |
| switching_logic | Switching logic between regime-2 and 3 |
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:
Here, P_ref and K_t are rated reference power and tip speed ratio tracking constant.
Parameters
| Name | Description |
|---|---|
| Pref | Reference rated power |
| RswKt | Kt Value for rotor switching speed |
Connectors
| Name | Description |
|---|---|
| omega_sw | Controller switching rotor speed |
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
| Name | Description |
|---|---|
| UlowHysteresis | Lower Limit of Hysteresis Block |
| UhighHysteresis | Higher limit of hysteresis block |
Connectors
| Name | Description |
|---|---|
| Rotor_speed | Current rotor speed [rad/s] |
| True3_False2 | Determines whether to control in regime-2 or 3 |
| omega_r_sw | Switching rotor speed |
| Offset | offset in rotor speed from switching rotor speed |
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
| Name | Description |
|---|---|
| LowerBeta | Lower limit of blade pitch |
| Kp2Pitch | Proportional gain of Regime-2 blade pitch |
Connectors
| Name | Description |
|---|---|
| beta_crnt | Current blade pitch angle |
| beta | Blade pitch actuation |
| u | Switching logic between regime-2 and 3 |
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
| Name | Description |
|---|---|
| LowerBeta | Lower limit for blade pitch |
| Kp3Pitch | Proportional gain for regime-3 blade pitch |
| Ki3Pitch | Integral gain for regime-3 blade pitch |
| UpperBeta | upper Limit of blade pitch |
Connectors
| Name | Description |
|---|---|
| omega_rotor | Current rotor speed[rad/s] |
| omega_sw | Switching rotor speed[rad/s] |
| beta | Blade pitch actuation[rad] |
| beta_crnt | Current blade pitch angle[rad] |
| u | Switching 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 |
|---|---|
| Stores parameters of the nonlinear controller |
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
| Name | Description |
|---|---|
| Universal Parameters | |
| Pref | Reference rated Power |
| Regime transition | |
| UlowHysteresis | Lower limit of hysteresis block |
| UhighHysteresis | Higher limit of hysteresis block |
| Torque controller | |
| Kt | Kt value of regime-2 torque controller |
| R3TorqueKgain | Gain value of regime-3 torque controller |
| TorqueMin | Minimum torque commanded |
| TorqueMax | Maximum torque commanded |
| TorqueMinRate | Minimum torque rate |
| TorqueMaxRate | Maximum torque rate |
| Blade pitch controller | |
| Kp2Pitch | Proportional gain for regime-2 pitch controller |
| Kp3Pitch | Proportional gain for regime-3 pitch controller |
| Ki3Pitch | Integral gain for regime-3 pitch controller |
| LowerBeta | Lower threshold of pitch actuation |
| UpperBeta | Upper threshold of pitch actuation |
| BetaMinRate | Minimum pitch rate |
| BetaMaxRate | Maximum pitch rate |
| File Selection | |
| usePreset | if true, parameters from preset file used instead of custom file |
| preset | Select a preset data file |
| custom | Select 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 |
|---|---|
| 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 |
|---|---|
| Choice of default parameters for a nonlinear controller |
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 |
|---|---|
| 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 |
|---|---|
| Available functions to generate environmental conditions | |
| 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 |
|---|---|
| Compute wind shear based on logarithmic | |
| 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
| Name | Description |
|---|---|
| V_ref[3] | Reference wind speed [m/s] |
| H_ref | Height of the reference wind speed [m] |
| z | Current element height [m] |
Outputs
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| V_ref[3] | Reference wind speed [m/s] |
| Z_hub | Height of the reference wind speed [m] |
| z | Current element height [m] |
Outputs
| Name | Description |
|---|---|
| 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 |
|---|---|
| Choice of available wind profile inputs |
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 |
|---|---|
| Mathematical operations | |
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 |
|---|---|
| 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 |
|---|---|
| Output the power to a base of the input | |
| Output the difference of the two inputs | |
| Block to calculate the power coefficient, Cp | |
| Block to calculate the thrust coefficient, Ct | |
| Block to calculate the torque coefficient, Cq | |
| Block to calculate the power, thrust, and torque coefficients (Cp, Ct, and Cq, respectively) |
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:

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
| Name | Description |
|---|---|
| u | Power to which (x) is raised to |
| x | Base |
| y | Output of x^u |
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
| Name | Description |
|---|---|
| k1 | Gain of input signal 1 |
| k2 | Gain of input signal 2 |
Connectors
| Name | Description |
|---|---|
| u1 | Minuend (positive) |
| u2 | Subtrahend (negative) |
| y | Connector of Real output signal |
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:

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
| Name | Description |
|---|---|
| r_turbine | Turbine radius (= r_hub + r_blade) [m] [m] |
| rho | Density of air [kg/m^3] [kg/m3] |
Connectors
| Name | Description |
|---|---|
| v_wind | Wind velocity field [m/s] |
| P_turbine | Turbine power output [W] |
| Cp | Coefficient of power, Cp [-] |
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:

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
| Name | Description |
|---|---|
| r_turbine | Turbine radius (= r_hub + r_blade) [m] [m] |
| rho | Density of air [kg/m^3] [kg/m3] |
Connectors
| Name | Description |
|---|---|
| v_wind | Wind velocity field [m/s] |
| Thrust_turbine | Turbine thrust [N] |
| Ct | Coefficient of thrust, Ct [-] |
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:

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

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
| Name | Description |
|---|---|
| TSR | Tip speed ratio, lambda [ - ] |
| Cp | Coefficient of power, Cp [ - ] |
| Cq | Coefficient of torque, Cq [ - ] |
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
| Name | Description |
|---|---|
| Use_R_turbine | = true, enter R_turbine instead of R_hub and R_blade. |
| R_hub | Hub radius [m] [m] |
| R_blade | Blade radius [m] [m] |
| R_turbine | Turbine radius [m] [m] |
| rho | Density of air [kg/m^3] [kg/m3] |
| Clocked Configuration | |
| UseClockedSampling | = true, output clocked signals |
| samplingPeriod | Interval at which to sample data points [s] [s] |
Connectors
| Name | Description |
|---|---|
| omega_rotor | Rotor angular velocity [rad/s] |
| RotorTorque | Rotor torque [N.m] |
| RotorThrust | Rotor thrust [N] |
| v_wind | Wind velocity field [m/s] |
| Cp | Coefficient of power, Cp [-] |
| Ct | Coefficient of thrust, Ct [-] |
| Cq | Coefficient 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 |
|---|---|
| Data record to populate parameters of a body shape |
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
| Name | Description |
|---|---|
| Geometric Properties | |
| Rx | x position coordinate relative to base [m] |
| Ry | y position Coordinate relative to base [m] |
| Rz | z position coordinate relative to base [m] |
| L | Length [m] |
| D | Diameter [m] |
| Inertia Properties | |
| M | Mass [kg] |
| CMx | x coordinate of center of mass (CM) relative to base [m] |
| CMy | y coordinate of center of mass (CM) relative to base [m] |
| CMz | z coordinate of center of mass (CM) relative to base [m] |
| Ixx | Moment of inertia about x-axis passing through CM [kg.m2] |
| Iyy | Moment of inertia about y-axis passing through CM [kg.m2] |
| Izz | Moment of inertia about z-axis passing through CM [kg.m2] |
| Ixy | Product of inertia about x and y axes passing through CM [kg.m2] |
| Iyz | Product of inertia about y and z axes passing through CM [kg.m2] |
| Izx | Product 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 |
|---|---|
| I/O connectors | |
| Auxiliary functions | |
| 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 |
|---|---|
| Input Connector representing mechanical rotational 1D angle | |
| Output Connector representing mechanical rotational 1D angle | |
| Input Connector representing any kind of signal that is normalized | |
| Bus to connect general input/output signals |
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
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
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
| Name | Description |
|---|---|
| unit |
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 |
|---|---|
| Prevent division by zero | |
| 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
| Name | Description |
|---|---|
| num | Numerator |
| den | Denominator |
| eps | Small epsilon value |
Outputs
| Name | Description |
|---|---|
| y | Quotient |
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:
- It opens file "fileName" and reads the lines of the file.
- In every line, Modelica line comments ("// ... end-of-line") are skipped
- 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".
- 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
| Name | Description |
|---|---|
| fileName | Name of file |
| name | Name of parameter |
Outputs
| Name | Description |
|---|---|
| result | Actual 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 |
|---|---|
| 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
Parameters
| Name | Value |
|---|---|
| quantity | "FlexuralRigidity" |
| unit | "N.m2" |
CRAFTS.Common.Utilities.Types.Units.Percent
Parameters
| Name | Value |
|---|---|
| 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 |
|---|---|
| Icon for general information packages | |
| Icon for data records | |
| Icon for Example or Experiment models | |
| Icon for release notes | |
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
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
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
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 |
|---|---|
| Math package icon | |
| Icon for Examples packages | |
| Icon for Models packages | |
| Icon for Components packages | |
| Icon for Data packages | |
| Icon for Types packages | |
| Icon for Functions packages | |
| Icon for packages with interfaces or connectors | |
| Icon for Utilities packages | |
| Teal icon outline to indicate ready-to-simulate | |
| Red icon outline to indicate internal or restricted usage | |
| Dark blue icon outline to indicate ready-to-build models | |
| Light blue icon outline to indicate building blocks | |
| Icon for package backgrounds |
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
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
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
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
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
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
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
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
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
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
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
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
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
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.

