| tianmen |
2011-06-12 18:33 |
求解光孤子或超短脉冲耦合方程的Matlab程序
计算脉冲在非线性耦合器中演化的Matlab 程序 4|:{apH .R-:vU880 % This Matlab script file solves the coupled nonlinear Schrodinger equations of H!45w;,I % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of SH`"o % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear !J:DBtGT % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 LI
nN-b# Zn9w1ev %fid=fopen('e21.dat','w'); DF&C7+hO N = 128; % Number of Fourier modes (Time domain sampling points) txL5'mK M1 =3000; % Total number of space steps Bj]0Cz J =100; % Steps between output of space H=yD}!j T =10; % length of time windows:T*T0 1":{$A?OB T0=0.1; % input pulse width a)Wf* <B MN1=0; % initial value for the space output location g#70Sg*d dt = T/N; % time step `*N0 Lbl] n = [-N/2:1:N/2-1]'; % Index 4Y)3<=kDG t = n.*dt; L)w& f u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 r/{VL3}F_e u20=u10.*0.0; % input to waveguide 2 A: @=?(lI3 u1=u10; u2=u20; -D(UbkPw U1 = u1; ?>AhC{ U2 = u2; % Compute initial condition; save it in U I&(cdKY
z ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. !'[sV^ds w=2*pi*n./T; ]1Q\wsB g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T B2,!
0Re L=4; % length of evoluation to compare with S. Trillo's paper 8KAyif@1:: dz=L/M1; % space step, make sure nonlinear<0.05 +h9CcBd for m1 = 1:1:M1 % Start space evolution ]X-ZRmB` u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS :))AZ7_ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; 1DLQZq ca1 = fftshift(fft(u1)); % Take Fourier transform \|T0@V ca2 = fftshift(fft(u2)); Xbu >8d?n c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation c9'#G>&h~^ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift >2v_fw u2 = ifft(fftshift(c2)); % Return to physical space 6%yr>BFtVV u1 = ifft(fftshift(c1)); 9(@bjL465 if rem(m1,J) == 0 % Save output every J steps. WQ*$y3% U1 = [U1 u1]; % put solutions in U array z_Qw's U2=[U2 u2]; p@Qzg
/X MN1=[MN1 m1]; o0<T|zgF5, z1=dz*MN1'; % output location dj]sr!q+ end ?]7ITF end I|`K;a
hg=abs(U1').*abs(U1'); % for data write to excel gbInSp`4 ha=[z1 hg]; % for data write to excel =a {Z7W
t1=[0 t']; cJhf{{_oR hh=[t1' ha']; % for data write to excel file ^iI^) %dlmwrite('aa',hh,'\t'); % save data in the excel format O Ov"h\, figure(1) {`3;Pd` waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn T}\U:@b figure(2) G;^iwxzhO waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn r^
"mPgY WUHx0I 非线性超快脉冲耦合的数值方法的Matlab程序 P, Vq/Tt @E==~ b 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 I5bi^!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 6}|vfw hwXp=not( w6E?TI *PMql $ % This Matlab script file solves the nonlinear Schrodinger equations ]Wy V bIu % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of n@%'Nbc>b % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear / _cOg? o % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 HQE#O4 :}GxJT4 C=1; Q \{\uJ x M1=120, % integer for amplitude "qDEI} M3=5000; % integer for length of coupler qt1#P N = 512; % Number of Fourier modes (Time domain sampling points) [UI
bO@e dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. JTb<uC T =40; % length of time:T*T0. ):\pD]e dt = T/N; % time step Q2NS> [ n = [-N/2:1:N/2-1]'; % Index =*(d+[_ t = n.*dt; @TH \hr] ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. A] F K\ w=2*pi*n./T; `QkzWy~V3 g1=-i*ww./2; &R8zuD`# g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; 5fLCmLM` g3=-i*ww./2; {<]abO P1=0; B;-oa;m:E= P2=0; ;0BCM(>Wo P3=1; `Y[zF1$kz^ P=0; ;N
j5N B7 for m1=1:M1 /qp`xJ p=0.032*m1; %input amplitude grS,PKH s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 :J<S-d= s1=s10; !BY=HFT s20=0.*s10; %input in waveguide 2 %v|,-B7Yx s30=0.*s10; %input in waveguide 3 PCU6E9~t2 s2=s20; e@q[Dv'mu s3=s30; Fj5^_2MU: p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); 7;_5[_ %energy in waveguide 1
AI)9E=D% p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); eIEcj<f %energy in waveguide 2 zMG4oRPP p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); r!zNcN(%cs %energy in waveguide 3 %_z]iz4 for m3 = 1:1:M3 % Start space evolution $DQ
-.WI s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS V}JW@ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; I|PiZ1]2Y s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; '}OrFN sca1 = fftshift(fft(s1)); % Take Fourier transform Uvuvr_IP sca2 = fftshift(fft(s2)); ~k J#IA sca3 = fftshift(fft(s3)); ]xS< \{og sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift FIS-xpv$ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); 5I<?HsK@ sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); ())|x[>JS+ s3 = ifft(fftshift(sc3)); <h;P<4JX s2 = ifft(fftshift(sc2)); % Return to physical space I m
Tq` s1 = ifft(fftshift(sc1)); S1=c_!q%9 end x7/2e{p
uu p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); #._!.P p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); dk.da&P p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); 2.x3^/ P1=[P1 p1/p10]; p*N+B
o P2=[P2 p2/p10];
+FJ
o!~1 P3=[P3 p3/p10]; jK{CjfCNz P=[P p*p]; C
:e 'wmA end cis~]x% figure(1) z1L. plot(P,P1, P,P2, P,P3); &,#VhT![ xqG`
_S
l 转自:http://blog.163.com/opto_wang/
|
|