[파동 모델링 3] 3D 임의의 실제 해양파 모델링 및 파도 발생기 모델링 matlab 시뮬레이션

1. 소프트웨어 버전

매트랩2017b

2. 알고리즘 개요

지난번 파동 시뮬레이션 [ Wave Modeling 1 ] [ Wave Modeling 2 ] 의 모드에 따라 이번에는 실제 파동을 시뮬레이션하기 위해 기존의 일반파에서 랜덤파로 파동을 변경합니다.

그런 다음 두 개의 생성기가 각각 불규칙한 파동에서 시뮬레이션됩니다.

발전기 모드 1은 방금 전에 수행되었으며 기술자는 백업이 있어야 합니다.

제너레이터 모드 2는 다음과 같습니다.

 

       그림)과 같이 4개의 원형 튜브 각각에 에너지 변환기가 설치되어 있습니다. 사진은 장비의 전체적인 모습이며, 파도의 움직임에 따라 에너지 변환기를 구동하여 전기를 생산합니다. 전체 장치가 바다에 떠 있습니다.

3. 핵심 소스 코드

global Winds;   %风速
global g; %重力加速度
global kk; %仿真模型沙盘和实际区域的大小比例
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; %重力加速度
kk   = 1/40; %仿真模型沙盘和实际区域的大小比例
%仿真的间隔
Dxy  = 4;


%仿真覆盖的海域范围
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));

%海浪自身运动的波高
r = (3.5325*Winds^2.5)/1000;

%海浪自身运动的波长
k = 2*g/(3*Winds^2);
L = 2*pi/k;

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

%波频率
w = sqrt(2/3)*g/T;
T = 0;

%发电量
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    

    %显示局部效果
    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);    
    
    %海浪自身运动的波长
    k = 2*g/(3*Winds^2);
    Ls = 2*pi/k;
    set(handles.edit1,'String',num2str(Ls));
    
    %计算得到海浪的参数指标
    %海浪自身运动的波高
    rs = (3.5325*Winds^2.5)/1000;
    set(handles.edit3,'String',num2str(rs));
    
    %周期T
    T = sqrt(2*pi*L/g);
    %速度
    c = g*T/(2*pi); 
    set(handles.edit4,'String',num2str(c)); 
    
    %波频率
    w = sqrt(2/3)*g/T;    
    set(handles.edit5,'String',num2str(w/2/pi));
    
    %发电量
    %注意,由于海浪发电的具体的计算公式,你没有提供,所以这里发电量仅仅使用简单的海浪的大小来表示,
    %实际中,发电量就是和海浪大小相关的。所以在得到公式之后,修改210行代码即可。
    Power = abs(2*max(surfo(1,:)));   
    set(handles.edit12,'String',num2str(Power));    
    hold off;
end

4. 테스트 결과

이 새로운 모델의 모델링과 이전 효과의 조합을 통해 이번에 얻은 소프트웨어의 인터페이스는 다음과 같습니다.

위의 인터페이스에서 볼 수 있듯이 원래 인터페이스에는 전원 마하 선택 버튼이 있습니다.이 버튼의 주요 기능은 다른 발전기의 버튼을 선택하는 것입니다.

전체 시뮬레이션 프로세스에 대한 다음 스크린샷 및 설명 분석:

다음으로 새로 넣은 버튼을 클릭하고 다른 생성기를 선택하면 다음과 같은 결과를 얻을 수 있습니다.

다음 인터페이스를 얻으려면 다시 클릭하십시오.

이번에 새롭게 탑재된 발전 모델의 측면을 소개하면 다음과 같다.

A19-08

추천

출처blog.csdn.net/ccsss22/article/details/125610776