计算脉冲在非线性耦合器中演化的Matlab 程序 7o!t/WEEq
ph!h8@e
% This Matlab script file solves the coupled nonlinear Schrodinger equations of :h3U^
% soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of vAeVQ~
% Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear e(b$LUV
% pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 ]EDCs?,
8o
$` '
%fid=fopen('e21.dat','w'); U-,s/VQ?
N = 128; % Number of Fourier modes (Time domain sampling points) P&tw!B
M1 =3000; % Total number of space steps 4:b'VHW.
J =100; % Steps between output of space SXJjagAoML
T =10; % length of time windows:T*T0 |_+l D|'
T0=0.1; % input pulse width .i|nn[H &
MN1=0; % initial value for the space output location N0\<B-8+,>
dt = T/N; % time step 4N7|LxNNl_
n = [-N/2:1:N/2-1]'; % Index %i?v)EW
t = n.*dt; {KEmGHC4R
u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 o:4#AkS
u20=u10.*0.0; % input to waveguide 2 }rs>B,=*k
u1=u10; u2=u20; n8T'}d+mm
U1 = u1; ^4<&"aoo
U2 = u2; % Compute initial condition; save it in U >$r o\/
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. A
=&`TfXu
w=2*pi*n./T; e$`hRZ%
g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T wPcEvGBN=
L=4; % length of evoluation to compare with S. Trillo's paper \&Bdi6xAy
dz=L/M1; % space step, make sure nonlinear<0.05 }&6:0l$4!
for m1 = 1:1:M1 % Start space evolution %AWc`D
u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS f3>DmH#
u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; yO7#n0q
ca1 = fftshift(fft(u1)); % Take Fourier transform 4)'U!jSb
ca2 = fftshift(fft(u2)); 7+X~i@#rU
c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation 0&2`)W?9
c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift Xi\c>eALO
u2 = ifft(fftshift(c2)); % Return to physical space SdnO#J}{
u1 = ifft(fftshift(c1)); 0B}2~}#
if rem(m1,J) == 0 % Save output every J steps. }*qj,8-9
U1 = [U1 u1]; % put solutions in U array +~y>22Zfg
U2=[U2 u2]; =1
S%E
MN1=[MN1 m1]; |~18MW
z1=dz*MN1'; % output location d:#tN4y7(
end ! gfd!R
end DpT$19Q+
hg=abs(U1').*abs(U1'); % for data write to excel p:0X3?IG3
ha=[z1 hg]; % for data write to excel zf^|H%
~^
t1=[0 t']; fYh<S
hh=[t1' ha']; % for data write to excel file x5/&,&m`%
%dlmwrite('aa',hh,'\t'); % save data in the excel format ?gjx7TQ?
figure(1) %9S0!h\
waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn A%^7D.j
figure(2) )%n$_N n
waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn [9NrPm3d
?`O^;f
非线性超快脉冲耦合的数值方法的Matlab程序 27$,D XD
&,{YfAxQ`
在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 O.xtY@'"
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 I:UDEoQo
iy]?j$B$
$p$p C/:%
?~yJ7~3TS<
% This Matlab script file solves the nonlinear Schrodinger equations YV@efPy}n
% for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of x7G*xHJ
% Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear o[+t}hC[
% pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 mF jM6pmo
0\@oqw]6hv
C=1; b>k2@
M1=120, % integer for amplitude &Vgpv#&Cfx
M3=5000; % integer for length of coupler 6qT-
N = 512; % Number of Fourier modes (Time domain sampling points) v+SdjFAY
dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. ~oT*@
T =40; % length of time:T*T0. jh`[Y7RJO
dt = T/N; % time step =]/<Kd}A.
n = [-N/2:1:N/2-1]'; % Index MOnTp8
t = n.*dt; { w sT
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. q(~|roKA(
w=2*pi*n./T; BpYxH#4
g1=-i*ww./2; n&?)gKL0g
g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; t*)mX2R,
g3=-i*ww./2; &oy')\H
P1=0; K{"hf:k
P2=0; )4c?BCgy
P3=1; EUQtl_h/H
P=0; o;
U!{G(X
for m1=1:M1 ;^E_BJm
p=0.032*m1; %input amplitude kLU-4W5t
s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 $60`Hh 4/
s1=s10; VfP\)Rl
s20=0.*s10; %input in waveguide 2 JEMc _ngR!
s30=0.*s10; %input in waveguide 3 DX+zK'34
s2=s20; [ ;sTl~gC
s3=s30; b(Tvc
p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); cGdYfi
%energy in waveguide 1 d%-/U!z?
p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); w-LENdw
%energy in waveguide 2 Ot:}Ncq^\O
p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); z0SF2L H
%energy in waveguide 3 uZ\+{j=
for m3 = 1:1:M3 % Start space evolution Vp|?R65S*
s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS h&}iH
s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; TO"Md["GI
s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; y)CvlI
sca1 = fftshift(fft(s1)); % Take Fourier transform _*Z3,*~"X
sca2 = fftshift(fft(s2)); A>2 _I)
sca3 = fftshift(fft(s3)); `8RKpZv&
sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift ()O&O+R|)
sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); ,u PcQ
sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); nw%`CnzT
s3 = ifft(fftshift(sc3)); [0]A-#J
s2 = ifft(fftshift(sc2)); % Return to physical space `&