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
cn

returns : 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