计算脉冲在非线性耦合器中演化的Matlab 程序 I(|{/{P, #4?3OU# % This Matlab script file solves the coupled nonlinear Schrodinger equations of
S7]cF5N % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
|H49FL % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
n"vI> _|G % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
E O^0sF< bcg)K`'N %fid=fopen('e21.dat','w');
JM0)x}]+ N = 128; % Number of Fourier modes (Time domain sampling points)
i[swOYz]X M1 =3000; % Total number of space steps
,;;~dfHm J =100; % Steps between output of space
pK%' S T =10; % length of time windows:T*T0
NaIVKo T0=0.1; % input pulse width
.7q#{`K^= MN1=0; % initial value for the space output location
W%x#ps5% dt = T/N; % time step
`Jo}/c5R n = [-N/2:1:N/2-1]'; % Index
-!"8j"pA: t = n.*dt;
9i@*\Ada u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
~ i,my31 u20=u10.*0.0; % input to waveguide 2
:.^{! u1=u10; u2=u20;
a+d|9y/k U1 = u1;
'=5N?) U2 = u2; % Compute initial condition; save it in U
uM$=v]e^4 ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
C" {j0X` w=2*pi*n./T;
0nX5
$Kn g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
OpfFF;"A' L=4; % length of evoluation to compare with S. Trillo's paper
#i?TCO dz=L/M1; % space step, make sure nonlinear<0.05
v%r! }s for m1 = 1:1:M1 % Start space evolution
0Pe.G0 # u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
Al?XJ C B@ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
BC^WPr ca1 = fftshift(fft(u1)); % Take Fourier transform
1Pbp=R/7ar ca2 = fftshift(fft(u2));
?hO*~w;UU| c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
6_7d1.wv9 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
G{<wXxq% u2 = ifft(fftshift(c2)); % Return to physical space
=0A{z#6 u1 = ifft(fftshift(c1));
}[|"db
if rem(m1,J) == 0 % Save output every J steps.
x!J L9 U1 = [U1 u1]; % put solutions in U array
'5IJ;4k U2=[U2 u2];
F+X3CB,f MN1=[MN1 m1];
Mg].# z1=dz*MN1'; % output location
B{Rig5Sc end
QP'*
)gjO7 end
%(i(ZW " hg=abs(U1').*abs(U1'); % for data write to excel
=1D*K% ha=[z1 hg]; % for data write to excel
y]k`}&-~ t1=[0 t'];
#RcmO** hh=[t1' ha']; % for data write to excel file
jhHb[je~{4 %dlmwrite('aa',hh,'\t'); % save data in the excel format
6*%lnd+_ figure(1)
w
^A0l.{ waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
0xsvxH"* figure(2)
h<uQ~CQg waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
?r/7: CZ@M~Si_ 非线性超快脉冲耦合的数值方法的Matlab程序 1i{B47| 7+0hIKrFC 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
]HRE-g 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
0]T
;{ L\"$R":3{d (7"qT^s3 YO=;)RA % This Matlab script file solves the nonlinear Schrodinger equations
v<O\ l~S % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
&" b0`&l % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
9F3`hJZRy> % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
tZ(Wh A!NT 2YdHZ C=1;
+ISB"a M1=120, % integer for amplitude
X;- ,3dy M3=5000; % integer for length of coupler
&c A?|(7- N = 512; % Number of Fourier modes (Time domain sampling points)
^s%Qt dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
c$p1Sovw T =40; % length of time:T*T0.
Ros5]5=dP dt = T/N; % time step
:QN,T3i'/3 n = [-N/2:1:N/2-1]'; % Index
/wmJMX t = n.*dt;
W2REwUps ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
[QeKT8 w=2*pi*n./T;
H~
(I g1=-i*ww./2;
bju0l[;= g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
UF}fmDi g3=-i*ww./2;
F
M`pPx P1=0;
$UKDXQF" P2=0;
qWo|LpxWt P3=1;
`OduBUI]] P=0;
MEg|AhP for m1=1:M1
X]`\NNx p=0.032*m1; %input amplitude
rBpr1XKl, s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
?
[=P s1=s10;
ofS9h*wrJ s20=0.*s10; %input in waveguide 2
[<cP~ s30=0.*s10; %input in waveguide 3
7 0KZXgBy_ s2=s20;
>5 Ce/P'R s3=s30;
GlVq<RG* p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
zS.7O'I<' %energy in waveguide 1
#E>f.:) p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
75<E 0O %energy in waveguide 2
LM0TSB? p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
.2OP>:9F %energy in waveguide 3
l46O=?usDX for m3 = 1:1:M3 % Start space evolution
T_pE 'U%[ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
G$ip Wi s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
ci,o'`Q s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
|Y:T3hra61 sca1 = fftshift(fft(s1)); % Take Fourier transform
)00#Rrt9 sca2 = fftshift(fft(s2));
n_iq85 sca3 = fftshift(fft(s3));
P^+Og_$ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
[4"%NY sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
}**^g: sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
H,] D}r s3 = ifft(fftshift(sc3));
cpf8f i s2 = ifft(fftshift(sc2)); % Return to physical space
@"Do8p!*(6 s1 = ifft(fftshift(sc1));
g~N)~]0{ end
T<P4+#JK p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
r)ga{Nn,. p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
+BmA4/P$ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
#~nI^
ggW P1=[P1 p1/p10];
k5W5 9tz P2=[P2 p2/p10];
m_oBV|v{ P3=[P3 p3/p10];
|qfnbi-\ P=[P p*p];
f'*HP%+Y end
>pz/wTOi figure(1)
;sb0,2YyP plot(P,P1, P,P2, P,P3);
lkBab$S) IC7n;n9 转自:
http://blog.163.com/opto_wang/