windprofile: Calculate wind profile

Description Usage Arguments Details Value Optional graphical parameters Author(s) References See Also Examples

View source: R/windprofile.R

Description

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

Usage

1
2
3
4
5
6
7
8
9
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:

v2/v1 = (h2/h1)^alpha

where v2 is the wind speed at height h2, v1 is the wind speed at height h1 and alpha is the Hellman exponent (also power law exponent or shear exponent).

To calculate alpha, profile uses the inverted equation as:

alpha = log(v2/v1) / log(h2/h1)

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 α
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
## 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)

Example output

 
This is bReeze 0.4-3
 
Type changes("bReeze") to see changes/bug fixes, help(bReeze) for documentation
or citation("bReeze") for how to cite bReeze.
 

Attaching package: 'bReeze'

The following objects are masked from 'package:stats':

    frequency, ts

The following object is masked from 'package:utils':

    timestamp

Pattern found: %d.%m.%Y %H:%M
Cleaning set 1...
2938 samples lower than 0.4 replaced by 'NA' in average wind speed
Cleaning set 2...
3361 samples lower than 0.4 replaced by 'NA' in average wind speed
Cleaning set 3...
2896 samples lower than 0.4 replaced by 'NA' in average wind speed
16645 samples with average wind speed lower than 4 m/s replaced by 'NA' in turbulence intensity

	Wind profile

    alpha wind speed
      [-]      [m/s]
N     0.2      5.848
NNE   0.2      4.137
ENE   0.2      3.889
E     0.2      3.067
ESE   0.2      3.348
SSE   0.2       2.95
S     0.2      3.353
SSW   0.2      5.365
WSW   0.2      6.014
W     0.2      3.779
WNW   0.2      1.954
NNW   0.2      3.227
all   0.2      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=1, dir.set=1, num.sectors=12, method="fixed", alpha=c(0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2), subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N    0.15      5.848
NNE  0.15      4.137
ENE  0.15      3.889
E    0.15      3.067
ESE  0.15      3.348
SSE  0.15       2.95
S    0.15      3.353
SSW  0.15      5.365
WSW  0.15      6.014
W    0.15      3.779
WNW  0.15      1.954
NNW  0.15      3.227
all  0.15      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=1, dir.set=1, num.sectors=12, method="fixed", alpha=c(0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15), subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N   0.254      5.848
NNE  0.24      4.137
ENE 0.154      3.889
E   0.199      3.067
ESE 0.162      3.348
SSE 0.137       2.95
S   0.133      3.353
SSW 0.145      5.365
WSW 0.145      6.014
W   0.203      3.779
WNW 0.311      1.954
NNW 0.193      3.227
all  0.19      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2), dir.set=1, num.sectors=12, method="hellman", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N   0.169      5.848
NNE 0.161      4.137
ENE 0.123      3.889
E   0.089      3.067
ESE 0.075      3.348
SSE 0.062       2.95
S   0.069      3.353
SSW 0.089      5.365
WSW 0.101      6.014
W   0.168      3.779
WNW 0.259      1.954
NNW 0.124      3.227
all 0.125      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 3), dir.set=1, num.sectors=12, method="hellman", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N   0.169      5.848
NNE 0.161      4.137
ENE 0.123      3.889
E   0.089      3.067
ESE 0.075      3.348
SSE 0.062       2.95
S   0.069      3.353
SSW 0.089      5.365
WSW 0.101      6.014
W   0.168      3.779
WNW 0.259      1.954
NNW 0.124      3.227
all 0.125      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 3), dir.set=1, num.sectors=12, method="hellman", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N    0.15      5.848
NNE 0.128      4.137
ENE  0.08      3.889
E   0.035      3.067
ESE 0.008      3.348
SSE 0.021       2.95
S    0.03      3.353
SSW 0.054      5.365
WSW 0.047      6.014
W   0.089      3.779
WNW 0.114      1.954
NNW 0.022      3.227
all 0.078      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2, 3), dir.set=1, num.sectors=12, method="loglm", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

     alpha wind speed
       [-]      [m/s]
N     0.21      5.848
NNE   0.14      4.137
ENE  0.022      3.889
E    0.108      3.067
ESE   0.04      3.348
SSE  0.044       2.95
S    0.024      3.353
SSW  0.047      5.365
WSW  0.036      6.014
W    0.018      3.779
WNW -0.057      1.954
NNW -0.176      3.227
all  0.058      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2), dir.set=1, num.sectors=12, method="loglm", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N   0.251      5.639
NE  0.183      3.976
E   0.191       3.22
SE  0.148      3.134
S   0.137      3.501
SW  0.141      5.889
W   0.195      4.323
NW   0.27      2.304
all  0.19      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2), dir.set=1, num.sectors=8, method="hellman", alpha=NULL, subset=NA, digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N     0.2       6.59
NNE   0.2      3.989
ENE   0.2      3.063
E     0.2       2.41
ESE   0.2      2.803
SSE   0.2      3.844
S     0.2      5.001
SSW   0.2      7.757
WSW   0.2       7.46
W     0.2      4.082
WNW   0.2      2.227
NNW   0.2      2.463
all   0.2      6.015

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=1, dir.set=1, num.sectors=12, method="fixed", alpha=c(0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2), subset=c("2009-12-01 00:00:00", "2009-12-31 23:50:00"), digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N     NaN        NaN
NNE   NaN        NaN
ENE 0.006       5.27
E     NaN        NaN
ESE   NaN        NaN
SSE   NaN        NaN
S     NaN        NaN
SSW   NaN        NaN
WSW   NaN        NaN
W     NaN        NaN
WNW   NaN        NaN
NNW   NaN        NaN
all 0.006       5.27

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2), dir.set=1, num.sectors=12, method="hellman", alpha=NULL, subset=c("2010-01-01 00:00:00", "NA"), digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N   0.147      5.896
NNE 0.102      4.178
ENE 0.062      4.023
E   0.028      3.176
ESE 0.028      3.428
SSE 0.036      3.102
S   0.042       3.52
SSW 0.057      5.688
WSW 0.051      6.179
W    0.09      3.856
WNW  0.12      1.981
NNW 0.036      3.305
all 0.079      4.963

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=c(1, 2, 3), dir.set=1, num.sectors=12, method="loglm", alpha=NULL, subset=c("NA", "2009-12-31 23:50:00"), digits=3, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N     0.2       5.85
NNE   0.2       4.14
ENE   0.2       3.89
E     0.2       3.07
ESE   0.2       3.35
SSE   0.2       2.95
S     0.2       3.35
SSW   0.2       5.37
WSW   0.2       6.01
W     0.2       3.78
WNW   0.2       1.95
NNW   0.2       3.23
all   0.2       4.83

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=1, dir.set=1, num.sectors=12, method="fixed", alpha=c(0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2), subset=NA, digits=2, print=TRUE)


	Wind profile

    alpha wind speed
      [-]      [m/s]
N     0.2      5.848
NNE   0.2      4.137
ENE   0.2      3.889
E     0.2      3.067
ESE   0.2      3.348
SSE   0.2       2.95
S     0.2      3.353
SSW   0.2      5.365
WSW   0.2      6.014
W     0.2      3.779
WNW   0.2      1.954
NNW   0.2      3.227
all   0.2      4.831

reference height: 40 m 

call: windprofile(mast=neubuerg, v.set=1, dir.set=1, num.sectors=12, method="fixed", alpha=c(0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2), subset=NA, digits=3, print=FALSE)

bReeze documentation built on May 2, 2019, 3:32 p.m.