Skip to content
Snippets Groups Projects
Commit 133cca8d authored by Mikkel Friis-Møller's avatar Mikkel Friis-Møller Committed by Mads M. Pedersen
Browse files

New PyWake syntax

Updated docker image with texlive-latex-extra for PyWake report
parent 9c57137a
No related branches found
No related tags found
No related merge requests found
Pipeline #10345 failed
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
# ================================================================== # ==================================================================
FROM continuumio/anaconda3:latest FROM continuumio/anaconda3:latest
MAINTAINER Jenni Rinker <rink@dtu.dk> MAINTAINER Jenni Rinker <rink@dtu.dk>
ENV PATH="/opt/conda/bin:${PATH}"
# get list of update linux files and install lib for matplotlib # get list of update linux files and install lib for matplotlib
...@@ -12,7 +13,8 @@ MAINTAINER Jenni Rinker <rink@dtu.dk> ...@@ -12,7 +13,8 @@ MAINTAINER Jenni Rinker <rink@dtu.dk>
RUN apt-get update && \ RUN apt-get update && \
apt-get install make && \ apt-get install make && \
apt-get install libgl1-mesa-glx -y && \ apt-get install libgl1-mesa-glx -y && \
apt-get install gcc gfortran -y apt-get install gcc gfortran -y && \
apt-get install -y texlive-latex-extra
# use conda to update itself and install packages not in the # use conda to update itself and install packages not in the
......
...@@ -27,11 +27,11 @@ def main(): ...@@ -27,11 +27,11 @@ def main():
n_wt = 16 n_wt = 16
site = IEA37Site(n_wt) site = IEA37Site(n_wt)
windTurbines = IEA37_WindTurbines() windTurbines = IEA37_WindTurbines()
wake_model = IEA37SimpleBastankhahGaussian(windTurbines) wake_model = IEA37SimpleBastankhahGaussian(site, windTurbines)
Drotor_vector = [windTurbines.diameter()] * n_wt Drotor_vector = [windTurbines.diameter()] * n_wt
power_rated_vector = [float(windTurbines.power(20)/1000)] * n_wt power_rated_vector = [float(windTurbines.power(20)/1000)] * n_wt
hub_height_vector = [windTurbines.hub_height()] * n_wt hub_height_vector = [windTurbines.hub_height()] * n_wt
AEPCalc = AEPCalculator(site, windTurbines, wake_model) AEPCalc = AEPCalculator(wake_model)
def aep_func(x, y, **kwargs): def aep_func(x, y, **kwargs):
return AEPCalc.calculate_AEP(x_i=x, y_i=y).sum(-1).sum(-1)*10**6 return AEPCalc.calculate_AEP(x_i=x, y_i=y).sum(-1).sum(-1)*10**6
......
...@@ -51,8 +51,8 @@ def main(): ...@@ -51,8 +51,8 @@ def main():
site = Amalia1Site(f, mean_wsp=wind_speed) site = Amalia1Site(f, mean_wsp=wind_speed)
site.initial_position = np.array([turbineX, turbineY]).T site.initial_position = np.array([turbineX, turbineY]).T
wt = NREL5MWREF() wt = NREL5MWREF()
wake_model = NOJ(wt) wake_model = NOJ(site, wt)
aep_calculator = AEPCalculator(site, wt, wake_model) aep_calculator = AEPCalculator(wake_model)
n_wt = len(turbineX) n_wt = len(turbineX)
differentiable = differentiable differentiable = differentiable
wake_model_options = {'nSamples': 0, wake_model_options = {'nSamples': 0,
......
examples/docs/figures/example_1_constrained_layout_optimization.png

30.1 KiB | W: | H:

examples/docs/figures/example_1_constrained_layout_optimization.png

30 KiB | W: | H:

examples/docs/figures/example_1_constrained_layout_optimization.png
examples/docs/figures/example_1_constrained_layout_optimization.png
examples/docs/figures/example_1_constrained_layout_optimization.png
examples/docs/figures/example_1_constrained_layout_optimization.png
  • 2-up
  • Swipe
  • Onion skin
examples/docs/figures/example_2_wake_comparison.png

8.25 KiB | W: | H:

examples/docs/figures/example_2_wake_comparison.png

8.24 KiB | W: | H:

examples/docs/figures/example_2_wake_comparison.png
examples/docs/figures/example_2_wake_comparison.png
examples/docs/figures/example_2_wake_comparison.png
examples/docs/figures/example_2_wake_comparison.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -47,8 +47,8 @@ def main(): ...@@ -47,8 +47,8 @@ def main():
if __name__ == '__main__': if __name__ == '__main__':
site = IEA37Site(16) site = IEA37Site(16)
windTurbines = IEA37_WindTurbines() windTurbines = IEA37_WindTurbines()
wake_model = IEA37SimpleBastankhahGaussian(windTurbines) wake_model = IEA37SimpleBastankhahGaussian(site, windTurbines)
aep_calc = PyWakeAEP(site, windTurbines, wake_model) aep_calc = PyWakeAEP(wake_model)
tf = TopFarmProblem( tf = TopFarmProblem(
design_vars=dict(zip('xy', site.initial_position.T)), design_vars=dict(zip('xy', site.initial_position.T)),
cost_comp=aep_calc.get_TopFarm_cost_component(16), cost_comp=aep_calc.get_TopFarm_cost_component(16),
......
...@@ -22,7 +22,7 @@ def test_z_boundary(): ...@@ -22,7 +22,7 @@ def test_z_boundary():
def test_boundary_component(): def test_boundary_component():
with pytest.raises(NotImplementedError, message="Boundary type 'missing' is not implemented"): with pytest.raises(NotImplementedError, match="Boundary type 'missing' is not implemented"):
ConvexBoundaryComp(3, [(0, 0), (0, 1)], xy_boundary_type='missing') ConvexBoundaryComp(3, [(0, 0), (0, 1)], xy_boundary_type='missing')
# def test_xyz_boundary(): # def test_xyz_boundary():
......
...@@ -97,3 +97,13 @@ def test_with_convex_boundary_and_constrain(get_tf, driver): ...@@ -97,3 +97,13 @@ def test_with_convex_boundary_and_constrain(get_tf, driver):
uta.assertGreaterEqual(y.min(), 0) # y uta.assertGreaterEqual(y.min(), 0) # y
npt.assert_array_less(y, x) npt.assert_array_less(y, x)
assert all(np.sqrt(np.diff(x)**2 + np.diff(y)**2) >= 2) assert all(np.sqrt(np.diff(x)**2 + np.diff(y)**2) >= 2)
if __name__ == '__main__':
tf = get_InitialXYZOptimizationProblem(xy_boundary=[(0, 0), (10, 0), (10, 10)], xy_boundary_type='convex_hull',
min_spacing=2, driver=ConstrainedDiscardGenerator(UniformGenerator(10, 0)))
arr = tf.get_DOE_array()
x, y = [arr[:, i] for i in range(2)]
uta.assertGreaterEqual(x.min(), 0) # x
uta.assertGreaterEqual(y.min(), 0) # y
npt.assert_array_less(y, x)
...@@ -84,9 +84,7 @@ def test_smart_start_aep_map(): ...@@ -84,9 +84,7 @@ def test_smart_start_aep_map():
site.default_ws = ws_lst site.default_ws = ws_lst
site.default_wd = wd_lst site.default_wd = wd_lst
aep = PyWakeAEP(site=site, aep = PyWakeAEP(wake_model=NOJ(site, turbines))
windTurbines=turbines,
wake_model=NOJ(turbines))
aep_1wt = aep.calculate_AEP([0], [0]).sum() aep_1wt = aep.calculate_AEP([0], [0]).sum()
tf = TopFarmProblem( tf = TopFarmProblem(
...@@ -131,9 +129,7 @@ def test_smart_start_aep_map_large_radius(): ...@@ -131,9 +129,7 @@ def test_smart_start_aep_map_large_radius():
site.default_ws = ws_lst site.default_ws = ws_lst
site.default_wd = wd_lst site.default_wd = wd_lst
aep = PyWakeAEP(site=site, aep = PyWakeAEP(wake_model=NOJ(site, turbines))
windTurbines=turbines,
wake_model=NOJ(turbines))
aep_1wt = aep.calculate_AEP([0], [0]).sum() aep_1wt = aep.calculate_AEP([0], [0]).sum()
tf = TopFarmProblem( tf = TopFarmProblem(
design_vars={'x': x, 'y': y}, design_vars={'x': x, 'y': y},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment