计算脉冲在非线性耦合器中演化的Matlab 程序 M>gZVB,eP> }Q^a.`h % This Matlab script file solves the coupled nonlinear Schrodinger equations of
|B$\3, % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
DMN H?6 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
}/r%~cZ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
'R'a/ZR`B7 Rs[]i; %fid=fopen('e21.dat','w');
l'%R^ N = 128; % Number of Fourier modes (Time domain sampling points)
$cU/Im`
M1 =3000; % Total number of space steps
V(uRKu
x J =100; % Steps between output of space
jF_I4H T =10; % length of time windows:T*T0
pP,bW~rk T0=0.1; % input pulse width
Z|S7", MN1=0; % initial value for the space output location
F/>Pvq] dt = T/N; % time step
* .VZ(wX n = [-N/2:1:N/2-1]'; % Index
~RAH -] t = n.*dt;
7O^ S.( u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
T5_Cu9>ax u20=u10.*0.0; % input to waveguide 2
swL|Ff`$ u1=u10; u2=u20;
(+ anTA= U1 = u1;
$-fY 8V3[ U2 = u2; % Compute initial condition; save it in U
Z?'|9FM ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
K)\gbQ| w=2*pi*n./T;
8~#Q * g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
M
F: Eu L=4; % length of evoluation to compare with S. Trillo's paper
DJ0T5VE W3 dz=L/M1; % space step, make sure nonlinear<0.05
}c5`~ LLK for m1 = 1:1:M1 % Start space evolution
8mLU ~P
| u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
E2kRt'~N u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
't.F.t ca1 = fftshift(fft(u1)); % Take Fourier transform
ZUW>{'[K ca2 = fftshift(fft(u2));
yvisoZX c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
n`Iy7X c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
h18y?e7MU u2 = ifft(fftshift(c2)); % Return to physical space
Kp8T;&<Iay u1 = ifft(fftshift(c1));
3~xOO*`o if rem(m1,J) == 0 % Save output every J steps.
17MjIX U1 = [U1 u1]; % put solutions in U array
S`w)b'B!M U2=[U2 u2];
~GYtU9s5 MN1=[MN1 m1];
Lta\AN!c z1=dz*MN1'; % output location
m
kf{_!TK end
;}'<`(f&nX end
D +""o"% hg=abs(U1').*abs(U1'); % for data write to excel
S6tH!Z=(g ha=[z1 hg]; % for data write to excel
3[Iw%% q t1=[0 t'];
(SA*9% hh=[t1' ha']; % for data write to excel file
3y ,?>- %dlmwrite('aa',hh,'\t'); % save data in the excel format
Ps\^OJR figure(1)
f"^tOgGH waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
$7d"9s\$" figure(2)
;g]+MLV9 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
r'\TS U5! 6|}mTG^ 非线性超快脉冲耦合的数值方法的Matlab程序 'Sh5W%NM \"Iy<zG 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
IyP].g1"U 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
oyw1N;K 1hi j4m$b 1_lL?S3,a@ epyfggMT % This Matlab script file solves the nonlinear Schrodinger equations
q/?_djv % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
B4aZ3.&W % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
!F)oX7" % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
<=M }[ >O~5s.1u C=1;
>.\E'e5^C M1=120, % integer for amplitude
( mlc']F M3=5000; % integer for length of coupler
L ai"D[N N = 512; % Number of Fourier modes (Time domain sampling points)
--kK<9J7 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
i>2_hn_UR T =40; % length of time:T*T0.
0aWb s$FyU dt = T/N; % time step
j83
V$
Le n = [-N/2:1:N/2-1]'; % Index
idy:Jei} t = n.*dt;
%A3Jd4DH ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
3(5Y-.aK}^ w=2*pi*n./T;
z?,5v`,t2 g1=-i*ww./2;
^dv>n]? g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
p;Kr664 g3=-i*ww./2;
aK'r=NU P1=0;
]mA?TwD P2=0;
q=6Y2Q P3=1;
vNGvEJ`qn P=0;
MzD0F#Y for m1=1:M1
K>y+3HN[6 p=0.032*m1; %input amplitude
pdSyx>rJ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
^h=kJR9 s1=s10;
e$=|-Jz s20=0.*s10; %input in waveguide 2
kZQ;\QL1} s30=0.*s10; %input in waveguide 3
M.xEiHz s2=s20;
:xCobMs_/ s3=s30;
r$5!KO p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
$hio(
%energy in waveguide 1
jQ*Qh p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
#Gx@\BE{ %energy in waveguide 2
0i"OG( , p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
dp_q:P4;B %energy in waveguide 3
Ek3O{< for m3 = 1:1:M3 % Start space evolution
:%{7Q$Xv< s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
Yo:&\a K[ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
M &J*I s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
*F0N'* sca1 = fftshift(fft(s1)); % Take Fourier transform
Za w+ sca2 = fftshift(fft(s2));
nj
mE>2 sca3 = fftshift(fft(s3));
16vfIUtb sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
GcuZPIN%D sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
Lrq&k40y sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
$G3P3y:
[ s3 = ifft(fftshift(sc3));
bX,Z<BvbF s2 = ifft(fftshift(sc2)); % Return to physical space
0W> ",2|z s1 = ifft(fftshift(sc1));
RS~oSoAE end
=#fqFL, p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
P}gh-5x p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
vs~*=d27Pf p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
lxZXz JkqZ P1=[P1 p1/p10];
&D:88 P2=[P2 p2/p10];
?W()Do1tR P3=[P3 p3/p10];
v;SJgZK P=[P p*p];
a'BBp6 end
Sc&_6}K figure(1)
\T0`GpE plot(P,P1, P,P2, P,P3);
'PZJ{8= tBrVg<]t 转自:
http://blog.163.com/opto_wang/