| tianmen |
2011-06-12 18:33 |
求解光孤子或超短脉冲耦合方程的Matlab程序
计算脉冲在非线性耦合器中演化的Matlab 程序 NR8`nc1~ (>x05nh % This Matlab script file solves the coupled nonlinear Schrodinger equations of _$D!"z7i % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of \.H9e/vU` % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear -D=Sj@G % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 @^-Y&N!b= >D~8iuy]8. %fid=fopen('e21.dat','w'); F$'u` N = 128; % Number of Fourier modes (Time domain sampling points) $>yfu=]? M1 =3000; % Total number of space steps (&v|,.c^)1 J =100; % Steps between output of space d-tg^Ot#
T =10; % length of time windows:T*T0 S|LY U!IWZ T0=0.1; % input pulse width (F.w?f4B3 MN1=0; % initial value for the space output location Qf~$9?z dt = T/N; % time step 1>L'F8" n = [-N/2:1:N/2-1]'; % Index zG 9D
Ph t = n.*dt; vZ srlHb u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 * O?Yp%5NH u20=u10.*0.0; % input to waveguide 2 \>lA2^Ef u1=u10; u2=u20; wJq$yqos{ U1 = u1; .S/zxf~h U2 = u2; % Compute initial condition; save it in U G?XA",AC ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. "gm5DE w=2*pi*n./T; t[X^4bZd g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T cYC^;,C &| L=4; % length of evoluation to compare with S. Trillo's paper &$_!S!Sa/ dz=L/M1; % space step, make sure nonlinear<0.05 W,CAg7:* for m1 = 1:1:M1 % Start space evolution /w5*R5B{ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS hf2bM
`d u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; X~"p]V_ ca1 = fftshift(fft(u1)); % Take Fourier transform `Z5dRLrd ca2 = fftshift(fft(u2)); s>L.V2!$0 c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation l*&N<Yu c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift Mz2TwU_ u2 = ifft(fftshift(c2)); % Return to physical space ,&M#[>\(3 u1 = ifft(fftshift(c1)); rQ]JM if rem(m1,J) == 0 % Save output every J steps. M")/6 PH8 U1 = [U1 u1]; % put solutions in U array g\.$4N U2=[U2 u2]; ~ *"iLf@, MN1=[MN1 m1]; vWeY[>oGur z1=dz*MN1'; % output location Jx}-Y*
o end gSw<C+ end ]|,}hsN hg=abs(U1').*abs(U1'); % for data write to excel m26YAcip} ha=[z1 hg]; % for data write to excel \$Wpt#V t1=[0 t']; YOGj__: hh=[t1' ha']; % for data write to excel file #m?)XB^_ %dlmwrite('aa',hh,'\t'); % save data in the excel format >jIn&s!} figure(1) @/^mFqr2 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn z5M6 figure(2) V8B4e4F waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn ][?J8F &b5(Su 非线性超快脉冲耦合的数值方法的Matlab程序 vMEN14;yH_ `kQosQV 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 T~Bj],k_ 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 y<Xu65 C]5 kQ1Og wDW%v@ .yXqa"p % This Matlab script file solves the nonlinear Schrodinger equations H~Vf;k> % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of 9.M'FCd~M % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear ug2W{D % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 +#BOWz ]T]{VB C=1; 8^j~uH M1=120, % integer for amplitude 7(.Z8AO M3=5000; % integer for length of coupler N=2T~M 1 N = 512; % Number of Fourier modes (Time domain sampling points) /R=MX>JA; dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. ,
%z HykP T =40; % length of time:T*T0. ztSQrDbbb4 dt = T/N; % time step =NC??e { n = [-N/2:1:N/2-1]'; % Index !.mR]El{K t = n.*dt; h`1<+1J9 ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. MAFdJ+n# w=2*pi*n./T; +c<iVc| g1=-i*ww./2; ]&Y^ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; Z8xB
a0 g3=-i*ww./2; 1r$-U h P1=0; ~d]v{<3 P2=0; G|1.qHP[F P3=1; Uz! 3){E P=0; <O'U-.
Gc for m1=1:M1 j;coP ehB p=0.032*m1; %input amplitude 3_XLx{["' s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 13#ff s1=s10; MukJ^h*V s20=0.*s10; %input in waveguide 2 t
sUu s30=0.*s10; %input in waveguide 3 <YFDS;b| s2=s20; 4mo/MK&M: s3=s30; <F0^+Pf/ p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); ;i6~iLY %energy in waveguide 1 bGeIb-|( p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); ")uKDq %energy in waveguide 2 ?}s;,_GH p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); L>sLb(2\i %energy in waveguide 3 9Tt%~m^ for m3 = 1:1:M3 % Start space evolution <5z!0m-G s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS r4*H96l s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; Pa3-0dUr s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; U; oXX sca1 = fftshift(fft(s1)); % Take Fourier transform 'A:Y&w"r sca2 = fftshift(fft(s2)); %`5(SC]. sca3 = fftshift(fft(s3)); lF!PiL sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift '|ntwK*f sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); diJpbR^JP sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); mk1R~4v s3 = ifft(fftshift(sc3)); LsERcjwwK s2 = ifft(fftshift(sc2)); % Return to physical space d[3me{Rs s1 = ifft(fftshift(sc1)); mv8H:T end C
6
\ p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); xc}[q`vK p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); X#$ oV# p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); 1}=D P1=[P1 p1/p10]; ,#ZPg_x?1 P2=[P2 p2/p10]; R'c dEoy P3=[P3 p3/p10]; JL87a^ro P=[P p*p]; E72N=7v" end }/1^Lqfnz figure(1) YTefEG]|q plot(P,P1, P,P2, P,P3); :;eOhZ=_ La1:WYt 转自:http://blog.163.com/opto_wang/
|
|