计算脉冲在非线性耦合器中演化的Matlab 程序 2n|]&D3V"' '7;b+Vbl# % This Matlab script file solves the coupled nonlinear Schrodinger equations of
DLBHZ?+! % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
mNDz|Ln % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
}{#ty uzAo % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
K#_x.:<J waRK$/b
( %fid=fopen('e21.dat','w');
*s1^s;LR N = 128; % Number of Fourier modes (Time domain sampling points)
_j Ck)3KO M1 =3000; % Total number of space steps
|b^+=
" J =100; % Steps between output of space
#ssSs]zl T =10; % length of time windows:T*T0
\:vHB! 2E T0=0.1; % input pulse width
{.mPe| MN1=0; % initial value for the space output location
q47:kB{d dt = T/N; % time step
1
|T{RY5 n = [-N/2:1:N/2-1]'; % Index
!]*Cwbh.
u t = n.*dt;
'2X6>6`w u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
e/s8?l u20=u10.*0.0; % input to waveguide 2
O~~WP*N u1=u10; u2=u20;
MIF`|3$, U1 = u1;
Z\. n6 U2 = u2; % Compute initial condition; save it in U
&'KJh+jJ
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
ckhU@C|=* w=2*pi*n./T;
NcMohpkq g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
6)j4- L=4; % length of evoluation to compare with S. Trillo's paper
b;k3B7< dz=L/M1; % space step, make sure nonlinear<0.05
PqDffZ^z for m1 = 1:1:M1 % Start space evolution
TG^?J` u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
7G]v(ay u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
R q
|,@ ca1 = fftshift(fft(u1)); % Take Fourier transform
1~aP)q ca2 = fftshift(fft(u2));
HY!R | c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
!9p;%Ny` c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
d":GsI?3 u2 = ifft(fftshift(c2)); % Return to physical space
OAw- -rl u1 = ifft(fftshift(c1));
z}z 6Vg if rem(m1,J) == 0 % Save output every J steps.
[Zxv&$SQ U1 = [U1 u1]; % put solutions in U array
DElrY)3O. U2=[U2 u2];
$s.:H4:I MN1=[MN1 m1];
(<KFA, z1=dz*MN1'; % output location
5x? YFq6k end
hb="J349 end
2&o
jQhe hg=abs(U1').*abs(U1'); % for data write to excel
xm$-:N0q ha=[z1 hg]; % for data write to excel
)Gm,%[?2C t1=[0 t'];
^Iy'G44 hh=[t1' ha']; % for data write to excel file
Swr
8 %dlmwrite('aa',hh,'\t'); % save data in the excel format
'^!#*O figure(1)
:tf'Gw6v waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
l' mdj!{& figure(2)
L'L[Vpx waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
|w].*c}Z `~k`m{4.a 非线性超快脉冲耦合的数值方法的Matlab程序 ,[UK32KWI NXHe;G 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
r7^oqEp@B 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
wG@f~$ (J 1:J N}gPf
i *hvC0U@3 % This Matlab script file solves the nonlinear Schrodinger equations
%5$)w;p.$' % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
{|{;:_.> % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
W\Df:P {< % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
L.?QZN%cN ~J:]cy)Q C=1;
cNl NJ M1=120, % integer for amplitude
Us2IeR M3=5000; % integer for length of coupler
K;Fs5|gFU N = 512; % Number of Fourier modes (Time domain sampling points)
4&kC8
[ r dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
c:I %jm T =40; % length of time:T*T0.
38#Zlcf dt = T/N; % time step
u*=8s5Q[ n = [-N/2:1:N/2-1]'; % Index
H! P$p-*. t = n.*dt;
_)kTlX:, ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
!9t,#?! w=2*pi*n./T;
^_gH}~l+U g1=-i*ww./2;
*$Z,kZ^^ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
IqAML|C g3=-i*ww./2;
rU9z? ( P1=0;
y|/[; P2=0;
`Kbf]"4q P3=1;
dym K @ P=0;
/b7]NC% for m1=1:M1
|/;;uK,y p=0.032*m1; %input amplitude
43?uTnX/ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
ZM16 ~k s1=s10;
?DGg.2f s20=0.*s10; %input in waveguide 2
H<9_BA? s30=0.*s10; %input in waveguide 3
ub;:"ns} s2=s20;
&u2H^ j s3=s30;
Z`<5SHQd p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
X;]Ijha<* %energy in waveguide 1
B~B, L*kC2 p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
l;d4Le %energy in waveguide 2
M}e}3w p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
}qT{" *SC %energy in waveguide 3
[Ob09#B%:5 for m3 = 1:1:M3 % Start space evolution
goe%'k, s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
*,|x
p s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
GL%)s?
s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
2m^qXE$ sca1 = fftshift(fft(s1)); % Take Fourier transform
{T-=&%|| sca2 = fftshift(fft(s2));
,N1pw w? sca3 = fftshift(fft(s3));
!dq$qUl/ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
a<J<Oc! sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
IIN,Da;hD sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
q P0UcG s3 = ifft(fftshift(sc3));
@ZRg9M:N s2 = ifft(fftshift(sc2)); % Return to physical space
Gz52^O: s1 = ifft(fftshift(sc1));
f0879(,i end
xX|f{) < p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
}kG>6_p? p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
+Sc2'z>R p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
*q"1I9zvT P1=[P1 p1/p10];
R^B8** N P2=[P2 p2/p10];
7g$*K0m` P3=[P3 p3/p10];
=h xyR; P=[P p*p];
U1 `pY:P end
W_6gV figure(1)
+|Izjx]ZV plot(P,P1, P,P2, P,P3);
Tm$8\c4V:* n-g#nEc: 转自:
http://blog.163.com/opto_wang/