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.
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.
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).
TABLE CAPTION:: Degree of spline across Reynolds number.
len(Re) |
degree of spline |
|---|---|
1 |
constant |
2 |
linear |
3 |
quadratic |
4+ |
cubic |
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.
Polar Class
A Polar object is meant to represent the variation in lift, drag, and pitching moment coefficient with angle of attack at a fixed Reynolds number. Tools exist to read in two-dimensional (2-D) aerodynamic airfoil data (i.e., from wind tunnel data or numerical simulation), apply three-dimensional (3-D) rotation corrections for wind turbine applications, and extend the data to very large angles of attack. Airfoil data can also be blended together to define intermediate sections between linearly lofted sections.
- class wisdem.ccblade.Polar.Polar(filename=None, alpha=None, cl=None, cd=None, cm=None, Re=None, compute_params=False, radians=None, cl_lin_method='max', fformat='auto', verbose=False)[source]
Defines section lift, drag, and pitching moment coefficients as a function of angle of attack at a particular Reynolds number. Different parameters may be computed and different corrections applied.
- Available routines:
cl_interp : cl at given alpha values
cd_interp : cd at given alpha values
cm_interp : cm at given alpha values
cn_interp : cn at given alpha values
fs_interp : separation function (compared to fully separated polar)
cl_fs_interp : cl fully separated at given alpha values
cl_inv_interp : cl inviscid at given alpha values
correction3D : apply 3D rotatational correction
extrapolate : extend polar data set using Viterna’s method
unsteadyParams : computes unsteady params e.g. needed by AeroDyn15
unsteadyparam : same but (old)
plot : plots the polar
alpha0 : computes and returns alpha0, also stored in _alpha0
linear_region : determines the alpha and cl values in the linear region
cl_max : cl_max
cl_linear_slope : linear slope and the linear region
cl_fully_separated: fully separated cl
toAeroDyn: write AeroDyn file
- Attributes:
- cl_fs
- cl_inv
- cl_lin
cnreturns : Cl cos(alpha) + Cd sin(alpha)
- fs
Methods
alpha0([window])Finds alpha0, angle of zero lift
cl_interp(alpha)cl_linear_slope([window, method, radians])Find slope of linear region Outputs: a 2-tuplet of: slope (in inverse units of alpha, or in radians-1 if radians=True) alpha_0 in the same unit as alpha, or in radians if radians=True
cl_max([window])Finds cl_max , returns (Cl_max,alpha_max)
correction3D(r_over_R, chord_over_r, tsr[, ...])Applies 3-D corrections for rotating sections from the 2-D data.
extrapolate(cdmax[, AR, cdmin, nalpha])Extrapolates force coefficients up to +/- 180 degrees using Viterna's method [].
fromfile(filename[, fformat, ...])Constructor based on a filename # NOTE: this is legacy
interpolant([variables, radians])Create an interpolant f for a set of requested variables with alpha as input variable:
plot()plot cl/cd/cm polar
unsteadyParams([window_offset, nMin])compute unsteady aero parameters used in AeroDyn input file
unsteadyparam([alpha_linear_min, ...])compute unsteady aero parameters used in AeroDyn input file
cd_interp
cl_fs_interp
cl_fully_separated
cl_inv_interp
cm_interp
cn_interp
dynaStallOye_DiscreteStep
fs_interp
linear_region