windprofile {bReeze}R Documentation

Calculate wind profile

Description

Calculates a wind profile, using on the Hellman exponential law.

Usage

windprofile(mast, v.set, dir.set, num.sectors=12, 
  method=c("hellman", "loglm", "fixed"), alpha=NULL, 
  subset, digits=3, print=TRUE)
pro(mast, v.set, dir.set, num.sectors=12, 
  method=c("hellman", "loglm", "fixed"), alpha=NULL, 
  subset, digits=3, print=TRUE)

## S3 method for class 'windprofile'
plot(x, sector, measured=TRUE, ...)

Arguments

mast

Met mast object created by mast.

v.set

Set(s) to be used for wind speed, specified as set number or set name. The first given dataset is used as reference height. If one single dataset is given, the same Hellman exponent is assumed for each sector and can be specified using alpha (see Details for empirical values). If two or more datasets are given, the Hellman exponent is calculated for each sector. If more than two datasets are given, currently only the first two datasets are used.

dir.set

Set to be used for wind direction, specified as set number or set name.

num.sectors

Number of wind direction sectors as integer value greater 1. Default is 12.

method

Method to be used for the calculation. One of "hellman", "loglm" or "fixed" (see Details section). Optional argument: "fixed" is used if v.set is a single dataset, "hellman" is used if v.set specifies two, "loglm" if v.set specifies three datasets.

alpha

Hellman exponent – one general exponent or a vector of exponents (one per sector). Optional and only used if the choosen method is "fixed". If alpha is NULL (the default), 0.2 is used as default.

subset

Optional start and end time stamp for a data subset, as string vector c(start, end). The time stamps format shall follow the rules of ISO 8601 international standard, e.g. "2012-08-08 22:55:00".

digits

Number of decimal places to be used for results as numeric value. Default is 3.

print

If TRUE (the default), results are printed directly.

x

Wind profile object created by profile.

sector

Direction sector as integer (sector number) or string (sector code). If missing or NULL, all sectors are plotted. For plotting the general profile only use "all".

measured

If TRUE (the default), measured sector mean wind speeds are added to the plot.

...

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

Details

The average wind speed as a function of height above ground gives a site's wind profile. For reasons of cost-efficiency met mast heights are usually below hub heights of modern wind turbines, thus measured wind speeds must be extrapolated by based wind profile. A common method is the Hellman exponential law or power law ("hellman"), defined as:

\frac{v_2}{v_1} = \left(\frac{h_2}{h_1} \right)^\alpha

where v_2 is the wind speed at height h_2, v_1 is the wind speed at height h_1 and \alpha is the Hellman exponent (also power law exponent or shear exponent).

To calculate \alpha, profile uses the inverted equation as:

\alpha = \frac{\log \left(\frac{v_2}{v_1} \right)}{\log \left(\frac{h_2}{h_1} \right)}

If data is available for two or more heights, a log-linear model fit can be used for the computation of \alpha. In this case the data is logarithmized to allow for fitting a linear model. The models slope is then used as \alpha. Please note: depending on the data this method might result in negative \alpha.

If the wind speed is only known for one height, \alpha must be estimated. \alpha depends on various issues, including roughness and terrain of the site. Some empirical values for temperate climates are:

Site conditions \alpha
Open water 0.08--0.15
Flat terrain, open land cover 0.16--0.22
Complex terrain with mixed or continuous forest 0.25--0.40
Exposed ridgetops, open land cover 0.10--0.14
Sloping terrain with drainage flows 0.10--0.15

Value

Returns a list of:

profile

Data frame containing alpha and reference wind speed for each direction sector.

h.ref

Reference height of the profile (the height of the first given dataset in v.set).

Optional graphical parameters

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

Author(s)

Christian Graul

References

Bañuelos-Ruedas, F., Camacho, C.A., Rios-Marcuello, S. (2011) Methodologies Used in the Extrapolation of Wind Speed Data at Different Heights and Its Impact in the Wind Energy Resource Assessment in a Region. In: Gastón O. Suvire (Ed.), Wind Farm – Technical Regulations, Potential Estimation and Siting Assessment, Chapter 4, p. 97–114, InTech

Brower, M., Marcus, M., Taylor, M., Bernadett, D., Filippelli, M., Beaucage, P., Hale, E., Elsholz, K., Doane, J., Eberhard, M., Tensen, J., Ryan, D. (2010) Wind Resource Assessment Handbook. http://www.renewablenrgsystems.com/TechSupport/~/media/Files/PDFs/wind_resource_handbook.ashx

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

See Also

mast

Examples

## Not run: 
## load and prepare data
data("winddata", package="bReeze")
set40 <- set(height=40, v.avg=winddata[,2], dir.avg=winddata[,14])
set30 <- set(height=30, v.avg=winddata[,6], dir.avg=winddata[,16])
set20 <- set(height=20, v.avg=winddata[,10], v.std=winddata[,13])
ts <- timestamp(timestamp=winddata[,1])
neubuerg <- mast(timestamp=ts, set40, set30, set20)
neubuerg <- clean(mast=neubuerg)


## calculate profile
# create profile based on one height
windprofile(mast=neubuerg, v.set=1, dir.set=1)	# default alpha=0.2
windprofile(mast=neubuerg, v.set=1, dir.set=1, alpha=0.15)

# calculate profile based on two heights
windprofile(mast=neubuerg, v.set=c(1,2), dir.set=1)
windprofile(mast=neubuerg, v.set=c(1,3), dir.set=1)
# same as above
windprofile(mast=neubuerg, v.set=c("set1", "set3"), dir.set="set1")

# calculate profile based on three heights
windprofile(mast=neubuerg, v.set=c(1,2,3), dir.set=1)

# change the method used for computation
# note: negative alphas!
windprofile(mast=neubuerg, v.set=c(1,2), dir.set=1, method="loglm")

# change number of direction sectors
windprofile(mast=neubuerg, v.set=c(1,2), dir.set=1, num.sectors=8)

# data subsets
windprofile(mast=neubuerg, v.set=1, dir.set=1, 
  subset=c("2009-12-01 00:00:00", "2009-12-31 23:50:00"))
windprofile(mast=neubuerg, v.set=c(1,2), dir.set=1, 
  subset=c("2010-01-01 00:00:00", NA)) # just 'start' time stamp
windprofile(mast=neubuerg, v.set=c(1:3), dir.set=1, 
  subset=c(NA, "2009-12-31 23:50:00")) # just 'end' time stamp

# change number of digits and hide results
windprofile(mast=neubuerg, v.set=1, dir.set=1, digits=2)
neubuerg.wp <- windprofile(mast=neubuerg, v.set=1, dir.set=1, print=FALSE)
neubuerg.wp


## plot profile objects
plot(neubuerg.wp)  # default
plot(neubuerg.wp, measured=FALSE)  # omit 'measured' points

# plot only one sector
plot(neubuerg.wp, sector=3)	# ENE by sector number
plot(neubuerg.wp, sector="ene")	# ENE by sector code
plot(neubuerg.wp, sector="all")	# general profile

# customize plot
plot(neubuerg.wp, bty="l", bty.leg="o", cex.axis=0.8, 
  cex.lab=0.9, cex.leg=0.7, col=rainbow(13), col.axis=gray(0.2), 
  col.box=gray(0.2), col.lab=gray(0.2), col.leg=gray(0.2), 
  col.ticks=gray(0.2), las=0, lty=c(rep(3,12),1), 
  lwd=c(rep(1.2,12), 1.7), mar=c(3,3,0.5,0.5), mgp=c(2,0.7,0), 
  pos.leg="right", xlab="velocity [m/s]", ylab="height [m]", 
  xlim=c(0,11), ylim=c(0,150), x.intersp=1, y.intersp=1.2)

## End(Not run)

[Package bReeze version 0.4-4 Index]