计算脉冲在非线性耦合器中演化的Matlab 程序 l"7#(a 'Z]wh .]T % This Matlab script file solves the coupled nonlinear Schrodinger equations of
?\kuP ?\ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
K { FZ/ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
NwxDxIIH/) % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
i5=~tS {VXucGI| %fid=fopen('e21.dat','w');
&F:.OVzX N = 128; % Number of Fourier modes (Time domain sampling points)
[k0/ZfFwV M1 =3000; % Total number of space steps
LJom+PxF$x J =100; % Steps between output of space
-:kIIK
T =10; % length of time windows:T*T0
, 6Jw T0=0.1; % input pulse width
4U16'd MN1=0; % initial value for the space output location
jSSEfy>^ dt = T/N; % time step
MMUlA$*t n = [-N/2:1:N/2-1]'; % Index
5^R?+<rd t = n.*dt;
ef)zf+o u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
a6Joa&`dv u20=u10.*0.0; % input to waveguide 2
t-5Y,}j u1=u10; u2=u20;
~L>86/hP,N U1 = u1;
!Qf*d;wxn( U2 = u2; % Compute initial condition; save it in U
=6+99<G|%M ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
4UUbX w=2*pi*n./T;
y=.bn!u}z g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
AWE ab L=4; % length of evoluation to compare with S. Trillo's paper
$7ix(WL<% dz=L/M1; % space step, make sure nonlinear<0.05
}'fa f{W for m1 = 1:1:M1 % Start space evolution
nt+OaXe5D u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
i(OeE"YA u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
oam;hmw ca1 = fftshift(fft(u1)); % Take Fourier transform
qGX#(,E9; ca2 = fftshift(fft(u2));
Z zjCS2U
c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
4 R(m$!E! c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
|2%|= u2 = ifft(fftshift(c2)); % Return to physical space
q3#+G:nh u1 = ifft(fftshift(c1));
&r~s3S{pQ if rem(m1,J) == 0 % Save output every J steps.
RKE"}|i+S U1 = [U1 u1]; % put solutions in U array
x(xi%?G U2=[U2 u2];
X:I2wJDs\ MN1=[MN1 m1];
PEm2w#X%L z1=dz*MN1'; % output location
.Zj`_5C end
G maNi end
_Gf-s51s hg=abs(U1').*abs(U1'); % for data write to excel
p:K%-^ ha=[z1 hg]; % for data write to excel
y4LUC;[n t1=[0 t'];
1_#;+S hh=[t1' ha']; % for data write to excel file
q5L^>" %dlmwrite('aa',hh,'\t'); % save data in the excel format
f$6N figure(1)
cJv/)hRaz waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
P tLWFO figure(2)
d6ef)mw waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
\@WVeFr (ie%zrhS 非线性超快脉冲耦合的数值方法的Matlab程序 biU_ImJ>0 ^ =n7E 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
Nh_\{
&r 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
fK+
5 =JgR c7 [U8/nT *i^$xjOa % This Matlab script file solves the nonlinear Schrodinger equations
M?UUT8, % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
U1X"UN) % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
Kx&"9g$ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
|bnYHP$! y.J>}[\&x C=1;
GCq4{_B\Q M1=120, % integer for amplitude
X-_VuM_p M3=5000; % integer for length of coupler
VQ|{Q} N = 512; % Number of Fourier modes (Time domain sampling points)
pCrm `hy( dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
*jbPy?%oY T =40; % length of time:T*T0.
:;yrYAyT3 dt = T/N; % time step
o2U5irU n = [-N/2:1:N/2-1]'; % Index
)LIn1o_, t = n.*dt;
7/51_=%kR ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
77yYdil^W+ w=2*pi*n./T;
.ex;4( -! g1=-i*ww./2;
=g!Pw] g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
ThgJ
' g3=-i*ww./2;
N+B!AK0. P1=0;
|[Fb&x P2=0;
S-88m/"]s P3=1;
Qd
kus214 P=0;
-5+Yz9pv[ for m1=1:M1
}Le]qoW[' p=0.032*m1; %input amplitude
7~XA92 s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
)Yy5u'} s1=s10;
2#R$-*;# s20=0.*s10; %input in waveguide 2
6>rz=yAM_ s30=0.*s10; %input in waveguide 3
n}IGxum8` s2=s20;
8| =C/k s3=s30;
4n6AK`E p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
,++HiYOG}e %energy in waveguide 1
t^"8M6BqC; p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
4RB%r %energy in waveguide 2
]"uG04"Vk p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
qi7C.w; %energy in waveguide 3
jaodcT0 for m3 = 1:1:M3 % Start space evolution
v0oVbHO5< s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
} SWp~3P s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
IiqqdU] s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
5%WAnh sca1 = fftshift(fft(s1)); % Take Fourier transform
l3>e-kP sca2 = fftshift(fft(s2));
x4c|/}\)*
sca3 = fftshift(fft(s3));
2SC-c `9) sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
UTKyPCfj sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
$M,<=.oT sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
I<D7Jj s3 = ifft(fftshift(sc3));
03v+eT s2 = ifft(fftshift(sc2)); % Return to physical space
m\XsU?SuX s1 = ifft(fftshift(sc1));
6`Tx meIP end
cYK:Y!|`F p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
L<@*6QH p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
xw}yl4WT{ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
0a{hCx|$J P1=[P1 p1/p10];
iSezrN P2=[P2 p2/p10];
2}pZyS P3=[P3 p3/p10];
U'ctO% P=[P p*p];
vRC >=y*= end
_MTZuhY figure(1)
B._YT plot(P,P1, P,P2, P,P3);
[(x*!,= UzaAL9k 转自:
http://blog.163.com/opto_wang/