计算脉冲在非线性耦合器中演化的Matlab 程序 VD@$y^!H .tGz, z} % This Matlab script file solves the coupled nonlinear Schrodinger equations of
62,dFM7
% soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
Iox )- % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
6nE/8m % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
=No#/_ l1lYb;C %fid=fopen('e21.dat','w');
+D4m@O N = 128; % Number of Fourier modes (Time domain sampling points)
P (7Q8i' M1 =3000; % Total number of space steps
DiOd!8Y J =100; % Steps between output of space
8<T~AU8'* T =10; % length of time windows:T*T0
!~%DR~^` T0=0.1; % input pulse width
&n_f.oUc MN1=0; % initial value for the space output location
dmXfz D dt = T/N; % time step
o+x!
( n = [-N/2:1:N/2-1]'; % Index
%X.g+uu t = n.*dt;
xg7KU& u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
C P&u u20=u10.*0.0; % input to waveguide 2
xR%NiYNQz u1=u10; u2=u20;
r<n:o7 U1 = u1;
w{dRf!b69 U2 = u2; % Compute initial condition; save it in U
Y DHP-0? ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
K-\wx5#l/ w=2*pi*n./T;
cf$
hIB)Oi g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
VVAc bAGJ L=4; % length of evoluation to compare with S. Trillo's paper
aXq ig&: dz=L/M1; % space step, make sure nonlinear<0.05
d9U)O6= for m1 = 1:1:M1 % Start space evolution
<'$>&^!^ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
R= mTJ'y u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
R31Z(vY ca1 = fftshift(fft(u1)); % Take Fourier transform
)P
b$ ca2 = fftshift(fft(u2));
GVlT+Rs7 c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
o938!jML_ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
G%l')e)9Gq u2 = ifft(fftshift(c2)); % Return to physical space
+x`pWH]2 u1 = ifft(fftshift(c1));
1;c># 20 if rem(m1,J) == 0 % Save output every J steps.
"|dhmV[; U1 = [U1 u1]; % put solutions in U array
'6){~ee
S U2=[U2 u2];
U`EOun, MN1=[MN1 m1];
xrBM`Bj0@ z1=dz*MN1'; % output location
J|^XD<Y end
%5zIh[!1$ end
sCY hg=abs(U1').*abs(U1'); % for data write to excel
k*6"!J%A ha=[z1 hg]; % for data write to excel
5vR])T/S0 t1=[0 t'];
cMT:Ij]; hh=[t1' ha']; % for data write to excel file
}PBL %dlmwrite('aa',hh,'\t'); % save data in the excel format
'Z.C&6_ figure(1)
M \k[?i waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
!lFNG:&` figure(2)
H.>EO|p waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
/0gr?I1wr7 ak_y:O| 非线性超快脉冲耦合的数值方法的Matlab程序 ge?or]T1S A g+B* 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
<+q`Dk 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
NrXIaN \ILNx^$EL '&,p>aM pL[3,.@WA % This Matlab script file solves the nonlinear Schrodinger equations
Hik=(pTu> % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
~XWBLU< % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
@XtrC|dkkE % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
BxV>s+o&] ]9w8[T:O C=1;
hO3
q|SL M1=120, % integer for amplitude
..nVViZ M3=5000; % integer for length of coupler
cH5 N = 512; % Number of Fourier modes (Time domain sampling points)
}0anssC dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
^W@8KB T =40; % length of time:T*T0.
oGI'a:iff dt = T/N; % time step
d(^HO~p n = [-N/2:1:N/2-1]'; % Index
"?aI t = n.*dt;
)i:*r8*~ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
QP50.P5g w=2*pi*n./T;
T_UJ?W g1=-i*ww./2;
(j@c946z"" g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
JCBX?rM/ g3=-i*ww./2;
v%2Dz P1=0;
e&T-GL P2=0;
,\&r\!= P3=1;
jLMy27Cn P=0;
03zt^< for m1=1:M1
ZD|F"v. p=0.032*m1; %input amplitude
(*6 .-Xn s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
z>,tP s1=s10;
}s'=w]m s20=0.*s10; %input in waveguide 2
C<T6l'S{? s30=0.*s10; %input in waveguide 3
Ey U6^ s2=s20;
b|Ge#o s3=s30;
ZDp^k{AN9a p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
.nVY" C& %energy in waveguide 1
t$t'{*t(
T p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
"bRjY?D %energy in waveguide 2
GKF!GbGR@ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
F[jqJzCz %energy in waveguide 3
0iR?r+| for m3 = 1:1:M3 % Start space evolution
<{;'0> ToM s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
,38M6yD s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
?Q"<AL>Z s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
7\yh(+ kN sca1 = fftshift(fft(s1)); % Take Fourier transform
-
uO(qUa# sca2 = fftshift(fft(s2));
4B[pQlg sca3 = fftshift(fft(s3));
T;{}bc&I sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
?,v&
o>* sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
Ho*B<#&(A| sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
WwWOic2 s3 = ifft(fftshift(sc3));
G~u$BV' s2 = ifft(fftshift(sc2)); % Return to physical space
_!,2"dS s1 = ifft(fftshift(sc1));
9SA %' end
7CF>cpw p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
?-3G5yy p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
qHyOaKMd p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
#l-zY}& P1=[P1 p1/p10];
E'mT%@MOM P2=[P2 p2/p10];
c'VCCXe P3=[P3 p3/p10];
ft@#[Bkx P=[P p*p];
dD39?K/ end
ARnq~E@1 figure(1)
,+h<qBsV@ plot(P,P1, P,P2, P,P3);
*w^!\ ]lyQ*gM 转自:
http://blog.163.com/opto_wang/