计算脉冲在非线性耦合器中演化的Matlab 程序 V/zmbo) \C4wWh-A % This Matlab script file solves the coupled nonlinear Schrodinger equations of
^)C# % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
[a?bv7Kz % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
ngI+afo
% pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
y9w,Su2 >qmNT/ %fid=fopen('e21.dat','w');
w^,Xa N = 128; % Number of Fourier modes (Time domain sampling points)
y,w_x,m M1 =3000; % Total number of space steps
$RU K<JN$6 J =100; % Steps between output of space
zS h9`F T =10; % length of time windows:T*T0
}}k*i0 T0=0.1; % input pulse width
qVH.I6) MN1=0; % initial value for the space output location
9<3fH J?vq dt = T/N; % time step
?CcX>R-/ n = [-N/2:1:N/2-1]'; % Index
COmu.'%* t = n.*dt;
34nfL: y u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
bW=3X-) u20=u10.*0.0; % input to waveguide 2
dczSW]% u1=u10; u2=u20;
%5nEyZOq U1 = u1;
p(K^Zc U2 = u2; % Compute initial condition; save it in U
)d2:r 07a ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
1}+b4"7] w=2*pi*n./T;
M^>l>?#rl g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
&0fV;%N L=4; % length of evoluation to compare with S. Trillo's paper
XODp[+xEEt dz=L/M1; % space step, make sure nonlinear<0.05
S4-jF D)U for m1 = 1:1:M1 % Start space evolution
H4j1yD(d u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
*'\ HG u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
ZX8@/8sv ca1 = fftshift(fft(u1)); % Take Fourier transform
5HE5$S ca2 = fftshift(fft(u2));
69apTx c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
radP%W-U c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
~tZB1+%) u2 = ifft(fftshift(c2)); % Return to physical space
"fUNrhCx u1 = ifft(fftshift(c1));
6a_U[-a9; if rem(m1,J) == 0 % Save output every J steps.
MUGoW;}v) U1 = [U1 u1]; % put solutions in U array
}[h]z7e2S U2=[U2 u2];
g1.u1} MN1=[MN1 m1];
J@}PySq z1=dz*MN1'; % output location
G6G-qqXy6 end
(:?bQA'Td end
+{C)^!zBK hg=abs(U1').*abs(U1'); % for data write to excel
rK`^A ha=[z1 hg]; % for data write to excel
Q
w - z t1=[0 t'];
{9.UeVz hh=[t1' ha']; % for data write to excel file
o4Cq /K %dlmwrite('aa',hh,'\t'); % save data in the excel format
h.KgHMV` figure(1)
;Krb/qr4_ waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
+
#E?) figure(2)
dUl"w`3 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
)Q>Ao. B& R?{y* 非线性超快脉冲耦合的数值方法的Matlab程序 wu`+KUx >]C/ Q6 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
11kyrv 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
('$*QC.M V\opC6*L_e !H{>c@i O:pg+o& % This Matlab script file solves the nonlinear Schrodinger equations
DT)][V^w % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
k;2.g$)W[c % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
=&qH%S6 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
YRr,{[e $xq04ejJ C=1;
d_0(;' M1=120, % integer for amplitude
UK1 )U)*+ M3=5000; % integer for length of coupler
.:B>xg~2 N = 512; % Number of Fourier modes (Time domain sampling points)
DHx&%]r;D dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
P8|ANe1
v T =40; % length of time:T*T0.
AI#.+PrC{/ dt = T/N; % time step
m%>}T75C^ n = [-N/2:1:N/2-1]'; % Index
O8_!!Qd t = n.*dt;
l^B4.1rT ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
vyB{35p$ w=2*pi*n./T;
@:#J^CsM+' g1=-i*ww./2;
aNNRw(0/ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
(_CvN=A g3=-i*ww./2;
3 H5 P1=0;
&=$f\O1Ty P2=0;
b6sf1E P3=1;
e84%Y8,0 P=0;
dv3u<X M~ for m1=1:M1
6w{_+=T p=0.032*m1; %input amplitude
jw{B8<@s s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
}1~9i'o%Z s1=s10;
js"5{w& s20=0.*s10; %input in waveguide 2
>/Q^.hzd s30=0.*s10; %input in waveguide 3
6sQ;Z |!Pz s2=s20;
Ql l{;A s3=s30;
<)T~_s p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
$x]/|u/9 %energy in waveguide 1
"J2q|@. p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
]?wz. %energy in waveguide 2
CI$z+zN p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
yt="kZ %energy in waveguide 3
knph549 for m3 = 1:1:M3 % Start space evolution
~u2f`67{ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
alHA&YC{K s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
-T{2R:\{ s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
j>:N0:
sca1 = fftshift(fft(s1)); % Take Fourier transform
5;p|iT sca2 = fftshift(fft(s2));
|3!) sca3 = fftshift(fft(s3));
Pmd[2/][ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
Yk|.UuXT sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
1Q? RD%lkf sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
" M?dU^U^ s3 = ifft(fftshift(sc3));
aGi`(|shW s2 = ifft(fftshift(sc2)); % Return to physical space
lN,a+S/' s1 = ifft(fftshift(sc1));
~wv$uL8y end
q{f\_2[ p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
% X %zK1 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
Cb+$|Kg/"b p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
{cIk-nG-_ P1=[P1 p1/p10];
h4|}BGO P2=[P2 p2/p10];
g0U?`;n$ P3=[P3 p3/p10];
Rk#'^} P=[P p*p];
O_4B>
)zd end
43M.Hj] figure(1)
c!7WRHJE_a plot(P,P1, P,P2, P,P3);
1 Ga3[g }8aqSD<: 转自:
http://blog.163.com/opto_wang/