计算脉冲在非线性耦合器中演化的Matlab 程序 g[M]i6h2 tyB)HF % This Matlab script file solves the coupled nonlinear Schrodinger equations of
?4,@,
ae& % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
dgXg kB' % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
2xDQ:=ec % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
rsWQHHkO 7R: WX: %fid=fopen('e21.dat','w');
Yt{ji N = 128; % Number of Fourier modes (Time domain sampling points)
h6g:(3t6m M1 =3000; % Total number of space steps
6#E7!-u(- J =100; % Steps between output of space
;d4y{ T =10; % length of time windows:T*T0
d<#p %$A4 T0=0.1; % input pulse width
D3y>iQd MN1=0; % initial value for the space output location
TFO74^ dt = T/N; % time step
3Y`>6A= n = [-N/2:1:N/2-1]'; % Index
Q\|18wkW t = n.*dt;
SZ/(\kQ6 u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
pw=F' Y@N
u20=u10.*0.0; % input to waveguide 2
#pX8{Tf[ u1=u10; u2=u20;
glx2I_y U1 = u1;
!
tGiTzzp U2 = u2; % Compute initial condition; save it in U
!3h{lEB ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
(-\]A| w=2*pi*n./T;
8'KMxR g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
YZ<
NP L=4; % length of evoluation to compare with S. Trillo's paper
'j }g dz=L/M1; % space step, make sure nonlinear<0.05
G]-%AO{K for m1 = 1:1:M1 % Start space evolution
4`s)ue u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
:W~f;k u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
9\AS@SH{^T ca1 = fftshift(fft(u1)); % Take Fourier transform
(xL
:; ca2 = fftshift(fft(u2));
iT.|vr1HG c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
\n_3Bwd~ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
jB!W2~Z u2 = ifft(fftshift(c2)); % Return to physical space
EL7T'zJ$ u1 = ifft(fftshift(c1));
d@ZoV if rem(m1,J) == 0 % Save output every J steps.
HyEa_9
U1 = [U1 u1]; % put solutions in U array
3p_b8K_bG U2=[U2 u2];
^!}F% MN1=[MN1 m1];
_s*!
t z1=dz*MN1'; % output location
i:d`{kJ|[ end
kon5+g9q end
.b,~f hg=abs(U1').*abs(U1'); % for data write to excel
N<liS3> ha=[z1 hg]; % for data write to excel
'00J~j~ t1=[0 t'];
e\r7BW\Y hh=[t1' ha']; % for data write to excel file
&dRjqn^&X %dlmwrite('aa',hh,'\t'); % save data in the excel format
^wJEfac figure(1)
-2 xE#r waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
y\#o2PVmY figure(2)
s`c?: waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
x%6hM|U c4 5?St 非线性超快脉冲耦合的数值方法的Matlab程序 H* /&A9(" 4gOgWBv 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
GJ `UO 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
)[jy[[K( IY)5.E
_ JT)k ~C|,b" % This Matlab script file solves the nonlinear Schrodinger equations
s@~/x5jwCs % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
/cfHYvnz % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
TEWAZVE* % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
Vv4H:BK$ \Yq0 zVol C=1;
c&*l" M1=120, % integer for amplitude
kOipH |.x M3=5000; % integer for length of coupler
%ek"!A N = 512; % Number of Fourier modes (Time domain sampling points)
TsD;Kl1 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
zQc"bcif5( T =40; % length of time:T*T0.
TatMf;?h& dt = T/N; % time step
^f|<R8 ` n = [-N/2:1:N/2-1]'; % Index
B{aU;{1 t = n.*dt;
yp+F<5o ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
(6R4 \8z2 w=2*pi*n./T;
([KN*OF g1=-i*ww./2;
-:SIS`0s g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
TQJF+;% g3=-i*ww./2;
hnzNP\$U] P1=0;
$XGtS$ P2=0;
3dG4pl~ P3=1;
jdM=SBy7q P=0;
Dm%%e o for m1=1:M1
GNU;jSh5 p=0.032*m1; %input amplitude
m7m
\`; s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
E[?kGR[ s1=s10;
|I^y0Q:K s20=0.*s10; %input in waveguide 2
a$m_D!b~_ s30=0.*s10; %input in waveguide 3
_-%d9@x s2=s20;
%F J#uQXZ s3=s30;
Y<Q\d[3^F p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
Ae49n4J %energy in waveguide 1
{/ &B!zvl p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
:JlDi>B %energy in waveguide 2
UX_I6_& p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
uyT/Xzo3 %energy in waveguide 3
0H[L S for m3 = 1:1:M3 % Start space evolution
U$'y_}V s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
"}zda*z8 s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
z-@-O s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
?N>pZR sca1 = fftshift(fft(s1)); % Take Fourier transform
m r4b sca2 = fftshift(fft(s2));
~/|zlu*jpc sca3 = fftshift(fft(s3));
r1Z<:}ZwK sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
[H,u)8) sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
=i6:puf sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
O<GF> s3 = ifft(fftshift(sc3));
wiE]z s2 = ifft(fftshift(sc2)); % Return to physical space
zZ,Yfd|W s1 = ifft(fftshift(sc1));
io4aYB\ end
p)/
p!d[T/ p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
)N7n,_#T> p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
<Tx C!{< p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
A]?^ H< P1=[P1 p1/p10];
2OalAY6RS P2=[P2 p2/p10];
:3?|VE F P3=[P3 p3/p10];
p4wr`"Zz P=[P p*p];
/2@["*^$ end
]MAT2$"le figure(1)
C4NRDwU|. plot(P,P1, P,P2, P,P3);
CgnXr/!L Ro r2qDF 转自:
http://blog.163.com/opto_wang/