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

Kynema API: /home/runner/work/kynema/kynema/kynema/src/interfaces/components/beam_input.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
beam_input.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <stdexcept>
5#include <vector>
6
8
16 std::vector<double> coordinate_grid;
17
19 std::vector<std::array<double, 3>> coordinates;
20
22 std::vector<double> twist_grid;
23
25 std::vector<double> twist;
26};
27
33struct Section {
35 double location;
36
38 std::array<std::array<double, 6>, 6> mass_matrix;
39
41 std::array<std::array<double, 6>, 6> stiffness_matrix;
42
50 double loc, std::array<std::array<double, 6>, 6> m, std::array<std::array<double, 6>, 6> k
51 )
53 // Check that the section location is in range [0,1]
54 if (loc < 0. || loc > 1.) {
55 throw std::invalid_argument("Section location must be in range [0, 1]");
56 }
57 }
58};
59
65struct Root {
68
70 std::array<double, 7> position{0., 0., 0., 1., 0., 0., 0.};
71
73 std::array<double, 6> velocity{0., 0., 0., 0., 0., 0.};
74
76 std::array<double, 6> acceleration{0., 0., 0., 0., 0., 0.};
77};
78
84struct BeamInput {
86 size_t element_order{10};
87
90
93
96
98 std::vector<Section> sections;
99};
100
101} // namespace kynema::interfaces::components
Definition aerodynamics.cpp:3
Complete input specification for a beam.
Definition beam_input.hpp:84
size_t section_refinement
Trapezoidal quadrature point refinement (0 = none)
Definition beam_input.hpp:89
std::vector< Section > sections
Section properties.
Definition beam_input.hpp:98
Root root
Blade root.
Definition beam_input.hpp:95
size_t element_order
Spectral element order (num nodes - 1)
Definition beam_input.hpp:86
ReferenceAxis ref_axis
Structural reference axis data.
Definition beam_input.hpp:92
Reference axis definition for a beam.
Definition beam_input.hpp:14
std::vector< std::array< double, 3 > > coordinates
X,Y,Z coordinates of reference axis points.
Definition beam_input.hpp:19
std::vector< double > twist
Structural twist values (in radians)
Definition beam_input.hpp:25
std::vector< double > coordinate_grid
Normalized coordinate locations [0, 1] along the beam.
Definition beam_input.hpp:16
std::vector< double > twist_grid
Normalized twist locations [0, 1] along the beam.
Definition beam_input.hpp:22
Root definition for a turbine beam.
Definition beam_input.hpp:65
std::array< double, 6 > velocity
Initial translation/rotational velocity [vx, vy, vz, wx, wy, wz].
Definition beam_input.hpp:73
std::array< double, 7 > position
Inital position/orientation [x, y, z, qw, qx, qy, qz].
Definition beam_input.hpp:70
bool prescribe_root_motion
Flag to use root motion as an input to the model.
Definition beam_input.hpp:67
std::array< double, 6 > acceleration
Initial translation/rotational acceleration [ax, ay, az, αx, αy, αz].
Definition beam_input.hpp:76
Sectional structural properties of the beam.
Definition beam_input.hpp:33
Section(double loc, std::array< std::array< double, 6 >, 6 > m, std::array< std::array< double, 6 >, 6 > k)
Construct a new Section.
Definition beam_input.hpp:49
std::array< std::array< double, 6 >, 6 > stiffness_matrix
Stiffness matrix (6x6) at the section.
Definition beam_input.hpp:41
double location
Normalized section location [0, 1] along the beam.
Definition beam_input.hpp:35
std::array< std::array< double, 6 >, 6 > mass_matrix
Mass matrix (6x6) at the section.
Definition beam_input.hpp:38