计算脉冲在非线性耦合器中演化的Matlab 程序 HKG8X=" ;BW9SqlN % This Matlab script file solves the coupled nonlinear Schrodinger equations of
.pPtBqp % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
7 MG<!U % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
e+Sq&H!@ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
koy0A/\% 3'6by!N,d %fid=fopen('e21.dat','w');
VMJK9|JC[ N = 128; % Number of Fourier modes (Time domain sampling points)
8W}rSv+ M1 =3000; % Total number of space steps
2R~[B]2"r J =100; % Steps between output of space
+p0Y*. T =10; % length of time windows:T*T0
$c7Utms T0=0.1; % input pulse width
>W^)1E,Qh MN1=0; % initial value for the space output location
bipA{VU dt = T/N; % time step
=7Sw29u< n = [-N/2:1:N/2-1]'; % Index
ew*;mQd t = n.*dt;
u^+
(5| u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
#-K,," u20=u10.*0.0; % input to waveguide 2
!b'!7p
u1=u10; u2=u20;
o;'-^ LJ U1 = u1;
{|R +|ow U2 = u2; % Compute initial condition; save it in U
'Jl3%axR ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
9 N9Q#o$!. w=2*pi*n./T;
:[bpMP<bz; g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
(zIF2qY L=4; % length of evoluation to compare with S. Trillo's paper
JeU1r-i dz=L/M1; % space step, make sure nonlinear<0.05
'Ad |*~ for m1 = 1:1:M1 % Start space evolution
i
z
dJ,8 u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
f(.t0{Etq u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
"In$|A\?E ca1 = fftshift(fft(u1)); % Take Fourier transform
#An_RU6h ca2 = fftshift(fft(u2));
SaiYdJ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
okLheF c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
Y$nI9 u2 = ifft(fftshift(c2)); % Return to physical space
fx= %e u1 = ifft(fftshift(c1));
G33'Cgo:, if rem(m1,J) == 0 % Save output every J steps.
8t1,_,2' U1 = [U1 u1]; % put solutions in U array
_>i<` k U2=[U2 u2];
SOQR(UT MN1=[MN1 m1];
^LAdN8Cbb z1=dz*MN1'; % output location
R1C2d +L end
jn#Ok@tZ end
4L)Ox;6> hg=abs(U1').*abs(U1'); % for data write to excel
*sq+ Vc( ha=[z1 hg]; % for data write to excel
5g4xhYl70n t1=[0 t'];
nIv/B/>pZ hh=[t1' ha']; % for data write to excel file
+*KDtqZjk %dlmwrite('aa',hh,'\t'); % save data in the excel format
H?)?(t7@ figure(1)
Mx=L lC) waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
s]i<D9h figure(2)
DWcEl: waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
psB9~EU&Q sr`)l& t? 非线性超快脉冲耦合的数值方法的Matlab程序 Tg/rV5@ka W0KSLxM 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
lZ5TDS 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
_`q ei0 CB>O%m[1 7"$9js 2 xZp`Ke! % This Matlab script file solves the nonlinear Schrodinger equations
CO.e.:h % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
R4[dh.lf % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
Nzel^~ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
5'"l0EuD vAo|o* C=1;
]|)M /U * M1=120, % integer for amplitude
c9axzg
UA M3=5000; % integer for length of coupler
y2NVx!?n N = 512; % Number of Fourier modes (Time domain sampling points)
~OOD#/ dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
=B tmi T =40; % length of time:T*T0.
S}XVr?l2O dt = T/N; % time step
lr&O@
5"oy n = [-N/2:1:N/2-1]'; % Index
0O7VM)[ t = n.*dt;
1J O@G3, ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
-
u'5xn7 w=2*pi*n./T;
C4
@"@kbr g1=-i*ww./2;
e?eX9yA7F g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
.GNl31f0 g3=-i*ww./2;
Gt5'-Hyo P1=0;
Y lEV@ P2=0;
:gacP? P3=1;
7P7d[KP< P=0;
] !:0^| for m1=1:M1
">NPp\t>/Z p=0.032*m1; %input amplitude
Hp?uYih0 s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
Y#aHGZ$i s1=s10;
!:w&eFC6 s20=0.*s10; %input in waveguide 2
;+iw?" s30=0.*s10; %input in waveguide 3
^ G@o} Z s2=s20;
|4A938'4j s3=s30;
T1c.ER}17 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
{\zB'SNq %energy in waveguide 1
x\2N
@*I: p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
Aq"<#: %energy in waveguide 2
R7-+@ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
jbK<"T5 %energy in waveguide 3
CXfPC[o for m3 = 1:1:M3 % Start space evolution
Zi~-m]9U s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
@8s:,Y_ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
(DrDWD4_ s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
3tIno!| sca1 = fftshift(fft(s1)); % Take Fourier transform
@8xa"Dc sca2 = fftshift(fft(s2));
&Eqa y' sca3 = fftshift(fft(s3));
0R[onPU_vZ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
:OvTZ ?\ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
{]=oOy1 sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
b\H !\A s3 = ifft(fftshift(sc3));
(jB_uMuS s2 = ifft(fftshift(sc2)); % Return to physical space
qGPIKu s1 = ifft(fftshift(sc1));
R2!_)Rpf end
*^b<CZd9 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
j[y,Jch p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
zM*PN|/%sH p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
{ WW!P,w P1=[P1 p1/p10];
li
Hz5<| P2=[P2 p2/p10];
*{e?%!Q P3=[P3 p3/p10];
<>|/U ` P=[P p*p];
yQM<(;\O end
#+]-}v3 figure(1)
mbh;oX+ plot(P,P1, P,P2, P,P3);
KOM]7%ys1H pswEIa 转自:
http://blog.163.com/opto_wang/