diff --git a/pythonbindings/src/gpu/submodules/actuator_line.cpp b/pythonbindings/src/gpu/submodules/actuator_line.cpp index fe305f65896446824b2995039fd330667d77dc2a..0b65c655a12e8aa5dc695b986a14e07cb85f55ff 100644 --- a/pythonbindings/src/gpu/submodules/actuator_line.cpp +++ b/pythonbindings/src/gpu/submodules/actuator_line.cpp @@ -73,6 +73,7 @@ namespace actuator_line .def("get_blade_forces_x_device", [](ActuatorLine& al){ return arr({al.getNBlades(), al.getNBladeNodes()}, al.getBladeForcesXD()); } ) .def("get_blade_forces_y_device", [](ActuatorLine& al){ return arr({al.getNBlades(), al.getNBladeNodes()}, al.getBladeForcesYD()); } ) .def("get_blade_forces_z_device", [](ActuatorLine& al){ return arr({al.getNBlades(), al.getNBladeNodes()}, al.getBladeForcesZD()); } ) + .def("set_preinit_blade_radii", [](ActuatorLine& al, arr radii){ al.setPreInitBladeRadii(static_cast<float *>(radii.request().ptr)); } ) .def("set_blade_coords", [](ActuatorLine& al, arr coordsX, arr coordsY, arr coordsZ){ al.setBladeCoords(static_cast<float *>(coordsX.request().ptr), static_cast<float *>(coordsY.request().ptr), static_cast<float *>(coordsZ.request().ptr)); } ) .def("set_blade_velocities", [](ActuatorLine& al, arr velocitiesX, arr velocitiesY, arr velocitiesZ){ diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu index fefe21d37e0f92225a9d548e5db5ec0fddd3fc76..f2257edb0b017b0e253e970cd48c12ff5120066e 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu @@ -369,6 +369,14 @@ void ActuatorLine::initBladeIndices(Parameter* para, CudaMemoryManager* cudaMemo } cudaMemoryManager->cudaCopyBladeIndicesHtoD(this); } +void ActuatorLine::setPreInitBladeRadii(real* _bladeRadii) +{ + this->bladeRadiiPreInit = (real*) malloc(this->nBladeNodes*sizeof(real)); + for(uint node=0; node<this->nBladeNodes; node++) + { + this->bladeRadiiPreInit[node] = _bladeRadii[node]; + } +} void ActuatorLine::initBoundingSphere(Parameter* para, CudaMemoryManager* cudaMemoryManager) { diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h index 31f7564848516f11f9a2042d7c5cb5d8d746bb08..73bbc5e4eef79cc2f399d3a3d61426be8798486f 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h @@ -88,6 +88,7 @@ public: void setOmega(real _omega){ this->omega = _omega; }; void setAzimuth(real _azimuth){ this->azimuth = _azimuth; }; void setYaw(real _yaw){ this->yaw = _yaw; }; + void setPreInitBladeRadii(real* _bladeRadii); void setBladeCoords(real* _bladeCoordsX, real* _bladeCoordsY, real* _bladeCoordsZ); void setBladeVelocities(real* _bladeVelocitiesX, real* _bladeVelocitiesY, real* _bladeVelocitiesZ); void setBladeForces(real* _bladeForcesX, real* _bladeForcesY, real* _bladeForcesZ); @@ -108,6 +109,7 @@ private: void calcForcesEllipticWing(); public: + real* bladeRadiiPreInit; real* bladeRadiiH; real* bladeRadiiD; real* bladeCoordsXH, * bladeCoordsYH, * bladeCoordsZH;