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 |
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 |
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 |
method |
Method to be used for the calculation. One of |
alpha |
Hellman exponent – one general exponent or a vector of exponents (one per sector). Optional and only used if the choosen |
subset |
Optional start and end time stamp for a data subset, as string vector |
digits |
Number of decimal places to be used for results as numeric value. Default is |
print |
If |
x |
Wind profile object created by |
sector |
Direction sector as integer (sector number) or string (sector code). If missing or |
measured |
If |
... |
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 |
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 is1
), 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, one for each set plotted. -
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 (ifbty
) – 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 of0
(always parallel to the axis, default),1
(always horizontal),2
(always perpendicular to the axis),3
(always vertical). -
lty
: Line type(s) of the profile lines – assigned likecol
. Seepar
for available line types. -
lwd
: Line width(s) of the profile lines – assigned likecol
. Seepar
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 isc(4, 4, 1, 1)
. -
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 isc(2.5, 0.7, 0)
. -
pos.leg
: Position of legend – one of"bottomright"
,"bottom"
,"bottomleft"
,"left"
,"topleft"
,"top"
,"topright"
,"right"
or"center"
. UseNULL
to hide the legend. -
xlab
: Alternative label for the x axis. -
ylab
: Alternative label for the y axis. -
xlim
: Numeric vector of the x limits of the plot. -
ylim
: Numeric vector of the y limits. -
x.intersp
: Horizontal interspacing factor for legend text, as numeric – default is0.4
. -
y.intersp
: Vertical line distance for legend text, as numeric – default is0.8
.
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
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)