/home/runner/work/kynema/kynema/kynema/src/interfaces/components/turbine_builder.hpp Source File

Kynema API: /home/runner/work/kynema/kynema/kynema/src/interfaces/components/turbine_builder.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
turbine_builder.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <vector>
5
6#include "beam_builder.hpp"
7#include "turbine_input.hpp"
8
10
11class Turbine;
12
15public:
16 TurbineBuilder() = default;
17
22 [[nodiscard]] const TurbineInput& Input();
23
29 [[nodiscard]] Turbine Build(Model& model);
30
31 //--------------------------------------------------------------------------
32 // Build components
33 //--------------------------------------------------------------------------
34
40 [[nodiscard]] components::BeamBuilder& Blade(size_t blade_index);
41
46 [[nodiscard]] components::BeamBuilder& Tower();
47
54 TurbineBuilder& SetYawBearingInertiaMatrix(const std::array<std::array<double, 6>, 6>& matrix);
55
61 TurbineBuilder& SetHubInertiaMatrix(const std::array<std::array<double, 6>, 6>& matrix);
62
70 const std::array<std::array<double, 6>, 6>& matrix, const std::array<double, 3>& cm_offset
71 );
72
73 //--------------------------------------------------------------------------
74 // Build geometric configuration of the turbine
75 //--------------------------------------------------------------------------
76
82 TurbineBuilder& SetTowerBasePosition(const std::array<double, 7>& position);
83
91
99
105 TurbineBuilder& SetRotorApexToHub(double distance);
106
112 TurbineBuilder& SetHubDiameter(double diameter);
113
114 //--------------------------------------------------------------------------
115 // Build initial operating conditions of the turbine
116 //--------------------------------------------------------------------------
117
123 TurbineBuilder& SetShaftTiltAngle(double angle);
124
130 TurbineBuilder& SetNacelleYawAngle(double angle);
131
137 TurbineBuilder& SetConeAngle(double angle);
138
144 TurbineBuilder& SetBladePitchAngle(double angle);
145
151 TurbineBuilder& SetAzimuthAngle(double angle);
152
158 TurbineBuilder& SetRotorSpeed(double speed);
159
165 TurbineBuilder& SetGearBoxRatio(double ratio);
166
172 TurbineBuilder& SetGeneratorEfficiency(double efficiency);
173
179 TurbineBuilder& SetGeneratorPower(double power);
180
186 TurbineBuilder& SetHubWindSpeed(double speed);
187
188private:
189 TurbineInput input;
190 std::vector<BeamBuilder> blade_builders;
191 BeamBuilder tower_builder;
192};
193
194} // namespace kynema::interfaces::components
Struct to define the connectivity structure of elements, nodes, and constraints defining an Kynema pr...
Definition model.hpp:74
Builder class for creating Blade objects.
Definition beam_builder.hpp:29
Builder class for creating Turbine objects with a fluent interface pattern.
Definition turbine_builder.hpp:14
TurbineBuilder & SetBladePitchAngle(double angle)
Set the initial blade pitch angle (radians)
Definition turbine_builder.cpp:102
TurbineBuilder & SetHubDiameter(double diameter)
Set the hub diameter (meters)
Definition turbine_builder.cpp:82
TurbineBuilder & SetConeAngle(double angle)
Set the initial cone angle (radians)
Definition turbine_builder.cpp:97
TurbineBuilder & SetTowerBasePosition(const std::array< double, 7 > &position)
Set the position of the tower base node.
Definition turbine_builder.cpp:62
TurbineBuilder & SetYawBearingInertiaMatrix(const std::array< std::array< double, 6 >, 6 > &matrix)
Set the yaw bearing inertia matrix (6x6)
Definition turbine_builder.cpp:38
TurbineBuilder & SetGeneratorEfficiency(double efficiency)
Set the generator efficiency.
Definition turbine_builder.cpp:122
TurbineBuilder & SetGeneratorPower(double power)
Set the generator power.
Definition turbine_builder.cpp:127
TurbineBuilder & SetAzimuthAngle(double angle)
Set the azimuth angle (radiams)
Definition turbine_builder.cpp:107
components::BeamBuilder & Blade(size_t blade_index)
Get reference to builder for a specific blade.
Definition turbine_builder.cpp:25
TurbineBuilder & SetTowerAxisToRotorApex(double distance)
Set the distance from tower axis to hub i.e. distance from tower axis -> rotor apex (meters)
Definition turbine_builder.cpp:67
TurbineBuilder & SetHubInertiaMatrix(const std::array< std::array< double, 6 >, 6 > &matrix)
Set the hub inertia matrix (6x6)
Definition turbine_builder.cpp:46
components::BeamBuilder & Tower()
Get reference to builder for the tower.
Definition turbine_builder.cpp:33
TurbineBuilder & SetGearBoxRatio(double ratio)
Set the gear box ratio.
Definition turbine_builder.cpp:117
const TurbineInput & Input()
Get the current turbine input configuration.
Definition turbine_builder.cpp:7
TurbineBuilder & SetShaftTiltAngle(double angle)
Set the shaft tilt angle (degrees)
Definition turbine_builder.cpp:87
TurbineBuilder & SetHubWindSpeed(double speed)
Set the controller wind speed.
Definition turbine_builder.cpp:132
TurbineBuilder & SetNacelleInertiaMatrix(const std::array< std::array< double, 6 >, 6 > &matrix, const std::array< double, 3 > &cm_offset)
Set the nacelle inertia matrix (6x6) and center of mass offset (3x1)
Definition turbine_builder.cpp:53
TurbineBuilder & SetTowerTopToRotorApex(double height)
Set the hub height above the tower top i.e. distrance from tower top -> rotor apex (meters)
Definition turbine_builder.cpp:72
Turbine Build(Model &model)
Build a Turbine object from the current configuration.
Definition turbine_builder.cpp:20
TurbineBuilder & SetRotorSpeed(double speed)
Set the initial rotor speed (rad/s)
Definition turbine_builder.cpp:112
TurbineBuilder & SetRotorApexToHub(double distance)
Distance from rotor apex to hub center of mass (meters)
Definition turbine_builder.cpp:77
TurbineBuilder & SetNacelleYawAngle(double angle)
Set the initial nacelle yaw angle (radians)
Definition turbine_builder.cpp:92
Represents a turbine with nodes, elements, and constraints.
Definition turbine.hpp:87
Definition aerodynamics.cpp:5
Complete input specification for a turbine.
Definition turbine_input.hpp:17