35#ifndef ACTUATOR_FARM_INLINES
36#define ACTUATOR_FARM_INLINES
56 return bladePoint + numberOfPointsPerBlade * (blade + numberOfBlades * turbine);
67 turbine = node / (numberOfPointsPerBlade * numberOfBlades);
68 const uint x_off = turbine * numberOfPointsPerBlade * numberOfBlades;
69 blade = (node -
x_off) / numberOfPointsPerBlade;
71 bladePoint = node -
y_off;
80 return { turbine, blade, bladePoint };
104 return c1o2 * diameter + c3o2 * smearingWidth;
113template <Axis CylinderAxis,
bool UseDonut>
173 return std::pow(smearingWidth * std::sqrt(cPi), -3) * std::exp(-
distSqrd(
distX,
distY,
distZ) / (smearingWidth * smearingWidth)) ;
197 uint numberOfHubPoints)
199 return pointIndex - numberOfBladePoints - numberOfHubPoints;
std::shared_ptr< T > SPtr
__host__ __device__ __inline__ void rotateFromGlobalToBlade(real &bladeCoordX_BF, real &bladeCoordY_BF, real &bladeCoordZ_BF, real bladeCoordX_GF, real bladeCoordY_GF, real bladeCoordZ_GF, real azimuth)
constexpr uint getHubPointIndex(uint pointIndex, uint numberOfBladePoints)
__inline__ __host__ __device__ void invRotateAboutX3D(real angle, real posX, real posY, real posZ, real &newPosX, real &newPosY, real &newPosZ)
__host__ __device__ __inline__ real gaussianSmearing(real distX, real distY, real distZ, real smearingWidth)
__host__ __device__ __inline__ bool inCylinderVolume(real gridX, real gridY, real gridZ, real centerX, real centerY, real centerZ, real cylinderLength, real cylinderRadius, real margin)
__inline__ __host__ __device__ void rotateAboutX3D(real angle, real posX, real posY, real posZ, real &newPosX, real &newPosY, real &newPosZ)
constexpr real distSqrd(real distX, real distY, real distZ)
constexpr bool isTowerPoint(uint pointIndex, uint numberOfBladePoints, uint numberOfHubPoints, uint totalPoints)
constexpr bool isHubPoint(uint pointIndex, uint numberOfBladePoints, uint totalPoints)
__host__ __device__ __inline__ void rotateFromBladeToGlobal(real bladeCoordX_BF, real bladeCoordY_BF, real bladeCoordZ_BF, real &bladeCoordX_GF, real &bladeCoordY_GF, real &bladeCoordZ_GF, real azimuth)
constexpr uint calcPointIndexInBladeArrays(uint bladePoint, uint numberOfPointsPerBlade, uint blade, uint numberOfBlades, uint turbine)
constexpr uint getTowerPointIndex(uint pointIndex, uint numberOfBladePoints, uint numberOfHubPoints)
constexpr real getRotorBoundingVolumeRadius(real diameter, real smearingWidth, bool useVAWTVolume)
constexpr void calcTurbineBladeAndBladePoint(uint node, uint &bladePoint, uint numberOfPointsPerBlade, uint &blade, uint numberOfBlades, uint &turbine)
constexpr bool inSphereVolume(real distX, real distY, real distZ, real diameter, real smearingWidth)