切换到宽版
  • 广告投放
  • 稿件投递
  • 繁體中文
    • 9171阅读
    • 1回复

    [分享]求解光孤子或超短脉冲耦合方程的Matlab程序 [复制链接]

    上一主题 下一主题
    离线tianmen
     
    发帖
    58
    光币
    15
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2011-06-12
    计算脉冲在非线性耦合器中演化的Matlab 程序 .jj$Kh q]  
    3;a<_cE*@  
    %  This Matlab script file solves the coupled nonlinear Schrodinger equations of u?9" jX  
    %  soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of 6C-z=s)P&  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear /c,(8{(O  
    %   pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 \|K;-pL  
    !H ~<  
    %fid=fopen('e21.dat','w'); |m2X+s9  
    N = 128;                       % Number of Fourier modes (Time domain sampling points) ;$z$@@WC  
    M1 =3000;              % Total number of space steps / 4lvP  
    J =100;                % Steps between output of space s&NX@  
    T =10;                  % length of time windows:T*T0 9 -rNw?7  
    T0=0.1;                 % input pulse width 435;Vns\n  
    MN1=0;                 % initial value for the space output location &9Xhl''  
    dt = T/N;                      % time step 0@EwM  
    n = [-N/2:1:N/2-1]';           % Index Z.M,NR  
    t = n.*dt;   c_V;DcZ  
    u10=1.*sech(1*t);              % input to waveguide1 amplitude: power=u10*u10 N2w"R{)j\  
    u20=u10.*0.0;                  % input to waveguide 2 (7r<''  
    u1=u10; u2=u20;                 `(3/$%  
    U1 = u1;   . Z%{'CC  
    U2 = u2;                       % Compute initial condition; save it in U "U\4:k`:  
    ww = 4*n.*n*pi*pi/T/T;         % Square of frequency. Note i^2=-1. TYQwy*  
    w=2*pi*n./T; 1Uqu> '  
    g=-i*ww./2;                    % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T t 89!Ihk  
    L=4;                           % length of evoluation to compare with S. Trillo's paper q=#} yEG  
    dz=L/M1;                       % space step, make sure nonlinear<0.05 G8;w{-{m  
    for m1 = 1:1:M1                                    % Start space evolution bP^Je&nS*  
       u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1;          % 1st sSolve nonlinear part of NLS 0)m(;>'70  
       u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; K#U<ib-v  
       ca1 = fftshift(fft(u1));                        % Take Fourier transform PP!SK2u "L  
       ca2 = fftshift(fft(u2)); a AB`G3  
       c2=exp(g.*dz).*(ca2+i*1*ca1.*dz);               % approximation yUp,NfS]o  
       c1=exp(g.*dz).*(ca1+i*1*ca2.*dz);               % frequency domain phase shift   'Tc]KXD6  
       u2 = ifft(fftshift(c2));                        % Return to physical space zF`c8Tsx])  
       u1 = ifft(fftshift(c1)); ?|39u{  
    if rem(m1,J) == 0                                 % Save output every J steps. Y_QH&GZ  
        U1 = [U1 u1];                                  % put solutions in U array ? 8LXP  
        U2=[U2 u2]; ma((2My'H  
        MN1=[MN1 m1]; tuhA 9}E  
        z1=dz*MN1';                                    % output location [AW" D3  
      end FD8N"p  
    end -k"^o!p  
    hg=abs(U1').*abs(U1');                             % for data write to excel IhA*"  
    ha=[z1 hg];                                        % for data write to excel vo#UtN:q  
    t1=[0 t']; V?=8".GiX  
    hh=[t1' ha'];                                      % for data write to excel file DuOG {  
    %dlmwrite('aa',hh,'\t');                           % save data in the excel format %b"\bHH  
    figure(1) @0SC"CqM  
    waterfall(t',z1',abs(U1').*abs(U1'))               % t' is 1xn, z' is 1xm, and U1' is mxn TqddOp  
    figure(2) 19j+lCSvH  
    waterfall(t',z1',abs(U2').*abs(U2'))               % t' is 1xn, z' is 1xm, and U1' is mxn 1Y]TA3:  
    G rk@dZI  
    非线性超快脉冲耦合的数值方法的Matlab程序 kJ Mf  
    -]t,E,(!  
    在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。   qIAoA .  
    Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 .;*s`t  
    {1b Zg  
    pb=cBZ$  
    ,Y>Bex_v  
    %  This Matlab script file solves the nonlinear Schrodinger equations U~ck!\0&T  
    %  for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of Gqy,u3lE  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear f?'JAC*  
    %  pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 fOMvj%T@2  
    ;asP4R=  
    C=1;                           uIDuGrt  
    M1=120,                       % integer for amplitude KFFSv{m[  
    M3=5000;                      % integer for length of coupler kVy\b E0o  
    N = 512;                      % Number of Fourier modes (Time domain sampling points) 57g</ p  
    dz =3.14159/(sqrt(2.)*C)/M3;  % length of coupler is divided into M3 segments,  make sure nonlinearity<0.05. cJL'$`gWf  
    T =40;                        % length of time:T*T0. :bC40@  
    dt = T/N;                     % time step [ U w i  
    n = [-N/2:1:N/2-1]';          % Index DmOyBtj  
    t = n.*dt;   Y>&Ew*Y  
    ww = 4*n.*n*pi*pi/T/T;        % Square of frequency. Note i^2=-1. m:/ wG& !  
    w=2*pi*n./T; ,Uy|5zv  
    g1=-i*ww./2; 2[ r^M'J  
    g2=-i*ww./2;                  % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; jWYV#ifs2  
    g3=-i*ww./2; Z%x\~ )~  
    P1=0; E_bO9nRHV  
    P2=0; }ga@/>Sl&  
    P3=1; QQV~?iW{~  
    P=0; {4-[r#R<M  
    for m1=1:M1                 b@2J]Ay E*  
    p=0.032*m1;                %input amplitude A4]s~Ur  
    s10=p.*sech(p.*t);         %input soliton pulse in waveguide 1 e@ \p0(  
    s1=s10; dS5a  
    s20=0.*s10;                %input in waveguide 2 [V) L  
    s30=0.*s10;                %input in waveguide 3 ~O1&@xX  
    s2=s20; aN,M64F  
    s3=s30; m,t|IgDh  
    p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));   h)Ff2tX  
    %energy in waveguide 1 NmSo4Dg`U  
    p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));   + Q6l*:<|c  
    %energy in waveguide 2 ^'ryNa;"  
    p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));   w$u3W*EoU^  
    %energy in waveguide 3 Q pmsOp|  
    for m3 = 1:1:M3                                    % Start space evolution e A}%C.ZR  
       s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1;          % 1st step, Solve nonlinear part of NLS <$hu   
       s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; g=e71DXG2  
       s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; zH*KYB  
       sca1 = fftshift(fft(s1));                       % Take Fourier transform d%0~c'D8a  
       sca2 = fftshift(fft(s2)); nQ/E5y  
       sca3 = fftshift(fft(s3)); shMSN]S_x  
       sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz);           % 2nd step, frequency domain phase shift   !Lh^oPT"I  
       sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); SC- $B  
       sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); eBJUv]o %  
       s3 = ifft(fftshift(sc3)); 8zBWIi  
       s2 = ifft(fftshift(sc2));                       % Return to physical space wGZR31  
       s1 = ifft(fftshift(sc1)); "$}vP<SM  
    end _Dwqy(   
       p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); @GvztVYo  
       p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); >X51$wBL  
       p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); ZZyDG9a>7  
       P1=[P1 p1/p10]; Vy|6E#U  
       P2=[P2 p2/p10]; OGY"<YH6  
       P3=[P3 p3/p10]; U5 r7j  
       P=[P p*p]; o^V(U~m]  
    end kVD(Q ~<  
    figure(1) )<xypDQ  
    plot(P,P1, P,P2, P,P3); f +hjC  
    T_lsGu/  
    转自:http://blog.163.com/opto_wang/
     
    分享到
    离线ciomplj
    发帖
    319
    光币
    1
    光券
    0
    只看该作者 1楼 发表于: 2014-06-22
    谢谢哈~!~