计算脉冲在非线性耦合器中演化的Matlab 程序 m*>gG{3; ZBc8^QZ % This Matlab script file solves the coupled nonlinear Schrodinger equations of
w.-J2%J % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
mqQC`Aqx: % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
Ot~buf'| % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
6{[ uCxxl ~HUO$*U4<
%fid=fopen('e21.dat','w');
wQOIUvd N = 128; % Number of Fourier modes (Time domain sampling points)
rJCu6 M1 =3000; % Total number of space steps
VO,F[E~_ J =100; % Steps between output of space
=n_>7@9l T =10; % length of time windows:T*T0
?Pt*4NaT; T0=0.1; % input pulse width
j<d,7 MN1=0; % initial value for the space output location
SA,+oq( dt = T/N; % time step
]P4?jKI n = [-N/2:1:N/2-1]'; % Index
;fm>
\f t = n.*dt;
FOSC#W9E u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
<*HsJwr)u u20=u10.*0.0; % input to waveguide 2
2<uBC u1=u10; u2=u20;
%VO>6iVn U1 = u1;
"bvob G U2 = u2; % Compute initial condition; save it in U
{6>:=?7]R ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Tl-Ix&37 w=2*pi*n./T;
I=4G+h5p g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
PED5>90 L=4; % length of evoluation to compare with S. Trillo's paper
wF{M"$am dz=L/M1; % space step, make sure nonlinear<0.05
b}m@2DR'|m for m1 = 1:1:M1 % Start space evolution
RnUud\T/ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
249DAjn+ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
d+IN-lR( ca1 = fftshift(fft(u1)); % Take Fourier transform
u
236a\: ca2 = fftshift(fft(u2));
#UqE%g`J c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
idY
Xv)R c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
m=D9V-P u2 = ifft(fftshift(c2)); % Return to physical space
8}|!p> u1 = ifft(fftshift(c1));
D4U<Rn6N_5 if rem(m1,J) == 0 % Save output every J steps.
E-HK=D&W/ U1 = [U1 u1]; % put solutions in U array
<-=g)3_ U2=[U2 u2];
d@+u&xrd MN1=[MN1 m1];
@8|i@S@4 z1=dz*MN1'; % output location
C=P}@| K end
$`"$ZI6[ end
O|0,=
5 hg=abs(U1').*abs(U1'); % for data write to excel
6G>loNM^ ha=[z1 hg]; % for data write to excel
YZ/2:[b t1=[0 t'];
qXB5wDJg hh=[t1' ha']; % for data write to excel file
;% l0Ml> %dlmwrite('aa',hh,'\t'); % save data in the excel format
;1Q@d figure(1)
k,jcLX. waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
D<Z]kR( figure(2)
wRe2sjM waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
JYa3xeC; 3u1\zse 非线性超快脉冲耦合的数值方法的Matlab程序 \-{2E G5!!^p~ 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
ic?(`6N8 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
!'kr:r}gg -}"nb-RR\ He LW* BYb"[qPV % This Matlab script file solves the nonlinear Schrodinger equations
@e^(V$ap % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
2 :&QBwr+; % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
-n6e;p] % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
O\}w&BE:h E&> 2=$~ C=1;
dRXrI M1=120, % integer for amplitude
:hDv^D?3 M3=5000; % integer for length of coupler
]nm(V N = 512; % Number of Fourier modes (Time domain sampling points)
a*!9RQ dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
i6xzHfaYG T =40; % length of time:T*T0.
X6n8Bi9Ik dt = T/N; % time step
t9&=; s n = [-N/2:1:N/2-1]'; % Index
"Q;Vy t t = n.*dt;
\r-v]]_<d ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
8,]wOxwqi w=2*pi*n./T;
4 }*V=>z g1=-i*ww./2;
-hZw.eChQa g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
!r9~K^EI g3=-i*ww./2;
IgKrcpK#}? P1=0;
K,H xe;- P2=0;
+D M,+{} P3=1;
#[y2nK3zF P=0;
(O'O#AD for m1=1:M1
Q*R9OF p=0.032*m1; %input amplitude
8FgF6ip s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
M#xol/)h s1=s10;
:-cqC|Y s20=0.*s10; %input in waveguide 2
:<xf'. s30=0.*s10; %input in waveguide 3
ro18%'RRI s2=s20;
#QiNSS s3=s30;
b:x*Hjf p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
_`xhP-,`S %energy in waveguide 1
t[\6/`YH p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
14p{V}f3 %energy in waveguide 2
0D}k ^W p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
c)SQ@B@q %energy in waveguide 3
A 1x
for m3 = 1:1:M3 % Start space evolution
N7Kkz
/ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
UX)QdT45Mh s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
NP$ D9#
s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
{/!Yavx sca1 = fftshift(fft(s1)); % Take Fourier transform
3IQ-2 X-- sca2 = fftshift(fft(s2));
$A>]lLo0 sca3 = fftshift(fft(s3));
6bBNC2K$- sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
p
I@!2c:} sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
j +Ro? sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
0B(Y{*QB s3 = ifft(fftshift(sc3));
(b+o$C s2 = ifft(fftshift(sc2)); % Return to physical space
&&te(DC\ s1 = ifft(fftshift(sc1));
Bx0=D:j end
#x(3>} p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
^1X
6DH` p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
#Z}YQ$g p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
c5t7X-L B P1=[P1 p1/p10];
Sh 7ob2 P2=[P2 p2/p10];
NeniQeR P3=[P3 p3/p10];
rnXoA, c/ P=[P p*p];
sDyt 3xN end
;et(Yi;9 figure(1)
gr4JaV plot(P,P1, P,P2, P,P3);
C.+:FY.H l!%V&HJV 转自:
http://blog.163.com/opto_wang/