Planned intervention: On Thursday 19/09 between 05:30-06:30 (UTC), Zenodo will be unavailable because of a scheduled upgrade in our storage cluster.
Published October 19, 2018 | Version v1
Dataset Open

Wind tunnel experiment of a micro wind farm model

  • 1. KU Leuven
  • 2. Johns Hopkins University

Description

Simultaneous strain gage measurements of sixty porous disk models, in a scaled wind farm with one hundred models, and for fifty-six different layouts. 

For detailed information about the experimental setup and wind farm layouts see: 

Bossuyt, J., Meneveau, C., & Meyers, J. (2018). Effect of layout on asymptotic boundary layer regime in deep wind farms. Physical Review Fluids. See also: https://arxiv.org/abs/1808.09579 .

For more information about the experimental design of the porous disk models, see also:

Bossuyt, J., Howland, M. F., Meneveau, C., & Meyers, J. (2017). Measurement of unsteady loading and power output variability in a micro wind farm model in a wind tunnel. Experiments in Fluids58(1), 1. http://doi.org/10.1007/s00348-016-2278-6

 Bossuyt, J., Meneveau, C., & Meyers, J. (2017). Wind farm power fluctuations and spatial sampling of turbulent boundary layers. Journal of Fluid Mechanics823, 329-344. http://doi.org/10.1017/jfm.2017.328

 

The data contains matrices 'WF_U', 'x', and 'y', and variable 'fs' for each layout. 
The matrix 'WF_U' contains the reconstructed velocity signal in m/s measured by each porous disk, and has size ( 20 , 3 , number of time samples), with 20 the number of porous disk rows, and 3 the number of streamwise aligned porous disk columns in the wind farm. Matrices 'x', and 'y' have size (20,3) and contain the locations of each instrumented porous disk in units of disk diameter D = 0.03m. It is important to note that the wind farm has one extra column of non-instrumented porous disk models on each side, for a total of 20x5=100 porous disk models.The variable 'fs' contains the sampling frequency in Hz, at which all 60 porous disks are simultaneously sampled.

--------------------------------------------------------
Example code to load data in Matlab :
--------------------------------------------------------
filename =  'U_C1_1.h5';
fileID = H5F.open(filename,'H5F_ACC_RDONLY','H5P_DEFAULT');

datasetID = H5D.open(fileID,'WF_U');
WF_U = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
H5D.close(datasetID);

datasetID = H5D.open(fileID,'fs');
fs = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
H5D.close(datasetID);

datasetID = H5D.open(fileID,'x');
x = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
H5D.close(datasetID);

datasetID = H5D.open(fileID,'y');
y = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
H5D.close(datasetID);

H5F.close(fileID);

--------------------------------------------------------
Example code to load data in Python:
--------------------------------------------------------
import h5py
filename = 'U_C1_1.h5'
f = h5py.File(filename, 'r')

U = f['WF_U'][()]
x = f['x'][()]
y = f['y'][()]
fs = f['fs'][0][0]
f.close()

--------------------------------------------------------
Example code to generate figures 15 and 16 of Bossuyt et al. (2018). Effect of layout on asymptotic boundary layer regime in deep wind farms. Physical Review Fluids, in Matlab
--------------------------------------------------------
WF_cases_selected = 1:7;

folder = '/';% folder with files

WF_cases_l = {'U_C1';'U_C2';'NU1_C1';'NU1_C2';'NU2_C1';'NU2_C2';'NU2_C3'};% name of layout variations
WF_cases_n = [6, 7, 11, 8, 11, 7, 6]; % 'number of layout variations for each case

WF_data.x = cell( length(WF_cases_selected) , 1);% x - coordinates of porous disk locations
WF_data.y = cell( length(WF_cases_selected) , 1);% y - coordinates of porous disk locations
WF_data.shift = cell( length(WF_cases_selected) , 1);% spanwise shift of layout series
WF_data.fs = cell( length(WF_cases_selected) , 1);
WF_data.WF_Pm = cell( length(WF_cases_selected) , 1);
WF_data.WF_Um = cell( length(WF_cases_selected) , 1);
WF_data.WF_U_rms = cell( length(WF_cases_selected) , 1);


for i = 1 : length(WF_cases_selected)
    
    WF_data_case = struct;
    WF_data_case.x =              cell( WF_cases_n(i) , 1);
    WF_data_case.y =              cell( WF_cases_n(i) , 1);
    WF_data_case.shift =          cell( WF_cases_n(i) , 1);
    WF_data_case.fs =             cell( WF_cases_n(i) , 1);
    WF_data_case.WF_Pm =          cell( WF_cases_n(i) , 1);
    WF_data_case.WF_Um =          cell( WF_cases_n(i) , 1);
    WF_data_case.WF_U_rms =       cell( WF_cases_n(i) , 1);
    
    for j = 1:WF_cases_n(i)
        clc
        i
        j
        
        WF_data_var = struct;
        
        %read the file
        filename = [folder WF_cases_l{i} '_' num2str(j) '.h5'];
        fileID = H5F.open(filename,'H5F_ACC_RDONLY','H5P_DEFAULT');
        
        datasetID = H5D.open(fileID,'WF_U');
        WF_data_var.WF_U = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
        H5D.close(datasetID);
        
        datasetID = H5D.open(fileID,'fs');
        WF_data_case.fs{j} = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
        H5D.close(datasetID);
        
        datasetID = H5D.open(fileID,'x');
        WF_data_case.x{j} = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
        H5D.close(datasetID);
        
        datasetID = H5D.open(fileID,'y');
        WF_data_case.y{j} = H5D.read(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT');
        H5D.close(datasetID);
        
        H5F.close(fileID);
        
        WF_data_var.WF_P = WF_data_var.WF_U.^3;

        % Time averaged power
        WF_data_case.WF_Pm{j} = mean(WF_data_var.WF_P,3);
        
        % normalize by power in first row: Pi/P1
        WF_data_case.WF_Pm{j} = WF_data_case.WF_Pm{j}./mean(WF_data_case.WF_Pm{j}(1,:));
        
        % Time averaged velocity
        WF_data_case.WF_Um{j} = mean(WF_data_var.WF_U,3);
        
        % u_rms --> TI
        WF_data_case.WF_U_rms{j} = std(WF_data_var.WF_U,[],3);
    end
    
    WF_data.x{i}                = WF_data_case.x;
    WF_data.y{i}                = WF_data_case.y;
    WF_data.fs{i}               = WF_data_case.fs;
    WF_data.WF_Pm{i}            = WF_data_case.WF_Pm;
    WF_data.WF_Um{i}            = WF_data_case.WF_Um;
    WF_data.WF_U_rms{i}         = WF_data_case.WF_U_rms;
    
    %determine spanwise shift for plot legends
    tmp1 = WF_data.y{i}{j-1};
    tmp2 = WF_data.y{i}{j};
    dy = diff( [tmp1(:,1)  tmp2(:,1)] ,1,2);
    dy = max(dy(abs(dy)>0));
    WF_data.shift{i}   = 0:dy:(WF_cases_n(i)-1)*dy;
    
end

%%
line_tick = {'o-','*-','+-','d-','s-','^-','v-','<-','>-','p-','h-'};
line_color = [51,160,44; 141,211,199; 31,120,180; 106,61,154; 227,26,28; 177,89,40; 255,127,0; 166,206,227]./255;

legend_items = cell(size(WF_cases_selected));
for i = 1:length(legend_items)
    legend_items{i} = strrep(WF_cases_l{i},'_','-');
end

%% average power entire farm
row_start = 1;
row_end = 19;
f1 = figure;
set(gcf,'paperposition',[0,0,8.4,4.9])
hold on

for i = 1 : length(WF_cases_selected)
    tmp_P = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_P(j) = mean(mean( WF_data.WF_Pm{i}{j}(row_start:row_end,:)));
    end
    plot( WF_data.shift{i} , tmp_P, line_tick{i} ,'Color', line_color(i,:) ,'MarkerFaceColor', line_color(i,:) )
end

% manualy plot errorbars
for i = 1:length(WF_cases_selected)
    tmp_P = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_P(j) = mean(mean( WF_data.WF_Pm{i}{j}(row_start:row_end,:)));
    end
    px = WF_data.shift{i} ;
    py = tmp_P;
    pw = 0.05;
    pe = zeros(size(px))+0.01;%for uncertainty value see Bossuyt et al. (2018) Physical Review Fluids. 
    for j =  1:WF_cases_n(i)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)+pe(j)  py(j)+pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)-pe(j)  py(j)-pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)  px(j)],[py(j)-pe(j)  py(j)+pe(j)],':', 'Color', line_color(i,:),'LineWidth',0.5)
    end
end
xlabel('\Delta_y [D]')
ylabel('$\langle P_i  /P_1\rangle_{1}^{19}$','Interpreter','Latex')
box('on')
ylim([0.35 0.66])
xlim([-0.1 2.6])
legend1 = legend(legend_items');
set(legend1,'Location','southeast');
print(f1, 'WF_Pm_all','-dpng','-r300')

%%  average power end of farm
row_start = 16;
row_end = 19;
f2 = figure;
set(gcf,'paperposition',[0,0,8.4,4.9])
hold on

for i = 1 : length(WF_cases_selected)
    tmp_P = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_P(j) = mean(mean( WF_data.WF_Pm{i}{j}(row_start:row_end,:)));
    end
    plot( WF_data.shift{i} , tmp_P, line_tick{i} ,'Color', line_color(i,:) ,'MarkerFaceColor', line_color(i,:) )
end

% manualy plot errorbars
for i = 1:length(WF_cases_selected)
    tmp_P = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_P(j) = mean(mean( WF_data.WF_Pm{i}{j}(row_start:row_end,:)));
    end
    px = WF_data.shift{i} ;
    py = tmp_P;
    pw = 0.05;
    pe = zeros(size(px))+0.02; %for uncertainty value see Bossuyt et al. (2018) Physical Review Fluids. 
    for j =  1:WF_cases_n(i)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)+pe(j)  py(j)+pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)-pe(j)  py(j)-pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)  px(j)],[py(j)-pe(j)  py(j)+pe(j)],':', 'Color', line_color(i,:),'LineWidth',0.5)
    end
end
xlabel('\Delta_y [D]')
ylabel('$\langle P_i  /P_1\rangle_{16}^{19}$','Interpreter','Latex')
box('on')
ylim([0.27 0.52])
xlim([-0.1 2.6])
legend1 = legend(legend_items');
set(legend1,'Location','southeast');
print(f2, 'WF_Pm_end', '-dpng','-r300')

%% plot average unsteady loading total farm
row_start = 1;
row_end = 19;
f3 = figure;
set(gcf,'paperposition',[0,0,8.4,4.9])
hold on
for i = 1 : length(WF_cases_selected)
    tmp_TI = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_TI(j) =  mean(mean(WF_data.WF_U_rms{i}{j}(row_start:row_end,:)./WF_data.WF_Um{i}{j}(row_start:row_end,:)))*100;
    end
    plot( WF_data.shift{i} , tmp_TI , line_tick{i} ,'Color', line_color(i,:)  ,'MarkerFaceColor', line_color(i,:))
end

% manualy plot errorbars
for i = 1:length(WF_cases_selected)
    tmp_TI = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_TI(j) =  mean(mean(WF_data.WF_U_rms{i}{j}(row_start:row_end,:)./WF_data.WF_Um{i}{j}(row_start:row_end,:)))*100;
    end
    px = WF_data.shift{i} ;
    py = tmp_TI;
    pw = 0.05;
    pe = zeros(size(px))+ 0.004*tmp_TI;%for uncertainty value see Bossuyt et al. (2018) Physical Review Fluids. 
    for j =  1:WF_cases_n(i)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)+pe(j)  py(j)+pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)-pe(j)  py(j)-pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)  px(j)],[py(j)-pe(j)  py(j)+pe(j)],':', 'Color', line_color(i,:),'LineWidth',0.5)
    end
end
xlabel('\Delta_y [D]')
ylabel('$ \langle TI \rangle_{1}^{19} [\%]$','Interpreter','Latex')
box('on')
xlim([-0.1 2.6])
legend1 = legend(legend_items');
set(legend1,'Location','northeast');
print(f3, 'WF_TI_all','-dpng','-r300')

%% plot average unsteady loading end of farm
row_start = 16;
row_end = 19;
f4 = figure;
set(gcf,'paperposition',[0,0,8.4,4.9])
hold on
for i = 1 : length(WF_cases_selected)
    tmp_TI = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_TI(j) =  mean(mean(WF_data.WF_U_rms{i}{j}(row_start:row_end,:)./WF_data.WF_Um{i}{j}(row_start:row_end,:)))*100;
    end
    plot( WF_data.shift{i} , tmp_TI , line_tick{i} ,'Color', line_color(i,:)  ,'MarkerFaceColor', line_color(i,:))
end

% manualy plot errorbars
for i = 1:length(WF_cases_selected)
    tmp_TI = zeros(size(WF_data.shift{i}));
    for j =  1:WF_cases_n(i)
        tmp_TI(j) =  mean(mean(WF_data.WF_U_rms{i}{j}(row_start:row_end,:)./WF_data.WF_Um{i}{j}(row_start:row_end,:)))*100;
    end
    px = WF_data.shift{i} ;
    py = tmp_TI;
    pw = 0.05;
    pe = zeros(size(px))+ 0.01*tmp_TI;%for uncertainty value see Bossuyt et al. (2018) Physical Review Fluids. 
    for j =  1:WF_cases_n(i)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)+pe(j)  py(j)+pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)-pw/2  px(j)+pw/2] , [py(j)-pe(j)  py(j)-pe(j)],'-', 'Color', line_color(i,:),'LineWidth',0.5)
        plot(  [px(j)  px(j)],[py(j)-pe(j)  py(j)+pe(j)],':', 'Color', line_color(i,:),'LineWidth',0.5)
    end
end
xlabel('\Delta_y [D]')
ylabel('$ \langle TI \rangle_{16}^{19} [\%]$','Interpreter','Latex')
box('on')
xlim([-0.1 2.6])
legend1 = legend(legend_items');
set(legend1,'Location','northeast');
print(f4, 'WF_TI_end','-dpng','-r300')

 

Files

Files (13.2 GB)

Name Size Download all
md5:9ed83cd52832358b1aa2092a7619504a
148.9 MB Download
md5:2b901a89e74ef8010dd586306d34892f
261.7 MB Download
md5:4b9d56551174364a2d3f533a9ecc1520
272.3 MB Download
md5:9800a778e0f4620200782915c35063a8
693.6 MB Download
md5:8522cff30353a6c859782c1c1fb149d6
680.9 MB Download
md5:6a1ac8199d1c56c7206dde3c96125a9e
238.3 MB Download
md5:8126ba793ae94e072854f4427231dfc5
191.5 MB Download
md5:729a17f2bd0d8032196036f3941740be
221.3 MB Download
md5:c065714645ea38ff3617eb845c2b6f01
197.9 MB Download
md5:df010a64170a4919bad03c9756f3674f
191.5 MB Download
md5:984c6ec7a7e7bbef3c650e7262f29132
183.0 MB Download
md5:53c36b62accbcdcafadece027ce9c159
691.5 MB Download
md5:aa61ac08729ab29d179bfb4c288adeb0
188.9 MB Download
md5:545b26713cb8415d90189aae81ba821d
171.1 MB Download
md5:59083e036aab8c2c284d273ac5793635
255.3 MB Download
md5:c450266fdba392ef35096daa4279f7c8
234.0 MB Download
md5:a3355c891f5c593f3ad032b7f66f8207
183.0 MB Download
md5:434c812df2a407f5bc6219a4d25ca223
212.8 MB Download
md5:d0967748225a896c7de1357d337ec5fd
234.0 MB Download
md5:2ad4c93218fb73a195b3015a9c372374
208.5 MB Download
md5:5f1cffeaaaedc2c2347a17ca4829ee2d
170.2 MB Download
md5:92ad7d5513a475d21b166f8b3860d5cd
306.4 MB Download
md5:73cef7d5bf07a098598b10dbea1fd5bb
218.7 MB Download
md5:ce4c36393c6f15becb3a3fe5dbdc4be6
186.0 MB Download
md5:bfd014311f286ffd3b19e51d834fe3d7
170.2 MB Download
md5:b275866bf98486c895dd735bd749afb9
212.8 MB Download
md5:c10f285960932c6c9d32ba2140d9201e
191.5 MB Download
md5:5455ad376fc9a2abdc3dac8126d18926
212.8 MB Download
md5:f92a10234923feb8751db31610ffe0fd
251.1 MB Download
md5:df04f085abab3804bf39933f4e58a058
191.5 MB Download
md5:c93a3097a33add6704cdff9b013ae082
178.7 MB Download
md5:2e5b878748b2512f00d9d47aec97bd2f
157.4 MB Download
md5:a16e04df84b2796b7c852737cfc31192
178.7 MB Download
md5:00376cb7c6b275e330279308df4bbdc8
161.7 MB Download
md5:acba6df4f214a009585b4159c8191c9f
195.7 MB Download
md5:29b61d5fec8d315e406fc93c990d598b
170.2 MB Download
md5:d51392a279f8a31f5495f23f37e06f64
202.1 MB Download
md5:8caee33450c05acc6e31fa0f4f0421ff
170.2 MB Download
md5:19818f1398f171dae0438af5a30fa3b3
171.5 MB Download
md5:5d8f3d829b2af73b2258775a9c41378d
223.8 MB Download
md5:4e7be45e427a0e313f58463e142201a8
172.3 MB Download
md5:6d4786cf7bcf7febcb54be1e3f5b01ea
187.2 MB Download
md5:2ae5eb9e9b892fd2b1fa206dafabcc27
203.4 MB Download
md5:23ec2317b25653448f6ad3022373d836
127.6 MB Download
md5:fb344c6643719271e1c3f6761e364033
127.7 MB Download
md5:324d66e6798b614ac0b58c1ab36c2723
170.2 MB Download
md5:84ee590b3190893e46927df311a3f1f9
170.2 MB Download
md5:abe4adcff1a2455c15928c81c491fba6
148.9 MB Download
md5:114f71f5d6d67f9120748e6bdfc76c63
340.4 MB Download
md5:fb099ac8a07b4d153e9bb632896b4506
170.2 MB Download
md5:4ca341743443f73e9fdc69aa2a5edc48
161.7 MB Download
md5:f6841e928d2f598efe62607ed82f52ae
157.4 MB Download
md5:0479c48968b475f83b469315f4577b3c
303.0 MB Download
md5:9bcbdf6a4c8a81db001f04f5a84985c5
340.4 MB Download
md5:26aa14717521f55d410c98c5ed365d3f
447.7 MB Download
md5:3521e5748e0fcba8cb3d4fb268c8479e
340.4 MB Download

Additional details

Funding

ACTIVEWINDFARMS – Active Wind Farms: Optimization and Control of Atmospheric Energy Extraction in Gigawatt Wind Farms 306471
European Commission
PIRE: USA/Europe Partnership for Integrated Research and Education in Wind Energy Intermittency: From Wind Farm Turbulence to Economic Management 1243482
National Science Foundation

References

  • Bossuyt, J., Meneveau, C., & Meyers, J. (2018). Effect of layout on asymptotic boundary layer regime in deep wind farms. Physical Review Fluids.
  • Bossuyt, J., Howland, M. F., Meneveau, C., & Meyers, J. (2017). Measurement of unsteady loading and power output variability in a micro wind farm model in a wind tunnel. Experiments in Fluids, 58(1), 1. http://doi.org/10.1007/s00348-016-2278-6
  • Bossuyt, J., Meneveau, C., & Meyers, J. (2017). Wind farm power fluctuations and spatial sampling of turbulent boundary layers. Journal of Fluid Mechanics, 823, 329-344. http://doi.org/10.1017/jfm.2017.328