Rotor model visualizations¶
Rotor models are responsible for averaging ambient background quantities over the rotor disc, yielding rotor equivalent ambient results.
Note that in foxes wake effects are averaged by partial wakes models, not by rotor models.
In [1]:
import foxes
import matplotlib.pyplot as plt
mbook = foxes.ModelBook()
CentreRotor¶
The simplest rotor model consists of a single point located at the rotor centre. For spatially uniform ambient states, that’s all you need - but beware of chosing this as a partial wakes model, since for wakes rotor averaging is always crucial.
In [2]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["centre"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_5_0.png](../_images/notebooks_rotor_models_5_0.png)
GridRotor¶
Grid rotors are based on regular two dimensional grids with non-uniform weights. The weights represent the overlap of the area element that is associated with each rotor point and the rotor disc.
Concrete grid rotors with N x N
points can be constructed as GridRotor(n=N)
. Note that points with zero weights will be removed from the point list. These models are available in the default model book under the name template grid<n2>
, where n2
represents N x N
.
If you prefer to switch off the weights, i.e., use equal weights for all points of the regular grid, simply set reduce=False
as an argument of the constructor. Such models are available in the default model book under the name template grid<n2>_raw
, where n2
represents N x N
.
grid4¶
In [3]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid4"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_9_0.png](../_images/notebooks_rotor_models_9_0.png)
grid9¶
In [4]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid9"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_11_0.png](../_images/notebooks_rotor_models_11_0.png)
grid16¶
In [5]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid16"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_13_0.png](../_images/notebooks_rotor_models_13_0.png)
grid25¶
In [6]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid25"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_15_0.png](../_images/notebooks_rotor_models_15_0.png)
grid25_raw¶
In [7]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid25_raw"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_17_0.png](../_images/notebooks_rotor_models_17_0.png)
grid36¶
In [8]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid36"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_19_0.png](../_images/notebooks_rotor_models_19_0.png)
grid100¶
In [9]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid100"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_21_0.png](../_images/notebooks_rotor_models_21_0.png)
grid400¶
In [10]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["grid400"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_23_0.png](../_images/notebooks_rotor_models_23_0.png)
LevelRotor¶
Level rotors consist of a single vertical line through the rotor centre. Each point represents a vertical slice of the rotor disc. These rotors are intended to be used in combination with ambient states that vary in vertical direction only (height dependent data).
Never combine this rotor model with partial wakes rotor_points
, since for wake averaging, the rotor points simply don’t make much sense.
A level rotor with N
levels can be constructed as LevelRotor(n=N)
(add reduce=False
if uniform weights should be used). The default model book contains level rotors with N
levels under the name templates level<N>
and level<N>_raw
for reduce=True
and reduce=False
, respectively.
level2¶
In [11]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level2"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_27_0.png](../_images/notebooks_rotor_models_27_0.png)
level3¶
In [12]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level3"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_29_0.png](../_images/notebooks_rotor_models_29_0.png)
level5¶
In [13]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level5"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_31_0.png](../_images/notebooks_rotor_models_31_0.png)
level5_raw¶
In [14]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level5_raw"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_33_0.png](../_images/notebooks_rotor_models_33_0.png)
level10¶
In [15]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level10"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_35_0.png](../_images/notebooks_rotor_models_35_0.png)
level20¶
In [16]:
o = foxes.output.RotorPointPlot(mbook.rotor_models["level20"])
ax = o.get_point_figure()
plt.show()
![../_images/notebooks_rotor_models_37_0.png](../_images/notebooks_rotor_models_37_0.png)