计算脉冲在非线性耦合器中演化的Matlab 程序 :>{!%-1Z Z! O4hA4 % This Matlab script file solves the coupled nonlinear Schrodinger equations of
\/YRhQ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
nH?6o#]N % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
P?/JyiO} % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
`6)Qi*Z 3\@2!:> %fid=fopen('e21.dat','w');
Hvm}@3F| N = 128; % Number of Fourier modes (Time domain sampling points)
%rG4X M1 =3000; % Total number of space steps
rL1yq|]I J =100; % Steps between output of space
b(GV4% T =10; % length of time windows:T*T0
d-B+s%>D T0=0.1; % input pulse width
;6P>S4`w MN1=0; % initial value for the space output location
}6%XiP| dt = T/N; % time step
f(w>(1&/B n = [-N/2:1:N/2-1]'; % Index
7/IL"
D t = n.*dt;
}x`Cnn u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
MGm*({% u20=u10.*0.0; % input to waveguide 2
I{cH$jt< u1=u10; u2=u20;
|-}.Y(y U1 = u1;
o13jd NQ- U2 = u2; % Compute initial condition; save it in U
>|A,rE^Ojt ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
isL
zgN% w=2*pi*n./T;
yO1
7C g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
dgpE3
37Lt L=4; % length of evoluation to compare with S. Trillo's paper
49Jnp>h dz=L/M1; % space step, make sure nonlinear<0.05
oYkd%N9P for m1 = 1:1:M1 % Start space evolution
6]b"n'G u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
XeI2<=@% u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
XYzaSp=bb ca1 = fftshift(fft(u1)); % Take Fourier transform
\uOM,98xS ca2 = fftshift(fft(u2));
bwXeEA@{ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
V'j+)!w5 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
\s&Mz;: u2 = ifft(fftshift(c2)); % Return to physical space
y(Gn+ u1 = ifft(fftshift(c1));
:,0(aB if rem(m1,J) == 0 % Save output every J steps.
a{T.U-0
U1 = [U1 u1]; % put solutions in U array
>n09K8
A U2=[U2 u2];
Y 3ApW vS MN1=[MN1 m1];
mp8GHV z1=dz*MN1'; % output location
[
@eA o> end
g4h{dFb|_ end
i7.8H*z' hg=abs(U1').*abs(U1'); % for data write to excel
":udo VS! ha=[z1 hg]; % for data write to excel
:>fT=$i@ t1=[0 t'];
;bB#Pg hh=[t1' ha']; % for data write to excel file
9O3 #d %dlmwrite('aa',hh,'\t'); % save data in the excel format
o4kLgY !Q figure(1)
=Pl@+RgK+ waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
tr<fii3< figure(2)
[_'A(. waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
~-zTY&c_ skcyLIb 非线性超快脉冲耦合的数值方法的Matlab程序 2xLtJR4L 9i5?J ]o^ 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
d. vNiq,` 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
}d?;kt l)[|wPf ]#]Z]9w OZxJDg % This Matlab script file solves the nonlinear Schrodinger equations
{1Ra|,; % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
GGuU(sL* % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
vdq=F|& % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
8${n}} f#!+l1GV C=1;
-"I$$C M1=120, % integer for amplitude
+^Xf:r`
G M3=5000; % integer for length of coupler
)*BZo>" N = 512; % Number of Fourier modes (Time domain sampling points)
"#O9ij dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
+06{5-, T =40; % length of time:T*T0.
srv4kodj dt = T/N; % time step
05LkLB n = [-N/2:1:N/2-1]'; % Index
r1r$y2v~ t = n.*dt;
eyMn! a ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
,j*9 ) w=2*pi*n./T;
oVpZR$ g1=-i*ww./2;
ST?{H SCz g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
xQFY/Z g3=-i*ww./2;
7\
_MA!:< P1=0;
kg^0 %-F P2=0;
jKml:)k P3=1;
x
[]ad"R P=0;
s>J5.Z7"'j for m1=1:M1
E5^\]`9P p=0.032*m1; %input amplitude
OvX&5Q5 s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
d0 )725Ia s1=s10;
|E1U$,s~u s20=0.*s10; %input in waveguide 2
xT+_JT65 s30=0.*s10; %input in waveguide 3
0&,D&y% s2=s20;
jB?SX s3=s30;
;g!rc#z2g p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
u}nS dZC %energy in waveguide 1
lJdBUoO p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
bh.&vp.kP %energy in waveguide 2
+c~&o83[ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
BXYHJ %energy in waveguide 3
&4-;;h\H for m3 = 1:1:M3 % Start space evolution
XjN4EDi+E s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
_2jL]mB s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
`>
%QCc\ s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
>Q /;0>V sca1 = fftshift(fft(s1)); % Take Fourier transform
"/zgh sca2 = fftshift(fft(s2));
?/o 8f7Z sca3 = fftshift(fft(s3));
X}Oe 'y sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
|P>7C sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
KkCGL*]K sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Y$ jX s3 = ifft(fftshift(sc3));
!_W/p`Tc s2 = ifft(fftshift(sc2)); % Return to physical space
gq?7O< s1 = ifft(fftshift(sc1));
ov_l)vt
end
@[g7\d p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
~lo43$)^ p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
{mJ'
Lb0; p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
iO$87! P1=[P1 p1/p10];
Fx:38Ae P2=[P2 p2/p10];
~X3g_<b_8 P3=[P3 p3/p10];
}:2##<"\t P=[P p*p];
relt7 sK end
]6e(-v!U figure(1)
*S}@DoXS plot(P,P1, P,P2, P,P3);
hW#^H5? I0+6p8, 转自:
http://blog.163.com/opto_wang/