4. Module Documentation¶
The main methodology is contained in CCBlade. Airfoil data is provided by any object that implements AirfoilInterface. The helper class CCAirfoil is provided as a useful default implementation for AirfoilInterface. If CCAirfoil is not used, the user must provide an implementation that produces \(C^1\) continuous output (or else accept non-smooth aerodynamic calculations from CCBlade). Some of the underlying implementation for CCBlade is written in Fortran for computational efficiency.
4.1. Airfoil Interface¶
The airfoil objects used in CCBlade need only implement the following evaluate() method. Although using CCAirfoil for the implementation is recommended, any custom class can be used.
Class Summary:
4.2. CCAirfoil Class¶
CCAirfoil is a helper class used to evaluate airfoil data with a continuously differentiable bivariate spline across the angle of attack and Reynolds number. The degree of the spline polynomials across the Reynolds number is summarized in the following table (the same applies to the angle of attack although generally, the number of points for the angle of attack is much larger).
len(Re) | degree of spline |
---|---|
1 | constant |
2 | linear |
3 | quadratic |
4+ | cubic |
Class Summary:
-
class
ccblade.
CCAirfoil
(alpha, Re, cl, cd, cm=[])[source] Setup CCAirfoil from raw airfoil data on a grid. Parameters ———- alpha : array_like (deg)
angles of attack where airfoil data are defined (should be defined from -180 to +180 degrees)- Re : array_like
- Reynolds numbers where airfoil data are defined (can be empty or of length one if not Reynolds number dependent)
- cl : array_like
- lift coefficient 2-D array with shape (alpha.size, Re.size) cl[i, j] is the lift coefficient at alpha[i] and Re[j]
- cd : array_like
- drag coefficient 2-D array with shape (alpha.size, Re.size) cd[i, j] is the drag coefficient at alpha[i] and Re[j]
Methods
initFromAerodynFile
convenience method for initializing with AeroDyn formatted files Parameters ———- aerodynFile : str location of AeroDyn style airfoiil file Returns ——- af : CCAirfoil a constructed CCAirfoil object evaluate
Get lift/drag coefficient at the specified angle of attack and Reynolds number.
4.3. CCBlade Class¶
This class provides aerodynamic analysis of wind turbine rotor blades using BEM theory. It can compute distributed aerodynamic loads and integrated quantities such as power, thrust, and torque. An emphasis is placed on convergence robustness and differentiable output so that it can be used with gradient-based optimization.
Class Summary:
-
class
ccblade.
CCBlade
(r, chord, theta, af, Rhub, Rtip, B=3, rho=1.225, mu=1.81206e-05, precone=0.0, tilt=0.0, yaw=0.0, shearExp=0.2, hubHt=80.0, nSector=8, precurve=None, precurveTip=0.0, presweep=None, presweepTip=0.0, tiploss=True, hubloss=True, wakerotation=True, usecd=True, iterRe=1, derivatives=False)[source] Constructor for aerodynamic rotor analysis Parameters ———- r : array_like (m)
locations defining the blade along z-axis of blade coordinate system (values should be increasing).- chord : array_like (m)
- corresponding chord length at each section
- theta : array_like (deg)
- corresponding twist angle at each section— positive twist decreases angle of attack.
- Rhub : float (m)
- location of hub
- Rtip : float (m)
- location of tip
- B : int, optional
- number of blades
- rho : float, optional (kg/m^3)
- freestream fluid density
- mu : float, optional (kg/m/s)
- dynamic viscosity of fluid
- precone : float, optional (deg)
- hub precone angle
- tilt : float, optional (deg)
- nacelle tilt angle
- yaw : float, optional (deg)
- nacelle yaw angle
- shearExp : float, optional
- shear exponent for a power-law wind profile across hub
- hubHt : float, optional
- hub height used for power-law wind profile. U = Uref*(z/hubHt)**shearExp
- nSector : int, optional
- number of azimuthal sectors to descretize aerodynamic calculation. automatically set to
1
if tilt, yaw, and shearExp are all 0.0. Otherwise set to a minimum of 4. - precurve : array_like, optional (m)
- location of blade pitch axis in x-direction of blade coordinate system
- precurveTip : float, optional (m)
- location of blade pitch axis in x-direction at the tip (analogous to Rtip)
- presweep : array_like, optional (m)
- location of blade pitch axis in y-direction of blade coordinate system
- presweepTip : float, optional (m)
- location of blade pitch axis in y-direction at the tip (analogous to Rtip)
- tiploss : boolean, optional
- if True, include Prandtl tip loss model
- hubloss : boolean, optional
- if True, include Prandtl hub loss model
- wakerotation : boolean, optional
- if True, include effect of wake rotation (i.e., tangential induction factor is nonzero)
- usecd : boolean, optional
- If True, use drag coefficient in computing induction factors (always used in evaluating distributed loads from the induction factors). Note that the default implementation may fail at certain points if drag is not included (see Section 4.2 in [1]). This can be worked around, but has not been implemented.
- iterRe : int, optional
- The number of iterations to use to converge Reynolds number. Generally iterRe=1 is sufficient, but for high accuracy in Reynolds number effects, iterRe=2 iterations can be used. More than that should not be necessary. Gradients have only been implemented for the case iterRe=1.
- derivatives : boolean, optional
- if True, derivatives along with function values will be returned for the various methods
Methods
distributedAeroLoads
Compute distributed aerodynamic loads along blade. evaluate
Run the aerodynamic analysis at the specified conditions.