计算脉冲在非线性耦合器中演化的Matlab 程序 b,I$.&BD /Wt<[g# % This Matlab script file solves the coupled nonlinear Schrodinger equations of
8)T.[AP % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
@c5TSHSL. % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
o@"H3
gz % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
p6|0JBm _%Jqyc"- %fid=fopen('e21.dat','w');
u3kZOsG N = 128; % Number of Fourier modes (Time domain sampling points)
WOquG M1 =3000; % Total number of space steps
O9jqeF`L= J =100; % Steps between output of space
{8'I+- T =10; % length of time windows:T*T0
FL-sXg T0=0.1; % input pulse width
U#-89.x MN1=0; % initial value for the space output location
rtC.!].;% dt = T/N; % time step
;j S~0R n = [-N/2:1:N/2-1]'; % Index
`Fnt#F} t = n.*dt;
EE-jU<>| u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
8eQ 4[wJY u20=u10.*0.0; % input to waveguide 2
Q/L:0ovR u1=u10; u2=u20;
'f]\@&Np U1 = u1;
D&$%JT'3 U2 = u2; % Compute initial condition; save it in U
QF
Vy2 q ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
bZz ,' w=2*pi*n./T;
UhXZ^k3 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
^GHA,cSf L=4; % length of evoluation to compare with S. Trillo's paper
%,1bh dz=L/M1; % space step, make sure nonlinear<0.05
Ar,B7-F! for m1 = 1:1:M1 % Start space evolution
p78X,44xg u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
}HRM6fR1S u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
v?vm-e ca1 = fftshift(fft(u1)); % Take Fourier transform
C/U^8,6\n ca2 = fftshift(fft(u2));
|aIY c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
%9C_p]P* c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
Kj.4Z+^ u2 = ifft(fftshift(c2)); % Return to physical space
:>+}|(v u1 = ifft(fftshift(c1));
1#/>[B if rem(m1,J) == 0 % Save output every J steps.
$GB/}$fd& U1 = [U1 u1]; % put solutions in U array
@Ge\odfF: U2=[U2 u2];
s8Bbet MN1=[MN1 m1];
D% v{[KY z1=dz*MN1'; % output location
N D`?T
&PK end
S&^i*R4] end
C5"=%v[gQv hg=abs(U1').*abs(U1'); % for data write to excel
$t}t'uJ ha=[z1 hg]; % for data write to excel
3\JEp,5
t1=[0 t'];
/N>f#:} hh=[t1' ha']; % for data write to excel file
K*NCIIDh %dlmwrite('aa',hh,'\t'); % save data in the excel format
6R1}fdHvP figure(1)
2 ,RO waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
^~XsHmcQ figure(2)
pbJC A& waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
Y)lYEhF 7|bzopLJk 非线性超快脉冲耦合的数值方法的Matlab程序 XA PqRJ*Z }M*yE]LL;Z 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
<m7m 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
tX)l_?jVH Okxuhzn>" l/ufu[x!a dX^ ^
@7 % This Matlab script file solves the nonlinear Schrodinger equations
\2]M&n GT % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
^V,?n@c! % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
v{tw ;Z# % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
t`%Xxxu K;)(fc C=1;
jAXKp
b M1=120, % integer for amplitude
KUD&vqx3 M3=5000; % integer for length of coupler
$DS|jnpV N = 512; % Number of Fourier modes (Time domain sampling points)
M it3q dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
'ip2| UG T =40; % length of time:T*T0.
xNAX)v3Z dt = T/N; % time step
[P_@-:(O n = [-N/2:1:N/2-1]'; % Index
,#?iu?i/ t = n.*dt;
x#)CH}J ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
|tn.ZEgw3~ w=2*pi*n./T;
WtS5i7:<Y g1=-i*ww./2;
I.dS-)Y g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
h$`zuz g3=-i*ww./2;
XSOSy2: P1=0;
1|bg;X9+ P2=0;
v=8sj{g3,3 P3=1;
~$PY6s P=0;
W!jg for m1=1:M1
?c ur}` p=0.032*m1; %input amplitude
(Y!{ UNq5 s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
CqFk(Td9-D s1=s10;
%H/V
iC s20=0.*s10; %input in waveguide 2
RwyX,| s30=0.*s10; %input in waveguide 3
,uoK'_ s2=s20;
lD9QS ; s3=s30;
%r
=9,IJ p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
(pv6V2i %energy in waveguide 1
BS*Y3 $ p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
+Hd'*'c %energy in waveguide 2
nI_UL p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
pE4yx5r5 %energy in waveguide 3
Ht4A for m3 = 1:1:M3 % Start space evolution
u;G-46 s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
i&mt- s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
]L6[vJHx s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
hEhvA6f, sca1 = fftshift(fft(s1)); % Take Fourier transform
_jWGwO sca2 = fftshift(fft(s2));
-^ceTzW+ sca3 = fftshift(fft(s3));
r7FFZNs! sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
JavSR1_ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
/0 2-0mNv sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
.dPy<6E s3 = ifft(fftshift(sc3));
5}Z_A?gy s2 = ifft(fftshift(sc2)); % Return to physical space
Xte"tf9(C s1 = ifft(fftshift(sc1));
FE'F@aS\ end
1fMl8[!JLu p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
:meq4!g{1 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
Vw";< <0HZ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
9f #6Q*/ P1=[P1 p1/p10];
hMnJH_siY P2=[P2 p2/p10];
$+WMKv@< P3=[P3 p3/p10];
bIy:~z5
P=[P p*p];
'*=kt end
kO}QOL4 figure(1)
k#"}oI{<
6 plot(P,P1, P,P2, P,P3);
6 K-jje;) (@i2a 转自:
http://blog.163.com/opto_wang/