计算脉冲在非线性耦合器中演化的Matlab 程序 AgJPtzs
j'LO'&sQ( % This Matlab script file solves the coupled nonlinear Schrodinger equations of
zRA,Yi4;+ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
^4
~ V/ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
cx+%lco! % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
! ?GW<Rh g-2(W %fid=fopen('e21.dat','w');
{xQ(xy N = 128; % Number of Fourier modes (Time domain sampling points)
. L]!* M1 =3000; % Total number of space steps
kIH)>euZ J =100; % Steps between output of space
3Ebkq[/*% T =10; % length of time windows:T*T0
u[LsH T0=0.1; % input pulse width
Wo/LrCg MN1=0; % initial value for the space output location
cG4$)q;q dt = T/N; % time step
90
pt'Jg n = [-N/2:1:N/2-1]'; % Index
g:[yA{Eh t = n.*dt;
d6g^>}-!t u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
6F?U:N#< u20=u10.*0.0; % input to waveguide 2
h~.z[ u1=u10; u2=u20;
MY z\ R
\ U1 = u1;
tQ(gB_ U2 = u2; % Compute initial condition; save it in U
Kfs|KIQ>= ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
F'JceU w=2*pi*n./T;
V?-OI> g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
K7]+. f L=4; % length of evoluation to compare with S. Trillo's paper
3/RNStd<L! dz=L/M1; % space step, make sure nonlinear<0.05
1|H(q for m1 = 1:1:M1 % Start space evolution
Xs$UpQo
u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
'>dx~v % u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
gP>`DPgb^ ca1 = fftshift(fft(u1)); % Take Fourier transform
? VHOh9|AT ca2 = fftshift(fft(u2));
ivP#qM1*; c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
oz/Nx{bg c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
DBZ^n9 u2 = ifft(fftshift(c2)); % Return to physical space
z-;{pPZ u1 = ifft(fftshift(c1));
4
JDk() if rem(m1,J) == 0 % Save output every J steps.
,I8[tiR"b U1 = [U1 u1]; % put solutions in U array
"']|o ~B U2=[U2 u2];
f]]UNS$AYQ MN1=[MN1 m1];
Huho|6ohH z1=dz*MN1'; % output location
$g]'$PB end
g+/m:(7[s| end
6%fF6 hg=abs(U1').*abs(U1'); % for data write to excel
FKk.BA957h ha=[z1 hg]; % for data write to excel
^#&:-4/ t1=[0 t'];
}^n346^ hh=[t1' ha']; % for data write to excel file
x10u?@ %dlmwrite('aa',hh,'\t'); % save data in the excel format
:B5M#D!dO figure(1)
j#YPo waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
?bH!|aW(H figure(2)
<~-cp61z; waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
)XoIb[s" VL| q`n 非线性超快脉冲耦合的数值方法的Matlab程序 y-^m .u$o^; z! 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
eaCh;IpIf 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
^Qa!{9o[ xjg(}w !t!\b9= 31k2X81;a % This Matlab script file solves the nonlinear Schrodinger equations
zpBkP-%}E % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
?S~j2 J] % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
O#B2XoZa+ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
.GOF0puiM Zsx\GeE%:
C=1;
vZ/Bzy@| M1=120, % integer for amplitude
[7@9wa1v! M3=5000; % integer for length of coupler
NX9K%J N = 512; % Number of Fourier modes (Time domain sampling points)
J0O wzO dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
s>1Wjz2M T =40; % length of time:T*T0.
?'+kZ| dt = T/N; % time step
>Eqr/~Q n = [-N/2:1:N/2-1]'; % Index
?)?}^ t = n.*dt;
xmBGZ4f% ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
qttJ*zu w=2*pi*n./T;
X>4qL'b:z g1=-i*ww./2;
fsz:A"0H g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
\S[I:fw#& g3=-i*ww./2;
b,):&M~p P1=0;
b_rHt
s P2=0;
?Oyps7hXx P3=1;
$hq'9}ASOL P=0;
b[os0D95 for m1=1:M1
rs+
["h p=0.032*m1; %input amplitude
~"}o^#@DwJ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
xmNs<mz s1=s10;
o#=@!m s20=0.*s10; %input in waveguide 2
;X)b= s30=0.*s10; %input in waveguide 3
HGl.dO7NU s2=s20;
"z9 p(|oZ s3=s30;
br4?_, p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
/+ Q3JS( %energy in waveguide 1
} za"rU p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
9U]j@*QN %energy in waveguide 2
W}aCU~ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
K0C3s %energy in waveguide 3
s>c0K@ADO for m3 = 1:1:M3 % Start space evolution
"#G`F s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
?`T-A\A= s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
E)z=85;_p s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
\k>1q/T0V sca1 = fftshift(fft(s1)); % Take Fourier transform
`|WEzW~ sca2 = fftshift(fft(s2));
Q7 @oAeNd sca3 = fftshift(fft(s3));
U2vM|7]VP sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
cT(=pMt8> sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
ne9-
c>> sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
%=`wN^3t2 s3 = ifft(fftshift(sc3));
5Vj O:> s2 = ifft(fftshift(sc2)); % Return to physical space
45.Vr[FS. s1 = ifft(fftshift(sc1));
+sFpIiJg end
^\C Fke= p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
r<c&;* p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
.)Zs:50l p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
EaKbG> P1=[P1 p1/p10];
ae0t*;~ P2=[P2 p2/p10];
o8h`9_ P3=[P3 p3/p10];
Kn,td:( P=[P p*p];
IaT\ymm` end
4~i?xo=;v figure(1)
\qz! v plot(P,P1, P,P2, P,P3);
Yaj}_M- LDh,!5G-M 转自:
http://blog.163.com/opto_wang/