当前位置:网站首页>[wave modeling 3] three dimensional random real wave modeling and wave generator modeling matlab simulation

[wave modeling 3] three dimensional random real wave modeling and wave generator modeling matlab simulation

2022-07-05 00:53:00 FPGA and MATLAB

1. Software version

matlab2017b

2. Description of algorithm

According to the last wave simulation mode 【 Wave modeling 1】【 Wave modeling 2】, This time, the waves are made into random waves from the previous regular waves , The simulation is really a wave situation .

Then the two generators are simulated in irregular waves .

Generator mode 1 It was just done before , Technicians should keep a backup .

Generator mode 2 Here's the picture :

 

        Pictured ), The four circular tubes are respectively equipped with energy converters . The figure is the overall appearance of the equipment , With the movement of sea waves , Drive the energy converter to generate electric energy . The whole equipment floats in the sea .

3. Core source code

global Winds;   % The wind speed 
global g; % Acceleration of gravity 
global kk; % The size ratio between the sand table of the simulation model and the actual area 
global Xmax;
global Ymax;
global Dxy;
global flag;
global VX;
global VY;
global VZ;
global seepart;
global seeall;
global sel;

RandStream.setDefaultStream(RandStream('mt19937ar','seed',3));

flag = 0;

g    = 9.8; % Acceleration of gravity 
kk   = 1/40; % The size ratio between the sand table of the simulation model and the actual area 
% Interval of simulation 
Dxy  = 4;


% The sea area covered by the simulation 
Xmax = 1000;
Ymax = 1000;

Start  = 200;
x      = [Start:Dxy:Xmax];
Ymax2  = round(Ymax/2);
y      = [Start:Dxy:Ymax2];
[xo,yo]= meshgrid(x,y);
z2     = zeros(size(x));

% The wave height of the wave itself 
r = (3.5325*Winds^2.5)/1000;

% The wave length of the wave itself 
k = 2*g/(3*Winds^2);
L = 2*pi/k;

% cycle T
T = sqrt(2*pi*L/g);

% Wave frequency 
w = sqrt(2/3)*g/T;
T = 0;

% Power generation 
Power = 0;
amps  = 0;


while(flag == 0)
    T = T + 1;    
    
    PP = floor(6*(Winds - 5.8));%1~90
    
    [d,g,H,alpha,beta,waves,wave_no_lookup,angle_lookup,scales] = func_Random_Ocean_Initial(PP);
    
 
    t = 0.1*T;
    surfo = zeros(scales,scales);
    for X=1:scales
        x        = X-1;
        xplot(X) = x;
        for Y=1:scales
            y        = Y-1;
            yplot(Y) = y;
            for i=1:PP
                surfo(X,Y) = surfo(X,Y) + waves(i).amp*cos( waves(i).xcoeff*x + waves(i).ycoeff*y + waves(i).w*t + waves(i).phase);
            end
        end
    end    

    % Show local effects 
    axes(handles.axes1);
    
    surf(xplot,yplot,surfo);
    
    hold on;
    

    amps = surfo(50,50);
    if sel == 1
       func_power_gen_machine_randomOcean(amps,1.6,seepart,seeall);
    else
       func_power_gen_machine2_randomOcean(amps,1.6,seepart,seeall); 
    end
 
    
    axis([0,scales,0,scales,-H,H]);
    shading interp;
    colormap([143/255,157/255,203/255]);
    lightangle(-30,90);    
    xlabel('x');
    ylabel('y');
    zlabel('z');
    grid on;
    

    view([VX,VY,VZ]);
    pause(0.000001);    
    
    % The wave length of the wave itself 
    k = 2*g/(3*Winds^2);
    Ls = 2*pi/k;
    set(handles.edit1,'String',num2str(Ls));
    
    % Calculate the parameter index of the wave 
    % The wave height of the wave itself 
    rs = (3.5325*Winds^2.5)/1000;
    set(handles.edit3,'String',num2str(rs));
    
    % cycle T
    T = sqrt(2*pi*L/g);
    % Speed 
    c = g*T/(2*pi); 
    set(handles.edit4,'String',num2str(c)); 
    
    % Wave frequency 
    w = sqrt(2/3)*g/T;    
    set(handles.edit5,'String',num2str(w/2/pi));
    
    % Power generation 
    % Be careful , Due to the specific calculation formula of wave power generation , You didn't provide , So the power generation here is only expressed by the size of simple waves ,
    % In the actual , Power generation is related to the size of waves . So after getting the formula , modify 210 Lines of code .
    Power = abs(2*max(surfo(1,:)));   
    set(handles.edit12,'String',num2str(Power));    
    hold off;
end

4. test result

Through the modeling of this new model , And combine the effect of the previous time , The interface of the software obtained this time is as follows :

From the above interface , There is one more in the original interface choose power mach The buttons , The main function of this button is to select buttons of different generators ,

The following is a screenshot of the whole simulation process and an explanation and analysis :

Next, click the new button , Choose a different generator , The results are as follows :

A little more , Get the following interface :

Next, we will introduce the side of this new power generation model :

A19-08

原网站

版权声明
本文为[FPGA and MATLAB]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050049329387.html