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

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

    上一主题 下一主题
    离线tianmen
     
    发帖
    58
    光币
    15
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2011-06-12
    计算脉冲在非线性耦合器中演化的Matlab 程序 [t*-s1cq  
    I]Z"?T  
    %  This Matlab script file solves the coupled nonlinear Schrodinger equations of }{[p<pU$C  
    %  soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of _+Uf5,.5yU  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear 7p {2&YhB  
    %   pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 ,0?3k  
    b8 6c[2  
    %fid=fopen('e21.dat','w'); 20M]gw]  
    N = 128;                       % Number of Fourier modes (Time domain sampling points) m$g{&  
    M1 =3000;              % Total number of space steps Hx9lQ8  
    J =100;                % Steps between output of space $SzuUI  
    T =10;                  % length of time windows:T*T0 "msPH<D  
    T0=0.1;                 % input pulse width V9;IH<s:  
    MN1=0;                 % initial value for the space output location 7!e kINQ  
    dt = T/N;                      % time step oP:OurX8V  
    n = [-N/2:1:N/2-1]';           % Index C2L=i3R  
    t = n.*dt;   2W/*1K}  
    u10=1.*sech(1*t);              % input to waveguide1 amplitude: power=u10*u10 ?zYR;r2'b)  
    u20=u10.*0.0;                  % input to waveguide 2 &hWYw+yH\  
    u1=u10; u2=u20;                 wFJ*2W:  
    U1 = u1;   Wa iM\h?=#  
    U2 = u2;                       % Compute initial condition; save it in U (cp$poo  
    ww = 4*n.*n*pi*pi/T/T;         % Square of frequency. Note i^2=-1. OjK+`D_C  
    w=2*pi*n./T; xfqU atC  
    g=-i*ww./2;                    % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T )<T2J0*  
    L=4;                           % length of evoluation to compare with S. Trillo's paper Qqp=  
    dz=L/M1;                       % space step, make sure nonlinear<0.05 !!])~+4pP  
    for m1 = 1:1:M1                                    % Start space evolution LEAU3doK;  
       u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1;          % 1st sSolve nonlinear part of NLS G%%5lw!y'  
       u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; '~xjaa;.  
       ca1 = fftshift(fft(u1));                        % Take Fourier transform O5JG!bGE_F  
       ca2 = fftshift(fft(u2)); HZ89x|H k_  
       c2=exp(g.*dz).*(ca2+i*1*ca1.*dz);               % approximation &qm:36Y7Xg  
       c1=exp(g.*dz).*(ca1+i*1*ca2.*dz);               % frequency domain phase shift   - ysd`&  
       u2 = ifft(fftshift(c2));                        % Return to physical space mvyOw M  
       u1 = ifft(fftshift(c1)); {dvsZJj  
    if rem(m1,J) == 0                                 % Save output every J steps. ?cD_\~  
        U1 = [U1 u1];                                  % put solutions in U array g7K<"Z {M  
        U2=[U2 u2]; J^mm"2  
        MN1=[MN1 m1]; l YjPrA]TC  
        z1=dz*MN1';                                    % output location >UV=k :Q  
      end tk+t3+  
    end (2/i1)Cq  
    hg=abs(U1').*abs(U1');                             % for data write to excel :]`JcJ  
    ha=[z1 hg];                                        % for data write to excel {<2q  
    t1=[0 t']; .j`8E^7<  
    hh=[t1' ha'];                                      % for data write to excel file (=tu~ ^  
    %dlmwrite('aa',hh,'\t');                           % save data in the excel format wOR#sp&  
    figure(1) W\z<p P  
    waterfall(t',z1',abs(U1').*abs(U1'))               % t' is 1xn, z' is 1xm, and U1' is mxn T{Yk/Z/}?  
    figure(2) J 77*Ue ^  
    waterfall(t',z1',abs(U2').*abs(U2'))               % t' is 1xn, z' is 1xm, and U1' is mxn !6*4^$i#o  
    DE$T1pFV  
    非线性超快脉冲耦合的数值方法的Matlab程序 U,,rB(  
    A~'p~ @L  
    在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。   0Pg@%>yb~  
    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 zi,":KDz#  
    d)v!U+-|'  
    Jv D`RUh  
    \6,Z<.I  
    %  This Matlab script file solves the nonlinear Schrodinger equations 62>/0_m5  
    %  for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of / gE9 W  
    %  Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear ''CowI  
    %  pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 cqb]LC  
    Q8bn|#`  
    C=1;                           2spK#0n.HV  
    M1=120,                       % integer for amplitude uF]+i^+  
    M3=5000;                      % integer for length of coupler oX[I4i%G  
    N = 512;                      % Number of Fourier modes (Time domain sampling points) #M8>)oc  
    dz =3.14159/(sqrt(2.)*C)/M3;  % length of coupler is divided into M3 segments,  make sure nonlinearity<0.05. 13I~   
    T =40;                        % length of time:T*T0. O9)k)A]`O  
    dt = T/N;                     % time step Y\{lQMCy  
    n = [-N/2:1:N/2-1]';          % Index ~;nW+S$o  
    t = n.*dt;   GoG_4:^#h  
    ww = 4*n.*n*pi*pi/T/T;        % Square of frequency. Note i^2=-1. v0 |"[qGb  
    w=2*pi*n./T; ]w9syz8X  
    g1=-i*ww./2; Td![Id  
    g2=-i*ww./2;                  % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; zuBfkW95+  
    g3=-i*ww./2; BsN~Z!kd  
    P1=0; }/Y)^  
    P2=0; R]_fe4Y0  
    P3=1; {>.qo<k  
    P=0; p9iCrqi  
    for m1=1:M1                 H3q L&xL  
    p=0.032*m1;                %input amplitude iTeFy -Ct  
    s10=p.*sech(p.*t);         %input soliton pulse in waveguide 1 JT 5+d ,  
    s1=s10; 8R.`*  
    s20=0.*s10;                %input in waveguide 2 0mR  
    s30=0.*s10;                %input in waveguide 3 vX}mwK8  
    s2=s20; lV2MRxI  
    s3=s30; |c!lZo/  
    p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));   &bS!>_9  
    %energy in waveguide 1 eR5+1b  
    p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));   &E8fd/s= k  
    %energy in waveguide 2 +PkN~m`  
    p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));   =_H)5I_\  
    %energy in waveguide 3 .@]M'S^1  
    for m3 = 1:1:M3                                    % Start space evolution c)=UX_S!  
       s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1;          % 1st step, Solve nonlinear part of NLS 9i#K{CkC|  
       s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; ]lzOz<0q  
       s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; @GE:<'_:{  
       sca1 = fftshift(fft(s1));                       % Take Fourier transform E{6X-C[)v  
       sca2 = fftshift(fft(s2)); *g/@-6  
       sca3 = fftshift(fft(s3)); V3}$vKQ  
       sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz);           % 2nd step, frequency domain phase shift   MFLw^10(T  
       sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); 78<QNl Kn  
       sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); 7q:  
       s3 = ifft(fftshift(sc3)); .[#bOp*  
       s2 = ifft(fftshift(sc2));                       % Return to physical space ;={Z Bx  
       s1 = ifft(fftshift(sc1)); Q Ph6 p3bg  
    end F`YxH*tO7  
       p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); Fgg4QF  
       p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); JSm3ZP|GqJ  
       p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); H0i\#)Xs  
       P1=[P1 p1/p10]; tc<t%]c  
       P2=[P2 p2/p10]; uu582%tiG  
       P3=[P3 p3/p10]; prg8Iq'w  
       P=[P p*p]; \:wLUGFl 5  
    end {01wW1  
    figure(1) K1>(Fs$  
    plot(P,P1, P,P2, P,P3); yw)Ztg)  
    A?8 29<  
    转自:http://blog.163.com/opto_wang/
     
    分享到
    离线ciomplj
    发帖
    319
    光币
    1
    光券
    0
    只看该作者 1楼 发表于: 2014-06-22
    谢谢哈~!~