9using namespace amrex::literals;
19 std::unique_ptr<kynema::interfaces::TurbineInterface>
interface;
60 interface->Turbine().hub_node.position[2];
68 interface->Turbine().hub_node.velocity[2];
72 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
97 std::array<float, 4> q;
100 for (
int iq = 0; iq < 4; ++iq) {
103 (float)
interface->Turbine().hub_node.position[iq + 3];
110 const int idx = n * 9;
112 q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3];
113 buffer_ori[idx + 1] = 2. * (q[1] * q[2] - q[0] * q[3]);
114 buffer_ori[idx + 2] = 2. * (q[1] * q[3] + q[0] * q[2]);
115 buffer_ori[idx + 3] = 2. * (q[1] * q[2] + q[0] * q[3]);
117 (q[0] * q[0] - q[1] * q[1] + q[2] * q[2] - q[3] * q[3]);
118 buffer_ori[idx + 5] = 2. * (q[2] * q[3] - q[0] * q[1]);
119 buffer_ori[idx + 6] = 2. * (q[1] * q[3] - q[0] * q[2]);
120 buffer_ori[idx + 7] = 2. * (q[2] * q[3] + q[0] * q[1]);
122 (q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]);
131 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
147 std::array<amrex::Real, 3> hub_inflow{
160 for (
int b = 0; b < (int)
interface->Aerodynamics().bodies.size(); ++b) {
161 id_diff -=
static_cast<int>(
162 interface->Aerodynamics().bodies[b].loads.size());
177 for (
int b = 0; b < (int)
interface->Aerodynamics().bodies.size(); ++b) {
178 id_diff -= (int)
interface->Aerodynamics().bodies[b].loads.size();
181 (int)
interface->Aerodynamics().bodies[b].loads.size();
205 float*
force(
int dir)
const override
226 unsigned int n_sect{1};
227 for (
unsigned int n = 0; n <
interface->Aerodynamics().bodies.size();
229 n_sect +=
interface->Aerodynamics().bodies[n].loads.size();
231 return static_cast<int>(n_sect);
241 return length_force(0) * AMREX_SPACEDIM * AMREX_SPACEDIM;
281 amrex::Vector<amrex::Real>
gravity{0.0_rt, 0.0_rt, -9.81_rt};
Definition external_base_types.H:9
Definition external_base_types.H:23
int num_pts_blade
Number of actuator points per blade.
Definition external_base_types.H:36
Definition kynema_types.H:274
amrex::Real damping_factor
Definition kynema_types.H:277
amrex::Vector< amrex::Real > gravity
Definition kynema_types.H:281
amrex::Real abs_err_tol
Definition kynema_types.H:279
amrex::Real rel_err_tol
Definition kynema_types.H:280
int nl_iter_max
Definition kynema_types.H:278
std::string output_dir
Definition kynema_types.H:275
Definition kynema_types.H:16
float * position_at_vel(int dir) const override
Definition kynema_types.H:190
std::vector< float > buffer_ori
Definition kynema_types.H:263
float * ptr_pf
Definition kynema_types.H:269
float * orientation() const override
Definition kynema_types.H:217
std::vector< float > buffer_fv
Definition kynema_types.H:260
float * ptr_sv
Definition kynema_types.H:266
float * ptr_fv
Definition kynema_types.H:267
int node_index(int id) const
Definition kynema_types.H:171
int length_fluid_velocity(int dir) const override
Definition kynema_types.H:219
std::vector< float > buffer_f
Definition kynema_types.H:261
float * position_at_force(int dir) const override
Definition kynema_types.H:210
float * solid_velocity(int dir) const override
Definition kynema_types.H:195
std::vector< float > buffer_cf
Definition kynema_types.H:257
std::string controller_input_file
Definition kynema_types.H:255
float * ptr_pv
Definition kynema_types.H:265
float * chord_at_force() const override
Definition kynema_types.H:215
std::string controller_shared_lib_path
Definition kynema_types.H:254
int body_index(int id) const
Definition kynema_types.H:154
float * ptr_f
Definition kynema_types.H:268
void pass_fluid_velocity_and_hub_load()
Definition kynema_types.H:126
amrex::Real yaw
Definition kynema_types.H:250
void allocate_buffers()
Definition kynema_types.H:22
int substep_counter
Definition kynema_types.H:252
float * ptr_cf
Definition kynema_types.H:264
int length_force(int dir) const override
Definition kynema_types.H:224
std::unique_ptr< kynema::interfaces::TurbineInterface > interface
Definition kynema_types.H:19
int num_vel_pts_blade() const override
Definition kynema_types.H:244
void populate_buffers()
Definition kynema_types.H:50
int length_orientation() const override
Definition kynema_types.H:239
amrex::Real rotational_speed
Definition kynema_types.H:247
amrex::Real generator_efficiency
Definition kynema_types.H:251
std::vector< float > buffer_pf
Definition kynema_types.H:262
int length_position_at_force(int dir) const override
Definition kynema_types.H:234
float * ptr_ori
Definition kynema_types.H:270
float * force(int dir) const override
Definition kynema_types.H:205
std::vector< float > buffer_pv
Definition kynema_types.H:258
amrex::Real generator_power
Definition kynema_types.H:248
amrex::Real wind_speed
Definition kynema_types.H:249
float * fluid_velocity(int dir) const override
Definition kynema_types.H:200
std::vector< float > buffer_sv
Definition kynema_types.H:259
amrex::Real fluid_density
Definition kynema_types.H:246