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

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

    上一主题 下一主题
    离线tianmen
     
    发帖
    58
    光币
    15
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2011-06-12
    计算脉冲在非线性耦合器中演化的Matlab 程序 jj,CBNo(  
    `e`}dgf0S|  
    %  This Matlab script file solves the coupled nonlinear Schrodinger equations of Wtwo1pp  
    %  soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of `w6*(t:T  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear X!b+Dk  
    %   pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 t)kc`3i<A  
    K N Y  
    %fid=fopen('e21.dat','w'); { 4 n  
    N = 128;                       % Number of Fourier modes (Time domain sampling points) zAW+!C.  
    M1 =3000;              % Total number of space steps C6?({ QB@  
    J =100;                % Steps between output of space m/e*P*\ =  
    T =10;                  % length of time windows:T*T0 AZ9;6Df  
    T0=0.1;                 % input pulse width QkFB \v  
    MN1=0;                 % initial value for the space output location 0&~ JC>S  
    dt = T/N;                      % time step ~xa yGk  
    n = [-N/2:1:N/2-1]';           % Index 7z2Q!0Sz  
    t = n.*dt;   '^n,)oA/G  
    u10=1.*sech(1*t);              % input to waveguide1 amplitude: power=u10*u10 &ir|2"HV  
    u20=u10.*0.0;                  % input to waveguide 2 ~GLWhe-  
    u1=u10; u2=u20;                 w4Uo-zr@  
    U1 = u1;   I!?)}d  
    U2 = u2;                       % Compute initial condition; save it in U n #l~B@  
    ww = 4*n.*n*pi*pi/T/T;         % Square of frequency. Note i^2=-1. HJi FlL3  
    w=2*pi*n./T; Z<jC,r  
    g=-i*ww./2;                    % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T Y|l&mK?  
    L=4;                           % length of evoluation to compare with S. Trillo's paper <.Dg3RH  
    dz=L/M1;                       % space step, make sure nonlinear<0.05 ?NVX# t'  
    for m1 = 1:1:M1                                    % Start space evolution R?3N><oh*  
       u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1;          % 1st sSolve nonlinear part of NLS <Fi*wV  
       u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; E5$Fhc   
       ca1 = fftshift(fft(u1));                        % Take Fourier transform A-eRL`  
       ca2 = fftshift(fft(u2)); { v  [  
       c2=exp(g.*dz).*(ca2+i*1*ca1.*dz);               % approximation N79?s)l:K  
       c1=exp(g.*dz).*(ca1+i*1*ca2.*dz);               % frequency domain phase shift   H %Dcp#k  
       u2 = ifft(fftshift(c2));                        % Return to physical space b}3t8?wG&  
       u1 = ifft(fftshift(c1)); z',f'3+  
    if rem(m1,J) == 0                                 % Save output every J steps. XxYwBc'pc  
        U1 = [U1 u1];                                  % put solutions in U array U]]ON6Y&F  
        U2=[U2 u2]; o(gV;>I  
        MN1=[MN1 m1]; !DM GAt\  
        z1=dz*MN1';                                    % output location jK]An;l{Z  
      end xV0:K=  
    end M9QYYo@  
    hg=abs(U1').*abs(U1');                             % for data write to excel 3s0 I<cL  
    ha=[z1 hg];                                        % for data write to excel #Q1 |]  
    t1=[0 t']; <^w4+5sT/  
    hh=[t1' ha'];                                      % for data write to excel file aH&Efz^  
    %dlmwrite('aa',hh,'\t');                           % save data in the excel format ;04< 9i  
    figure(1) [#SiwhF|  
    waterfall(t',z1',abs(U1').*abs(U1'))               % t' is 1xn, z' is 1xm, and U1' is mxn m++=FsiX=  
    figure(2) >|pN4FS  
    waterfall(t',z1',abs(U2').*abs(U2'))               % t' is 1xn, z' is 1xm, and U1' is mxn hRNnj  
    6u9?  
    非线性超快脉冲耦合的数值方法的Matlab程序 (]nX:t  
    Y6`^E  
    在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。   P9o=G=i  
    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 (@Kc(>(: Y  
    ^&lkh@Y1q  
    6IJH%qUx'  
    z?t75#u9.  
    %  This Matlab script file solves the nonlinear Schrodinger equations GP(ze-Yp  
    %  for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of Yy{(XBJ~%t  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear [ <j4w  
    %  pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 fCbd]X  
    n}dLfg *  
    C=1;                           Db*&'32W  
    M1=120,                       % integer for amplitude 6@VgLa,  
    M3=5000;                      % integer for length of coupler e0M'\'J  
    N = 512;                      % Number of Fourier modes (Time domain sampling points) y q!{\@-  
    dz =3.14159/(sqrt(2.)*C)/M3;  % length of coupler is divided into M3 segments,  make sure nonlinearity<0.05. !-m 'diE  
    T =40;                        % length of time:T*T0. 25;(`Td 5  
    dt = T/N;                     % time step FY)US>  
    n = [-N/2:1:N/2-1]';          % Index N<O<wtXIj  
    t = n.*dt;   cEIs9;  
    ww = 4*n.*n*pi*pi/T/T;        % Square of frequency. Note i^2=-1. k+zskfo  
    w=2*pi*n./T; X2E=2tXl`7  
    g1=-i*ww./2; K@vU_x0Sl  
    g2=-i*ww./2;                  % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; 2%/+r  
    g3=-i*ww./2; f#\Nz>tOhE  
    P1=0; YH&q5W,KX  
    P2=0; ^vJy<  
    P3=1; s &f\gp1  
    P=0; BZ,{gy7g7X  
    for m1=1:M1                 :_h#A }8Xd  
    p=0.032*m1;                %input amplitude 2AW*PDncxP  
    s10=p.*sech(p.*t);         %input soliton pulse in waveguide 1 ?ph>:M  
    s1=s10; mRy0zN>?  
    s20=0.*s10;                %input in waveguide 2 xKkXr-yb`f  
    s30=0.*s10;                %input in waveguide 3 F#~*j  
    s2=s20; M}$Td_g  
    s3=s30; iikMz|:7U  
    p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));   ?aguAqG$  
    %energy in waveguide 1 RWFvf   
    p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));   "-Pz2QJY  
    %energy in waveguide 2 _:%i6c*"  
    p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));   ('2Z&5  
    %energy in waveguide 3 DUwms"I,%  
    for m3 = 1:1:M3                                    % Start space evolution >2ha6A[  
       s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1;          % 1st step, Solve nonlinear part of NLS KV! (   
       s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; pwRCfR)"X  
       s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; Bh&dV%'  
       sca1 = fftshift(fft(s1));                       % Take Fourier transform VI-6t"l  
       sca2 = fftshift(fft(s2)); nG-DtG^z  
       sca3 = fftshift(fft(s3)); k\r^GB  
       sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz);           % 2nd step, frequency domain phase shift   C#B|^A_  
       sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);  F##xVmR~  
       sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); V{ fG~19  
       s3 = ifft(fftshift(sc3)); Hzz v 6k  
       s2 = ifft(fftshift(sc2));                       % Return to physical space x.sC015Id  
       s1 = ifft(fftshift(sc1)); j9X|c7|  
    end s{*bFA Z1F  
       p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); L4ZB0PmN'  
       p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); $&&+2?cx0  
       p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); 0lOR.}]q  
       P1=[P1 p1/p10];  `fE'$2  
       P2=[P2 p2/p10]; {q^UWv?1  
       P3=[P3 p3/p10]; dK4w$~j{k  
       P=[P p*p]; |D_4 iFC  
    end 'hFL`F*  
    figure(1) `lrNH]B  
    plot(P,P1, P,P2, P,P3); h^,av^lg^  
    HBZ6Pj  
    转自:http://blog.163.com/opto_wang/
     
    分享到
    离线ciomplj
    发帖
    319
    光币
    1
    光券
    0
    只看该作者 1楼 发表于: 2014-06-22
    谢谢哈~!~