17 std::unique_ptr<kynema::interfaces::TurbineInterface>
interface;
58 interface->Turbine().hub_node.position[2];
66 interface->Turbine().hub_node.velocity[2];
70 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
95 std::array<float, 4> q;
98 for (
int iq = 0; iq < 4; ++iq) {
101 (float)
interface->Turbine().hub_node.position[iq + 3];
108 const int idx = n * 9;
110 q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3];
111 buffer_ori[idx + 1] = 2. * (q[1] * q[2] - q[0] * q[3]);
112 buffer_ori[idx + 2] = 2. * (q[1] * q[3] + q[0] * q[2]);
113 buffer_ori[idx + 3] = 2. * (q[1] * q[2] + q[0] * q[3]);
115 (q[0] * q[0] - q[1] * q[1] + q[2] * q[2] - q[3] * q[3]);
116 buffer_ori[idx + 5] = 2. * (q[2] * q[3] - q[0] * q[1]);
117 buffer_ori[idx + 6] = 2. * (q[1] * q[3] - q[0] * q[2]);
118 buffer_ori[idx + 7] = 2. * (q[2] * q[3] + q[0] * q[1]);
120 (q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]);
129 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
145 std::array<double, 3> hub_inflow{
158 for (
int b = 0; b < (int)
interface->Aerodynamics().bodies.size(); ++b) {
159 id_diff -=
static_cast<int>(
160 interface->Aerodynamics().bodies[b].loads.size());
175 for (
int b = 0; b < (int)
interface->Aerodynamics().bodies.size(); ++b) {
176 id_diff -= (int)
interface->Aerodynamics().bodies[b].loads.size();
179 (int)
interface->Aerodynamics().bodies[b].loads.size();
203 float*
force(
int dir)
const override
224 unsigned int n_sect{1};
225 for (
unsigned int n = 0; n <
interface->Aerodynamics().bodies.size();
227 n_sect +=
interface->Aerodynamics().bodies[n].loads.size();
229 return static_cast<int>(n_sect);
239 return length_force(0) * AMREX_SPACEDIM * AMREX_SPACEDIM;
276 amrex::Vector<amrex::Real>
gravity{0.0, 0.0, -9.81};
Definition external_base_types.H:6
Definition external_base_types.H:20
int num_pts_blade
Number of actuator points per blade.
Definition external_base_types.H:33
Definition kynema_types.H:269
double damping_factor
Definition kynema_types.H:272
double rel_err_tol
Definition kynema_types.H:275
amrex::Vector< amrex::Real > gravity
Definition kynema_types.H:276
double abs_err_tol
Definition kynema_types.H:274
int nl_iter_max
Definition kynema_types.H:273
std::string output_dir
Definition kynema_types.H:270
Definition kynema_types.H:14
float * position_at_vel(int dir) const override
Definition kynema_types.H:188
std::vector< float > buffer_ori
Definition kynema_types.H:258
float * ptr_pf
Definition kynema_types.H:264
float * orientation() const override
Definition kynema_types.H:215
std::vector< float > buffer_fv
Definition kynema_types.H:255
float * ptr_sv
Definition kynema_types.H:261
double rotational_speed
Definition kynema_types.H:245
float * ptr_fv
Definition kynema_types.H:262
int node_index(int id) const
Definition kynema_types.H:169
int length_fluid_velocity(int dir) const override
Definition kynema_types.H:217
double yaw
Definition kynema_types.H:246
std::vector< float > buffer_f
Definition kynema_types.H:256
float * position_at_force(int dir) const override
Definition kynema_types.H:208
float * solid_velocity(int dir) const override
Definition kynema_types.H:193
std::vector< float > buffer_cf
Definition kynema_types.H:252
double fluid_density
Definition kynema_types.H:244
std::string controller_input_file
Definition kynema_types.H:250
float * ptr_pv
Definition kynema_types.H:260
float * chord_at_force() const override
Definition kynema_types.H:213
std::string controller_shared_lib_path
Definition kynema_types.H:249
int body_index(int id) const
Definition kynema_types.H:152
float * ptr_f
Definition kynema_types.H:263
void pass_fluid_velocity_and_hub_load()
Definition kynema_types.H:124
void allocate_buffers()
Definition kynema_types.H:20
int substep_counter
Definition kynema_types.H:247
float * ptr_cf
Definition kynema_types.H:259
int length_force(int dir) const override
Definition kynema_types.H:222
std::unique_ptr< kynema::interfaces::TurbineInterface > interface
Definition kynema_types.H:17
int num_vel_pts_blade() const override
Definition kynema_types.H:242
void populate_buffers()
Definition kynema_types.H:48
int length_orientation() const override
Definition kynema_types.H:237
std::vector< float > buffer_pf
Definition kynema_types.H:257
int length_position_at_force(int dir) const override
Definition kynema_types.H:232
float * ptr_ori
Definition kynema_types.H:265
float * force(int dir) const override
Definition kynema_types.H:203
std::vector< float > buffer_pv
Definition kynema_types.H:253
float * fluid_velocity(int dir) const override
Definition kynema_types.H:198
std::vector< float > buffer_sv
Definition kynema_types.H:254