计算脉冲在非线性耦合器中演化的Matlab 程序 8B+^vF
{&qsh9ob % This Matlab script file solves the coupled nonlinear Schrodinger equations of
>,vW % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
-mo
'
$1 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
rB|:r\Z(jG % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
~cj:AIF MJpTr5Vs %fid=fopen('e21.dat','w');
ibUPd."W N = 128; % Number of Fourier modes (Time domain sampling points)
]!o,S{a& M1 =3000; % Total number of space steps
UI|@5:J J =100; % Steps between output of space
p: T =10; % length of time windows:T*T0
grAL4 T0=0.1; % input pulse width
i j;'4GzQL MN1=0; % initial value for the space output location
9sU,.T dt = T/N; % time step
jAHn`Bxz n = [-N/2:1:N/2-1]'; % Index
sc>)X{eb t = n.*dt;
n8aiGnd=v
u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
bO3KaOC8N u20=u10.*0.0; % input to waveguide 2
-vAG5x/ , u1=u10; u2=u20;
}mZ*f y0t U1 = u1;
jt?%03iuk U2 = u2; % Compute initial condition; save it in U
,?~,"IQyi[ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
|sM#g1D@ w=2*pi*n./T;
,
)3+hnFY g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
{j*+:Gj0V L=4; % length of evoluation to compare with S. Trillo's paper
*.Hnt\4| dz=L/M1; % space step, make sure nonlinear<0.05
7B"aFnK;[J for m1 = 1:1:M1 % Start space evolution
R!xc$`N u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
g~u!,Zc u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
Ap18qp ca1 = fftshift(fft(u1)); % Take Fourier transform
HV(*6b@ ca2 = fftshift(fft(u2));
i.,B
0s]Z c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
q`zR 6 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
iPNsEQ0We u2 = ifft(fftshift(c2)); % Return to physical space
vu >@_hv u1 = ifft(fftshift(c1));
m]pvJJ@ if rem(m1,J) == 0 % Save output every J steps.
o!0a8i U1 = [U1 u1]; % put solutions in U array
czi!q1<vg U2=[U2 u2];
OZ9j3Q;a$ MN1=[MN1 m1];
')~HOCBSE z1=dz*MN1'; % output location
hmk5
1 end
f\w4F'^tj end
/^ 7
9|$E hg=abs(U1').*abs(U1'); % for data write to excel
YP97D n ha=[z1 hg]; % for data write to excel
oC>~r1.j t1=[0 t'];
h0}-1kVT^ hh=[t1' ha']; % for data write to excel file
7@]hu^)rry %dlmwrite('aa',hh,'\t'); % save data in the excel format
wj~8KHan figure(1)
x9s`H) waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
R_DQtLI figure(2)
C,.{y`s' waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
1h{_v!X FQ^uX]<3j 非线性超快脉冲耦合的数值方法的Matlab程序 `?m(Z6' :7*\|2zA 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
H[U*'
2TJ 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
ePdzQsnVe {
)K(}~VD EatDT*! \/zS@fz % This Matlab script file solves the nonlinear Schrodinger equations
0C_Qp% Z % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
IA^DfdZY % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
1-<Xi-=^{t % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
Rvo<ISp
mAKi%) C=1;
f}3bYF M1=120, % integer for amplitude
!{\c`Z<# M3=5000; % integer for length of coupler
U {v_0\ES N = 512; % Number of Fourier modes (Time domain sampling points)
"WL dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
vS<e/e+ T =40; % length of time:T*T0.
%VZ\4+8S dt = T/N; % time step
L.[2l Q n = [-N/2:1:N/2-1]'; % Index
' 'N@ <| t = n.*dt;
@^@-A\7[KO ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
E ..[F<5 w=2*pi*n./T;
c8MNo'h g1=-i*ww./2;
\GPc_m:qL g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
Atw^C+"vW& g3=-i*ww./2;
=r8(9:F! P1=0;
54&2SU$kx P2=0;
Joj8' P3=1;
g?wogCs5 P=0;
@"0qS:s]X for m1=1:M1
,"v% p=0.032*m1; %input amplitude
=?hlgQ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
!h\3cs`QU s1=s10;
eS|p3jk; s20=0.*s10; %input in waveguide 2
u@Lu.t!], s30=0.*s10; %input in waveguide 3
hJ :+*46 s2=s20;
52,a5TVG s3=s30;
.>e~J+oL p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
0fNBy^(K %energy in waveguide 1
g(Nf.hko p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
8*ysuL# %energy in waveguide 2
va.wdk g p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
@ ri.r1 %energy in waveguide 3
w,7
GC5j\ for m3 = 1:1:M3 % Start space evolution
+tF,E^ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
h2]Od(^[ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
zb (u?U s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
}sZ]SE sca1 = fftshift(fft(s1)); % Take Fourier transform
}PJ:9<G
y sca2 = fftshift(fft(s2));
:|g{gi sca3 = fftshift(fft(s3));
as8<c4:v sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
mB\|<2 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
E {MSi" sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
<LE>WfmC s3 = ifft(fftshift(sc3));
QX4I+x~oo\ s2 = ifft(fftshift(sc2)); % Return to physical space
JC-L80- s1 = ifft(fftshift(sc1));
wP
i=+ end
?/~1z*XUW p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
.:0nK
bW p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
ZO~N|s6B^ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
]_h"2| P1=[P1 p1/p10];
E^!%m8-- P2=[P2 p2/p10];
1<F/boF~ P3=[P3 p3/p10];
]iPdAwc.1 P=[P p*p];
&'R]oeag end
;Baf&xK figure(1)
$f%_ 4 = plot(P,P1, P,P2, P,P3);
nC w1H kW -mXEbsm 转自:
http://blog.163.com/opto_wang/