| tianmen |
2011-06-12 18:33 |
求解光孤子或超短脉冲耦合方程的Matlab程序
计算脉冲在非线性耦合器中演化的Matlab 程序 bOi};/f 5aa}FdUq % This Matlab script file solves the coupled nonlinear Schrodinger equations of /5&3WG&<u % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of )j]gm i" % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear ys:1Z\$P % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 M?QQr~a .i1jFwOd|G %fid=fopen('e21.dat','w'); +oE7~64LL N = 128; % Number of Fourier modes (Time domain sampling points) JHnk%h0 M1 =3000; % Total number of space steps #FrwfJOV J =100; % Steps between output of space Pn~pej5'K T =10; % length of time windows:T*T0 4he v
; T0=0.1; % input pulse width 45]Ym{] MN1=0; % initial value for the space output location t-3v1cv" dt = T/N; % time step yBpW#1= n = [-N/2:1:N/2-1]'; % Index eD>-`'7< t = n.*dt; MzBfHt'Rk u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 ]#vvlM>/ u20=u10.*0.0; % input to waveguide 2 [Q2S3szbt6 u1=u10; u2=u20; =NVZ$K OZ U1 = u1; G%V=idU*" U2 = u2; % Compute initial condition; save it in U D#vn {^c8O ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. xiOv$.@q w=2*pi*n./T; Y yQf g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T [ZL r:2+z L=4; % length of evoluation to compare with S. Trillo's paper
[%gK^Zt dz=L/M1; % space step, make sure nonlinear<0.05 .N2nJ/ for m1 = 1:1:M1 % Start space evolution ];d5X u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS S0Rf>Eo4 u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; `? 9]' ca1 = fftshift(fft(u1)); % Take Fourier transform |k['wqn" ca2 = fftshift(fft(u2)); +O.&64( c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation hJ$C%1; c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift d[P>jl%7 u2 = ifft(fftshift(c2)); % Return to physical space |p=.Gg=2 u1 = ifft(fftshift(c1)); R:pBbA7E if rem(m1,J) == 0 % Save output every J steps. ~vjr;a(B U1 = [U1 u1]; % put solutions in U array \>aa8LOe U2=[U2 u2]; %z!d4J75 MN1=[MN1 m1]; x3Dg%=R z1=dz*MN1'; % output location &4[#_(pk end \Z6gXO_ end :#Ex3H7 hg=abs(U1').*abs(U1'); % for data write to excel ]"2 v7)e ha=[z1 hg]; % for data write to excel N,sqr k] t1=[0 t']; \KnD"0KW hh=[t1' ha']; % for data write to excel file n_xa) %dlmwrite('aa',hh,'\t'); % save data in the excel format Vgru, ' figure(1) X,JWLS J waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn #BT6bH08X figure(2) [-:<z?(n4 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn esC\R4he <p L;- 非线性超快脉冲耦合的数值方法的Matlab程序 ~D`oP/6 eB/hyC1 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 x9o^9QJh 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 F)<G]i8n~ 2
Zjb/ q:~`7I YL&b9e4 % This Matlab script file solves the nonlinear Schrodinger equations ! MF"e|W % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of M:1F@\< % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear zQ6
-2 A % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 BqEubP(si @#ho(_U8 C=1; TLL[F;uZ M1=120, % integer for amplitude tx1m36a" M3=5000; % integer for length of coupler +q_lYGTiO N = 512; % Number of Fourier modes (Time domain sampling points) -JQg ~1 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. U37?P7i's T =40; % length of time:T*T0. Sc"4%L dt = T/N; % time step 2}#wdJ` n = [-N/2:1:N/2-1]'; % Index s3E~X t = n.*dt; [sY1|eX ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. F6GZZKj w=2*pi*n./T; ~ew**@N g1=-i*ww./2; <iprPk g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; Lv5
==w} g3=-i*ww./2; =wR]X*Pan P1=0; JQh s=Xg P2=0; AoOG[to7 P3=1; `0G.Y P=0; Gx* 0$4xJ3 for m1=1:M1 *=0r>] p=0.032*m1; %input amplitude \^( vlcy s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 ^FMa8;'o s1=s10; Yg,WdVI&@ s20=0.*s10; %input in waveguide 2 aE cg_es s30=0.*s10; %input in waveguide 3 GuY5 %wr s2=s20; 8\.1m9&r>o s3=s30; WAmoKZw2 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); [
EID27P %energy in waveguide 1 CU`Oc>;*T p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); wfTv<WG,.E %energy in waveguide 2 <J}9.k p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); ,p`bWm %energy in waveguide 3 xPJJ
!mY for m3 = 1:1:M3 % Start space evolution p'!,F; xX s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS rJQ|Oi&1i s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; UpseU8Wo s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; k8wi-z[dV sca1 = fftshift(fft(s1)); % Take Fourier transform ;xtb2c8HT sca2 = fftshift(fft(s2)); AG\852`1m sca3 = fftshift(fft(s3)); j~f 7WJ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift AbI*/|sY sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); {#M{~ sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); (0m$W< s3 = ifft(fftshift(sc3)); _"bvT?| s2 = ifft(fftshift(sc2)); % Return to physical space zp-~'kIJ s1 = ifft(fftshift(sc1)); 35kbE' end E^W*'D p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); n]c,0N p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); #&KE_n p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); -?` l<y( P1=[P1 p1/p10]; '?GZ"C2 P2=[P2 p2/p10]; D c.W vUM P3=[P3 p3/p10]; C\@YH] P=[P p*p]; V*uu:
end L\CM);y figure(1) x)Kh_G plot(P,P1, P,P2, P,P3); @Hdg-f>y] ']e4! 转自:http://blog.163.com/opto_wang/
|
|