/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 "beam_builder.hpp"
4#include "turbine_input.hpp"
5
7
8class Turbine;
9
12public:
13 TurbineBuilder() = default;
14
19 [[nodiscard]] const TurbineInput& Input();
20
26 [[nodiscard]] Turbine Build(Model& model);
27
28 //--------------------------------------------------------------------------
29 // Build components
30 //--------------------------------------------------------------------------
31
37 [[nodiscard]] components::BeamBuilder& Blade(size_t blade_index);
38
43 [[nodiscard]] components::BeamBuilder& Tower();
44
51 TurbineBuilder& SetYawBearingInertiaMatrix(const std::array<std::array<double, 6>, 6>& matrix);
52
58 TurbineBuilder& SetHubInertiaMatrix(const std::array<std::array<double, 6>, 6>& matrix);
59
60 //--------------------------------------------------------------------------
61 // Build geometric configuration of the turbine
62 //--------------------------------------------------------------------------
63
69 TurbineBuilder& SetTowerBasePosition(const std::array<double, 7>& position);
70
78
86
92 TurbineBuilder& SetRotorApexToHub(double distance);
93
99 TurbineBuilder& SetHubDiameter(double diameter);
100
101 //--------------------------------------------------------------------------
102 // Build initial operating conditions of the turbine
103 //--------------------------------------------------------------------------
104
110 TurbineBuilder& SetShaftTiltAngle(double angle);
111
117 TurbineBuilder& SetNacelleYawAngle(double angle);
118
124 TurbineBuilder& SetConeAngle(double angle);
125
131 TurbineBuilder& SetBladePitchAngle(double angle);
132
138 TurbineBuilder& SetAzimuthAngle(double angle);
139
145 TurbineBuilder& SetRotorSpeed(double speed);
146
147private:
148 TurbineInput input;
149 std::vector<BeamBuilder> blade_builders;
150 BeamBuilder tower_builder;
151};
152
153} // 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:11
TurbineBuilder & SetBladePitchAngle(double angle)
Set the initial blade pitch angle (radians)
Definition turbine_builder.cpp:91
TurbineBuilder & SetHubDiameter(double diameter)
Set the hub diameter (meters)
Definition turbine_builder.cpp:71
TurbineBuilder & SetConeAngle(double angle)
Set the initial cone angle (radians)
Definition turbine_builder.cpp:86
TurbineBuilder & SetTowerBasePosition(const std::array< double, 7 > &position)
Set the position of the tower base node.
Definition turbine_builder.cpp:51
TurbineBuilder & SetYawBearingInertiaMatrix(const std::array< std::array< double, 6 >, 6 > &matrix)
Set the yaw bearing inertia matrix (6x6)
Definition turbine_builder.cpp:37
TurbineBuilder & SetAzimuthAngle(double angle)
Set the azimuth angle (radiams)
Definition turbine_builder.cpp:96
components::BeamBuilder & Blade(size_t blade_index)
Get reference to builder for a specific blade.
Definition turbine_builder.cpp:24
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:56
TurbineBuilder & SetHubInertiaMatrix(const std::array< std::array< double, 6 >, 6 > &matrix)
Set the hub inertia matrix (6x6)
Definition turbine_builder.cpp:44
components::BeamBuilder & Tower()
Get reference to builder for the tower.
Definition turbine_builder.cpp:32
const TurbineInput & Input()
Get the current turbine input configuration.
Definition turbine_builder.cpp:6
TurbineBuilder & SetShaftTiltAngle(double angle)
Set the shaft tilt angle (degrees)
Definition turbine_builder.cpp:76
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:61
Turbine Build(Model &model)
Build a Turbine object from the current configuration.
Definition turbine_builder.cpp:19
TurbineBuilder & SetRotorSpeed(double speed)
Set the initial rotor speed (rad/s)
Definition turbine_builder.cpp:101
TurbineBuilder & SetRotorApexToHub(double distance)
Distance from rotor apex to hub center of mass (meters)
Definition turbine_builder.cpp:66
TurbineBuilder & SetNacelleYawAngle(double angle)
Set the initial nacelle yaw angle (radians)
Definition turbine_builder.cpp:81
Represents a turbine with nodes, elements, and constraints.
Definition turbine.hpp:87
Definition aerodynamics.cpp:3
Complete input specification for a turbine.
Definition turbine_input.hpp:17