PartialJensen: Computes the partial Jensen wake effect.

View source: R/Functions.R

PartialJensenR Documentation

Computes the partial Jensen wake effect.

Description

If a rotor disc of a first turbine is only partially covered by a wake cone of a second turbine, the penalty must be adjusted accordingly. This function returns partial penalties, if partial wake applies, or full penalty, if not.

Usage

PartialJensen(x2, y2, x1, y1, Dirs, SDs, Elev, Z = NULL, DrawTop = FALSE,
DrawFront = FALSE, DrawSide = FALSE)

Arguments

x1

must be a single value. Provide the x location of the first turbine.

y1

must be a single value. Provide the y location of the first turbine.

x2

must be a single value. Provide the x location of the second turbine.

y2

must be a single value. Provide the y location of the second turbine.

Dirs

a matrix containing average yearly wind directions. Usually, the third element of the list object FarmData will be used as this matrix.

SDs

a matrix containing average yearly wind direction standard deviations. Usually, the fourth element of the list object FarmData will be used as this matrix.

Elev

a matrix containing elevations. Usually, the fifth element of the list object FarmData will be used as this matrix.

Z

accepts a vector of two representing the heights of the turbines at the two points in meters. If NULL (the default), PartialJensen uses e$FarmVars$z as the heights information for both points. In all cases, the heights are added to the terrain topography information from Elev.

DrawTop

If TRUE, draws a top view of the partial wake situation. Defaults to FALSE. Should not be TRUE at the same time as DrawFront or DrawSide.

DrawFront

If TRUE, draws a front view of the partial wake situation. Defaults to FALSE. Should not be TRUE at the same time as DrawTop or DrawSide.

DrawSide

If TRUE, draws a side view of the partial wake situation. Defaults to FALSE. Should not be TRUE at the same time as DrawTop or DrawFront.

Details

The function first checks whether there is partial coverage. If so, it adjusts the penalty internally given by PairPenalty and if not, returns the full penalty. Therefore, the function is imposed over an existing Jensen model and refines it.
Note that the penalty is the deduction to wind speed. It applies to wind power by its third power, so the user is responsible to take it to its cube himself. Profit does that automatically internally.

Value

PartialJensen returns a penality between 0 and 1.

Author(s)

Carsten Croonenbroeck

References

Frandsen, S. (1992). On the wind speed reduction in the center of large clusters of wind turbines. Journal of Wind Engineering and Industrial Aerodynamics, 39(1-3), pp. 251-265, https://doi.org/10.1016/0167-6105(92)90551-K.

See Also

JensenTrapezoid to check whether there are wake effects present. FarmVars for the data object. PairPenalty for the non-partial wake penalty.

Examples

P1 <- c(0.5868695, 0.9722714)
P2 <- c(0.4827957, 0.9552658)

if (exists("FarmData", envir = e, inherits = FALSE))
{
  Dirs <- e$FarmData[[3]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
  SDs <- e$FarmData[[4]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
  Elev <- e$FarmData[[5]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
} else
{
  Dirs <- FarmData[[3]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
  SDs <- FarmData[[4]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
  Elev <- FarmData[[5]][e$FarmVars$StartPoint:e$FarmVars$EndPoint,
    e$FarmVars$StartPoint:e$FarmVars$EndPoint]
}

## First, compute the non-partial penalty:
Penal <- PairPenalty(P2[1], P2[2], P1[1], P1[2], Dirs, SDs)

## Then, correct it for partial coverage:
Penal2 <- PartialJensen(P2[1], P2[2], P1[1], P1[2], Dirs, SDs, Elev)

## Now draw a top view:
Penal2 <- PartialJensen(P2[1], P2[2], P1[1], P1[2], Dirs, SDs, Elev, DrawTop = TRUE)

## Now draw a front view:
Penal2 <- PartialJensen(P2[1], P2[2], P1[1], P1[2], Dirs, SDs, Elev, DrawFront = TRUE)
## Note that the downwind point is somewhat elevated, seems 'right'
## from the upwind point of view, and far away (rotor disc seems smaller).

## Now draw a side view:
Penal2 <- PartialJensen(P2[1], P2[2], P1[1], P1[2], Dirs, SDs, Elev, DrawSide = TRUE)

## For elevation, see
Height(P1[1], P1[2], Elev) # (upwind point)
## and
Height(P2[1], P2[2], Elev) # (downwind point)

## Instead, for the next example, the downwind point is closer
## to the upwind point (larger impression of rotor disc), 'left'
## of it and lower in terms of elevation:
x1 <- 0.5
y1 <- 0.5
x2 <- 0.45
y2 <- 0.478
Penal <- PairPenalty(x2, y2, x1, y1, Dirs, SDs)
Penal2 <- PartialJensen(x2, y2, x1, y1, Dirs, SDs, Elev, DrawTop = TRUE)
Penal2 <- PartialJensen(x2, y2, x1, y1, Dirs, SDs, Elev, DrawFront = TRUE)
## For elevation, see
Height(x1, y1, Elev) # (upwind point)
## and
Height(x2, y2, Elev) # (downwind point)

wflo documentation built on Jan. 15, 2023, 5:10 p.m.