Learn R Programming

bReeze (version 0.4-4)

pc: Import power curve from file

Description

Imports a power curve from a WAsP 'wgt' file or a WindPower program 'pow' file.

Usage

pc(pc, ...)

# S3 method for default pc(pc, rho=1.225, rated.p, desc, ...) # S3 method for read pc(pc, ...) # S3 method for pc plot(x, cp=TRUE, ct=TRUE, ...)

Value

Returns a data frame binding the given data

Arguments

pc

list or data.frame of power curve variables -- v (wind speed in m/s), p (corresponding power output in kW), cp (power coefficient, optional), ct (thrust coefficient, optional), all as numeric vectors of same length. Or the name of, or the path to a 'wgt' or 'pow' file containing power curve data.

rho

Air density as numeric value. Default is 1.225 kg/m3 according to the International Standard Atmosphere (ISA) at sea level and 15 degrees Celsius.

rated.p

Rated power of wind turbine in kW as numeric value. If not given, the rated power is set to the maximum value of p.

desc

Plain text information about the wind turbine as string (optional).

x

Power curve object created by pc.

cp

If TRUE (the default), the power coefficient (cp) is added to the plot (if available).

ct

If TRUE (the default), the thrust coefficient (ct) is added to the plot (if available).

...

Arguments to be passed to methods. For optional graphical parameters see below.

Optional graphical parameters

The following graphical parameters can optionally be added to customize the plot:

  • bty: Type of box to be drawn around the plot region. Allowed values are "o" (the default), "l", "7", "c", "u", or "]". The resulting box resembles the corresponding upper case letter. A value of "n" suppresses the box.

  • bty.leg: Type of box to be drawn around the legend. Allowed values are "n" (no box, the default) and "o".

  • cex: Amount by which text on the plot should be scaled relative to the default (which is 1), as numeric. To be used for scaling of all texts at once.

  • cex.axis: Amount by which axis annotations should be scaled, as numeric value.

  • cex.lab: Amount by which axis labels should be scaled, as numeric value.

  • cex.leg: Amount by which legend text should be scaled, as numeric value.

  • col: Vector of colours. The first colour is used for the power curve. If only one coefficient is available, the second colour is used for this coefficient, if both coefficients are available, the second colour is used for pc and the third for ct.

  • col.axis: Colour to be used for axis annotations -- default is "black".

  • col.box: Colour to be used for the box around the plot region (if bty) -- default is "black".

  • col.lab: Colour to be used for axis labels -- default is "black".

  • col.leg: Colour to be used for legend text -- default is "black".

  • col.ticks: Colours for the axis line and the tick marks respectively -- default is "black".

  • las: Style of axis labels. One of 0 (always parallel to the axis, default), 1 (always horizontal), 2 (always perpendicular to the axis), 3 (always vertical).

  • legend: If TRUE (the default) a legend is drawn.

  • leg.text: A character or expression vector to appear in the legend.

  • lty: Vector of line types, assigned like col. See par for available line types.

  • lwd: Vector of line widths, assigned like col. See par for usage.

  • mar: A numerical vector of the form c(bottom, left, top, right) which gives the number of lines of margin to be specified on the four sides of the plot -- default is c(5, 5, 1, 5) for one y axis and c(5, 5, 1, 1) for two y axes.

  • mgp: A numerical vector of the form c(label, annotation, line), which gives the margin line for the axis label, axis annotation and axis line. The default is c(3, 1, 0).

  • pos.leg: Position of legend -- one of "bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" or "center". Use NULL to hide the legend.

  • xlab: Alternative label for the x axis.

  • ylab: Alternative labels for the y axis, as vector of the form c(left axis label, right axis label).

  • ylim: Limits of the y axis, as vector of two values.

  • x.intersp: Horizontal interspacing factor for legend text, as numeric -- default is 0.4.

  • y.intersp: Vertical line distance for legend text, as numeric -- default is 0.4.

Author

Christian Graul

Details

Power curve

A power curve characterizes the power production of a wind turbine and gives the amount of generated electrical power output as a function of wind speed. The theoretical power curve of a turbine is defined as:

\(P \propto v^3\)\(\mbox{for} \ v<v_{rated}\)
\(P = P_{rated}\)\(\mbox{for} \ v>v_{rated}\)

Hence the generated power is proportional to the wind speed cubed, for wind speeds lower than rated wind speed. For higher wind speeds the generated power is equal to the rated power of the turbine.

Conventionally a power curve consists of pairs of wind speed and power in 0.5 or 1 m/s wind speed bins, starting at 0 m/s or the cut-in wind speed of the turbine and ending with the cut-out wind speed, e.g. at about 25 m/s.

Coefficients

The power coefficient \(c_p\) is defined as: $$c_p = \frac{P_t}{P}$$ where \(P_t\) is the ratio of the electrical power extracted by the wind turbine and \(P\) is the energy available in the wind stream. According to Betz's law, the theoretically achievable power coefficient is approximately 0.59. However, no wind turbine will obtain this value, due to inefficiencies and various losses of the machine.

The thrust coefficient is a turbine specific characteristic and used for the modelling of wake effects. Therefore it is an important parameter for wind farm configuration.

bReeze provides several power curves of common manufacturers, that can be read from the package directory. See examples for usage.

Available 'wtg' files

Nordex_N80_2.5MWNordex_N90_2.5MW_HSNordex_N90_2.5MW_LS
Nordex_N100_2.5MWPowerWind_56_900kWPowerWind_90_2.5MW
Vestas_V52_850kWVestas_V60_850kWVestas_V80_2.0MW_os
Vestas_V80_2.0MWVestas_V82_1650kWVestas_V90_1.8MW
Vestas_V90_2.0MWVestas_V90_3.0MWVestas_V100_1.8MW_50Hz
Vestas_V100_1.8MW_60HzVestas_V112_3.0MW

Available 'pow' files

Bonus_82.4m_2.3MWBonus_MKIV_600kWClipper_LibertyC89_2.5MW
Clipper_LibertyC93_2.5MWClipper_LibertyC96_2.5MWClipper_LibertyC100_2.5MW
Enercon_E33_330kWEnercon_E40_500kWEnercon_E44_900kW
Enercon_E48_800kWEnercon_E53_800kWEnercon_E66_1870kW
Enercon_E66_2000kWEnercon_E70_2.3MWEnercon_E82_2.0MW
Enercon_E82_2.3MWEnercon_E82_3.0MWEnercon_E101_3.0MW
Enercon_E126_7.5MWEWT_DW52_500kWEWT_DW54_500kW
EWT_DW90_2MWEWT_DW96_2MWGamesa_G52_850kW
Gamesa_G58_850kWGamesa_G80_2.0MWGamesa_G83_2.0MW
Gamesa_G87_2.0MWGamesa_G90_2.0MWGE_1.5sl_1.5MW
GE_1.5sle_1.5MWGE_1.5xle_1.5MWGE_1.6MW
GE_2.5xl_2.5MWGE_3.6sl_3.6MWLeitwind_LTW70_1.7MW
Leitwind_LTW70_2.0MWLeitwind_LTW77_1.5MWLeitwind_LTW80_1.5MW
Leitwind_LTW80_1.8MWLeitwind_LTW101_3.0MWNordex_N60_1.3MW
Nordex_N70_1.5MWNordex_N90_2.5MWNordex_N100_2.5MW
Nordex_S70_1.5MWNordex_S77_1.5MWNordic_1000_1.0MW
PowerWind_56_500kWRepower_5M_5.0MWRepower_MM82_2.0MW
Repower_MM92_2.0MWSiemens_SWT-2.3MW-93mSiemens_SWT-2.3MW-101m
Siemens_SWT-3.6MW-107mSiemens_SWT-3.6MW-120mSuzlon_S64_1.25MW
Suzlon_S64_950kWSuzlon_S66_1.25MWSuzlon_S88_2.1MW
VensysEnergy_77_1.5MWVensys_82_1.5MWVensys_100_2.5MW
Vensys_109_2.5MWVensys_112_2.5MWVestas_V27_225kW
Vestas_V39_500kWVestas_V52_850kWVestas_V80_2.0MW_os
Vestas_V80_2.0MWVestas_V82_1.65MWVestas_V90_2.0MW
Vestas_V90_3.0MWVestas_V112_3MWVestas_V164_7.0MW_os

References

Betz, A. (1966) Introduction to the Theory of Flow Machines. Oxford: Pergamon Press

Burton, T., Sharpe, D., Jenkins, N., Bossanyi, E. (2001) Wind Energy Handbook. New York: Wiley

International Electrotechnical Commission (2005) IEC 61400-12 Wind Turbines -- Part 12-1: Power Performance Measurements of Electricity Producing Wind Turbines. IEC Standard

Milan, P., Wächter, M., Barth, S., Peinke, J. (2010) Power Curves for Wind Turbines. In: Wei Tong (Ed.), Wind Power Generation and Wind Turbine Design, Chapter 18, p. 595--612, Southampton: WIT Press

Ragheb, M., Ragheb, A.M. (2011) Wind Turbines Theory -- The Betz Equation and Optimal Rotor Tip Speed Ratio. In: Rupp Carriveau (Ed.), Fundamental and Advanced Topics in Wind Power, Chapter 2, p. 19--38, InTech

Examples

Run this code
if (FALSE) {
## create power curve
# minimal theoretic power curve
pc.1 <- pc(list(1:25, c(0, 0, seq(0,1000,length.out=8), rep(1000,15))))
pc.1
	
# detailed power curve
v <- seq(3, 25, 0.5)
p <- c(5, 15.5, 32, 52, 71, 98, 136, 182, 230, 285, 345, 419, 497, 594, 
  687, 760, 815, 860, 886, rep(900, 26))	
cp <- c(0.263, NA, 0.352, NA, 0.423, NA, 0.453, NA, 0.470, NA, 0.478, 
  NA, 0.480, NA, 0.483, NA, 0.470, NA, 0.429, NA, 0.381, NA, 0.329, 
  NA, 0.281, NA, 0.236, NA, 0.199, NA, 0.168, NA, 0.142, NA, 0.122, 
  NA, 0.105, NA, 0.092, NA, 0.080, NA, 0.071, NA, 0.063)
ct <- c(0.653, NA, 0.698, NA, 0.705, NA, 0.713, NA, 0.720, NA, 0.723, NA, 
  0.724, NA, 0.727, NA, 0.730, NA, 0.732, NA, 0.385, NA, 0.301, NA, 0.242, 
  NA, 0.199, NA, 0.168, NA, 0.146, NA, 0.128, NA, 0.115, NA, 0.103, NA, 
  0.094, NA, 0.086, NA, 0.079, NA, 0.073)	

# variables as list
pc.2 <- pc(list(v=v, p=p, cp=cp, ct=ct), 
  rho=1.195, rated.p=900, desc="PowerWind 56")
pc.2

# variables as data frame
pc.3 <- pc(data.frame(v=v, p=p, cp=cp, ct=ct), 
  rho=1.195, rated.p=900, desc="PowerWind 56")
pc.3

## import power curve
## note: XML package required for WAsP .wtg files
vestas.v90 <- pc("Vestas_V90_2.0MW.wtg")  # bReeze wtg file
repower.mm92 <- pc("Repower_MM92_2.0MW.pow")  # bReeze pow file
#my.pc <- pc("~/Projects/bReeze/Sandbox/myPC.wtg")  # user file


## plot power curve
plot(pc.2)  # default
plot(pc.2, cp=FALSE, ct=FALSE)  # drop coefficients

# customize plot
plot(pc.2, bty="u", bty.leg="o", cex.axis=0.8, cex.lab=0.9, 
  cex.leg=0.7, col=c("red", gray(0.4), gray(0.4)), col.axis=gray(0.2), 
  col.box=gray(0.5), col.lab=gray(0.2), col.leg=gray(0.2), 
  col.ticks=gray(0.5), las=2, leg.text=c("electric Power", 
  "power coefficient", "thrust coefficient"), lty=2:4, lwd=c(2,1,1), 
  mar=c(3.5,3.5,0.5,3.5), mgp=c(1.8,0.6,0), pos.leg="top", 
  xlab="velocity [m/s]", ylab=c("electric power", "coefficients"), 
  ylim=c(0,1100), x.intersp=1, y.intersp=1)
}

Run the code above in your browser using DataLab