计算脉冲在非线性耦合器中演化的Matlab 程序 2GStN74X r 6S\8$ % This Matlab script file solves the coupled nonlinear Schrodinger equations of
,6W>can % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
WOf 4o % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
C{wEzM: % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
BFW&2 <b<j=_3 %fid=fopen('e21.dat','w');
;6hOx(>`= N = 128; % Number of Fourier modes (Time domain sampling points)
,,|^%Ct'] M1 =3000; % Total number of space steps
H 7
^/q7 J =100; % Steps between output of space
uRe'%?W T =10; % length of time windows:T*T0
k-""_WJ~^ T0=0.1; % input pulse width
2VCI 1E MN1=0; % initial value for the space output location
P
L+sR3bR dt = T/N; % time step
uUw5l})%Fi n = [-N/2:1:N/2-1]'; % Index
s(roJbJ_; t = n.*dt;
HE_8(Ms;8 u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
kz7(Z'pw u20=u10.*0.0; % input to waveguide 2
O<W_fx8_' u1=u10; u2=u20;
G9@0@2aY8 U1 = u1;
w)jISu;RG U2 = u2; % Compute initial condition; save it in U
8sK9G`
k ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Nl(Foya%) w=2*pi*n./T;
RY*U"G0#w g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
maR"t+ L=4; % length of evoluation to compare with S. Trillo's paper
y L~W.H dz=L/M1; % space step, make sure nonlinear<0.05
B48={ for m1 = 1:1:M1 % Start space evolution
~.lPEA %% u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
Lq!>kT<]! u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
HiJE}V;Vq ca1 = fftshift(fft(u1)); % Take Fourier transform
{T ~#?v( ca2 = fftshift(fft(u2));
1ZB"EQ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
8kDp_si c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
BJo*'US-Q u2 = ifft(fftshift(c2)); % Return to physical space
"G9xMffW u1 = ifft(fftshift(c1));
]:/Q]n^ if rem(m1,J) == 0 % Save output every J steps.
ib791 U1 = [U1 u1]; % put solutions in U array
ps DetP
U2=[U2 u2];
ges J/I MN1=[MN1 m1];
u08mqEa z1=dz*MN1'; % output location
t.\dpBq end
U\!X,a*ts{ end
=zs`#-^8 hg=abs(U1').*abs(U1'); % for data write to excel
w917N4$ ha=[z1 hg]; % for data write to excel
6/dI6C! t1=[0 t'];
7W.~ hh=[t1' ha']; % for data write to excel file
@49S` %dlmwrite('aa',hh,'\t'); % save data in the excel format
X+]G- figure(1)
QUQ'3 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
%3''}Y5
figure(2)
I ?.^ho waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
{3vNPQJ x# 5A(g 非线性超快脉冲耦合的数值方法的Matlab程序 cDkf qcC D*|Bb? 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
_ZkI)o 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
K8Y=S12Ti \mlqO[ S R]*K:~DM OY@ %p}l % This Matlab script file solves the nonlinear Schrodinger equations
P\)iZiGc % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
ijx0gh`~ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
6<(.4a? % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
:tv,]05t Vj>8a)"B5a C=1;
%sQ^.` 2 M1=120, % integer for amplitude
A1zjPG&] M3=5000; % integer for length of coupler
[QT#Yf0 N = 512; % Number of Fourier modes (Time domain sampling points)
*$ %a:q1U dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
0v$~90) T =40; % length of time:T*T0.
c=.(!qdH dt = T/N; % time step
TT3|/zwn n = [-N/2:1:N/2-1]'; % Index
#$qTFN t = n.*dt;
<B8!.|19 ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
%&t<K3&Yh w=2*pi*n./T;
WU=59gB+jL g1=-i*ww./2;
3WIk g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
G{%L B}2 g3=-i*ww./2;
0F><P?5 P1=0;
Bh]P{H% P2=0;
j]/RC(;? P3=1;
RF0HjgP P=0;
_/5H l` for m1=1:M1
Aj+F
|l p=0.032*m1; %input amplitude
i5,kd~%O s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
p|D/;Mk s1=s10;
(mt k 4 s20=0.*s10; %input in waveguide 2
)gy!GK s30=0.*s10; %input in waveguide 3
j^rIH#V s2=s20;
i9][N5\$ s3=s30;
M{hg0/}sUW p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
$,Yd>%Y %energy in waveguide 1
I,@6J(9 p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
6MdiY1Lr!K %energy in waveguide 2
F;0}x;:> p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
?o#%Xs %energy in waveguide 3
IG9VdDj for m3 = 1:1:M3 % Start space evolution
ur7q [n s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
)iK6:s# s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
H-f X(9 s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
LvUj9eVb/L sca1 = fftshift(fft(s1)); % Take Fourier transform
..'_o~Ka sca2 = fftshift(fft(s2));
M, mvys$ sca3 = fftshift(fft(s3));
xLH)P<^`C sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
Jcm&RI"{ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
+-CtjhoS sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
(|1A?@sJ#h s3 = ifft(fftshift(sc3));
Z lzjVU/E s2 = ifft(fftshift(sc2)); % Return to physical space
g0ly s1 = ifft(fftshift(sc1));
@xYlS5{ end
>y:,9; p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
\<TXS)w] p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
R>mmoG}MQ[ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
h/hmlnOQl P1=[P1 p1/p10];
_#8RSr8'y P2=[P2 p2/p10];
+<3XJ7D P3=[P3 p3/p10];
~d*(=G P=[P p*p];
uurh??R end
d8=x0~7 figure(1)
{w^+\]tC plot(P,P1, P,P2, P,P3);
JKmIvZ)8 Opc
ZU{4b 转自:
http://blog.163.com/opto_wang/