Dataset Open Access

Wind tunnel experiment of a micro wind farm model

Bossuyt Juliaan; Meneveau Charles; Meyers Johan

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 (13.2 GB)
Name Size
NU1_C1_1.h5
md5:9ed83cd52832358b1aa2092a7619504a
148.9 MB Download
NU1_C1_10.h5
md5:2b901a89e74ef8010dd586306d34892f
261.7 MB Download
NU1_C1_11.h5
md5:4b9d56551174364a2d3f533a9ecc1520
272.3 MB Download
NU1_C1_2.h5
md5:9800a778e0f4620200782915c35063a8
693.6 MB Download
NU1_C1_3.h5
md5:8522cff30353a6c859782c1c1fb149d6
680.9 MB Download
NU1_C1_4.h5
md5:6a1ac8199d1c56c7206dde3c96125a9e
238.3 MB Download
NU1_C1_5.h5
md5:8126ba793ae94e072854f4427231dfc5
191.5 MB Download
NU1_C1_6.h5
md5:729a17f2bd0d8032196036f3941740be
221.3 MB Download
NU1_C1_7.h5
md5:c065714645ea38ff3617eb845c2b6f01
197.9 MB Download
NU1_C1_8.h5
md5:df010a64170a4919bad03c9756f3674f
191.5 MB Download
NU1_C1_9.h5
md5:984c6ec7a7e7bbef3c650e7262f29132
183.0 MB Download
NU1_C2_1.h5
md5:53c36b62accbcdcafadece027ce9c159
691.5 MB Download
NU1_C2_2.h5
md5:aa61ac08729ab29d179bfb4c288adeb0
188.9 MB Download
NU1_C2_3.h5
md5:545b26713cb8415d90189aae81ba821d
171.1 MB Download
NU1_C2_4.h5
md5:59083e036aab8c2c284d273ac5793635
255.3 MB Download
NU1_C2_5.h5
md5:c450266fdba392ef35096daa4279f7c8
234.0 MB Download
NU1_C2_6.h5
md5:a3355c891f5c593f3ad032b7f66f8207
183.0 MB Download
NU1_C2_7.h5
md5:434c812df2a407f5bc6219a4d25ca223
212.8 MB Download
NU1_C2_8.h5
md5:d0967748225a896c7de1357d337ec5fd
234.0 MB Download
NU2_C1_1.h5
md5:2ad4c93218fb73a195b3015a9c372374
208.5 MB Download
NU2_C1_10.h5
md5:5f1cffeaaaedc2c2347a17ca4829ee2d
170.2 MB Download
NU2_C1_11.h5
md5:92ad7d5513a475d21b166f8b3860d5cd
306.4 MB Download
NU2_C1_2.h5
md5:73cef7d5bf07a098598b10dbea1fd5bb
218.7 MB Download
NU2_C1_3.h5
md5:ce4c36393c6f15becb3a3fe5dbdc4be6
186.0 MB Download
NU2_C1_4.h5
md5:bfd014311f286ffd3b19e51d834fe3d7
170.2 MB Download
NU2_C1_5.h5
md5:b275866bf98486c895dd735bd749afb9
212.8 MB Download
NU2_C1_6.h5
md5:c10f285960932c6c9d32ba2140d9201e
191.5 MB Download
NU2_C1_7.h5
md5:5455ad376fc9a2abdc3dac8126d18926
212.8 MB Download
NU2_C1_8.h5
md5:f92a10234923feb8751db31610ffe0fd
251.1 MB Download
NU2_C1_9.h5
md5:df04f085abab3804bf39933f4e58a058
191.5 MB Download
NU2_C2_1.h5
md5:c93a3097a33add6704cdff9b013ae082
178.7 MB Download
NU2_C2_2.h5
md5:2e5b878748b2512f00d9d47aec97bd2f
157.4 MB Download
NU2_C2_3.h5
md5:a16e04df84b2796b7c852737cfc31192
178.7 MB Download
NU2_C2_4.h5
md5:00376cb7c6b275e330279308df4bbdc8
161.7 MB Download
NU2_C2_5.h5
md5:acba6df4f214a009585b4159c8191c9f
195.7 MB Download
NU2_C2_6.h5
md5:29b61d5fec8d315e406fc93c990d598b
170.2 MB Download
NU2_C2_7.h5
md5:d51392a279f8a31f5495f23f37e06f64
202.1 MB Download
NU2_C3_1.h5
md5:8caee33450c05acc6e31fa0f4f0421ff
170.2 MB Download
NU2_C3_2.h5
md5:19818f1398f171dae0438af5a30fa3b3
171.5 MB Download
NU2_C3_3.h5
md5:5d8f3d829b2af73b2258775a9c41378d
223.8 MB Download
NU2_C3_4.h5
md5:4e7be45e427a0e313f58463e142201a8
172.3 MB Download
NU2_C3_5.h5
md5:6d4786cf7bcf7febcb54be1e3f5b01ea
187.2 MB Download
NU2_C3_6.h5
md5:2ae5eb9e9b892fd2b1fa206dafabcc27
203.4 MB Download
U_C1_1.h5
md5:23ec2317b25653448f6ad3022373d836
127.6 MB Download
U_C1_2.h5
md5:fb344c6643719271e1c3f6761e364033
127.7 MB Download
U_C1_3.h5
md5:324d66e6798b614ac0b58c1ab36c2723
170.2 MB Download
U_C1_4.h5
md5:84ee590b3190893e46927df311a3f1f9
170.2 MB Download
U_C1_5.h5
md5:abe4adcff1a2455c15928c81c491fba6
148.9 MB Download
U_C1_6.h5
md5:114f71f5d6d67f9120748e6bdfc76c63
340.4 MB Download
U_C2_1.h5
md5:fb099ac8a07b4d153e9bb632896b4506
170.2 MB Download
U_C2_2.h5
md5:4ca341743443f73e9fdc69aa2a5edc48
161.7 MB Download
U_C2_3.h5
md5:f6841e928d2f598efe62607ed82f52ae
157.4 MB Download
U_C2_4.h5
md5:0479c48968b475f83b469315f4577b3c
303.0 MB Download
U_C2_5.h5
md5:9bcbdf6a4c8a81db001f04f5a84985c5
340.4 MB Download
U_C2_6.h5
md5:26aa14717521f55d410c98c5ed365d3f
447.7 MB Download
U_C2_7.h5
md5:3521e5748e0fcba8cb3d4fb268c8479e
340.4 MB Download
  • 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

  • Bossuyt, J., Meneveau, C., & Meyers, J. (2018). Effect of layout on asymptotic boundary layer regime in deep wind farms. Physical Review Fluids.

277
287
views
downloads
All versions This version
Views 277277
Downloads 287287
Data volume 68.5 GB68.5 GB
Unique views 255255
Unique downloads 2828

Share

Cite as