24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1182  |  回复: 0

BreakX

金虫 (小有名气)

[求助] 大神们帮帮忙 一个matlab程序转成fortran

MATLAB 的程序如下
%program 2 :the pseudospectral method
%iu_t+u_xx+2abs(u)^2u=0
L=80;N=256;dt=0.02;tmax=20;nmax=round(tmax/dt);
dx=L/N;x=[-L/2:dx:L/2-dx];K=[0:N/2-1,-N/2:-1]*2*pi/L;k2=K.^2;
s1=1.2;s2=0.8;b1=1;b2=0;d1=20;d2=0;
u=s1*sech(s1*(x+d1)).*exp(b1*1i*x)+s2*sech(s2*(x+d2)).*exp(b2*1i*x);
udata=u;tdata=0;
for nn=1:nmax
    du1=1i*(ifft(-k2.*fft(u))+2*u.*u.*conj(u));
    v=u+0.5*du1*dt;
    du2=1i*(ifft(-k2.*fft(v))+2*v.*v.*conj(v));
    v=u+0.5*du2*dt;
    du3=1i*(ifft(-k2.*fft(v))+2*v.*v.*conj(v));
    v=u+du3*dt;
    du4=1i*(ifft(-k2.*fft(v))+2*v.*v.*conj(v));
    u=u+(du1+2*du2+2*du3+du4)*dt/6;
     if mod(nn,round(nmax/25))==0
       udata=[udata;u];
       tdata=[tdata nn*dt];
     end
end
% plot
waterfall(x,tdata,abs(udata));
colormap([0 0 0]); view(10,60)
text(-2,-6,'x','fontsize',15)
text(50,5,'t','fontsize',15)
zlabel('|u|','fontsize',15)
axis([-L/2 L/2 0 tmax 0 2]);grid off
set(gca ,'xtick',[-40 -20 0 20 40])
set(gca ,'ytick',[0 10 20])
set(gca ,'ztick',[0 1 2])
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 BreakX 的主题更新
信息提示
请填处理意见