计算脉冲在非线性耦合器中演化的Matlab 程序
66s h r 0ud>oh4WPR % This Matlab script file solves the coupled nonlinear Schrodinger equations of
?e+$?8l[3 % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
h|t\rV^ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
/N82h`\n % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
AT]Ty iKN800^u %fid=fopen('e21.dat','w');
BY^5z<^. N = 128; % Number of Fourier modes (Time domain sampling points)
>n^[-SWJCT M1 =3000; % Total number of space steps
$y&1.caMa J =100; % Steps between output of space
-$m?ShDd T =10; % length of time windows:T*T0
hz_F^gF T0=0.1; % input pulse width
N:Zf4 MN1=0; % initial value for the space output location
5uufpvah dt = T/N; % time step
esVZ2_eL n = [-N/2:1:N/2-1]'; % Index
d8Kxtg
Y t = n.*dt;
/*yPy? u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
@:"GgkyDl# u20=u10.*0.0; % input to waveguide 2
[e+$jsPl u1=u10; u2=u20;
:Y ;\1J<b1 U1 = u1;
mjz<,s`D U2 = u2; % Compute initial condition; save it in U
r 2L=gI ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
GBsM?A: w=2*pi*n./T;
;BMm47< g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
/i)1BaF L=4; % length of evoluation to compare with S. Trillo's paper
YKsc[~
h dz=L/M1; % space step, make sure nonlinear<0.05
^U4|TR6mub for m1 = 1:1:M1 % Start space evolution
_z3YB u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
_{5t/^w&! u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
rv?d3QqIC ca1 = fftshift(fft(u1)); % Take Fourier transform
Ho:X.Z9A^ ca2 = fftshift(fft(u2));
Yi+~}YP.E( c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
!p~K;p, c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
E[RLBO[*n u2 = ifft(fftshift(c2)); % Return to physical space
Ew kZzVuX u1 = ifft(fftshift(c1));
gwepaW if rem(m1,J) == 0 % Save output every J steps.
d4#Ra% U1 = [U1 u1]; % put solutions in U array
z.7'yJIP# U2=[U2 u2];
`i)&nW)R MN1=[MN1 m1];
.5~W3v
< z1=dz*MN1'; % output location
[o,S.!W8 end
WrGz` end
*t+E8)qL hg=abs(U1').*abs(U1'); % for data write to excel
\!tS|h ha=[z1 hg]; % for data write to excel
HKdR?HM1 t1=[0 t'];
_~ipO1* hh=[t1' ha']; % for data write to excel file
%g>{m2o %dlmwrite('aa',hh,'\t'); % save data in the excel format
nBVknyMFNF figure(1)
An%V>a-[ waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
@Sl!p) figure(2)
=abth6#) waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
r2*'5jk_ 3[jk}2R';p 非线性超快脉冲耦合的数值方法的Matlab程序 :tA|g O<x53MN^ 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
*ppb4R;CW 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
cCj pQ XTZI! *0^t;A+ '\2lWR]ndd % This Matlab script file solves the nonlinear Schrodinger equations
2.K"+% % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
D=fB&7%@ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
:-f"+v % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
-^(NIl' N3};M~\ C=1;
ibOXh U M1=120, % integer for amplitude
Lu~e^Ul
M3=5000; % integer for length of coupler
"Jp6EL% N = 512; % Number of Fourier modes (Time domain sampling points)
Hf/2KYZ dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
[\ JZpF T =40; % length of time:T*T0.
YJ5;a\QxN dt = T/N; % time step
o^Y'e+T" n = [-N/2:1:N/2-1]'; % Index
T_}\ t = n.*dt;
L?^C\g6u] ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Q#bFW?>y, w=2*pi*n./T;
Zv=p0xH g1=-i*ww./2;
tc{23Rf% g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
g"3h#SMb g3=-i*ww./2;
r[$Qtj Q P1=0;
"gCSbMq(Vq P2=0;
omV.Qb'NS P3=1;
Oz9k.[j( P=0;
F|V co]"S1 for m1=1:M1
YV 9*B p=0.032*m1; %input amplitude
EMH?z2iGd s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
iR#jBqXD s1=s10;
zYOPE 6E s20=0.*s10; %input in waveguide 2
<MN+2^ed& s30=0.*s10; %input in waveguide 3
utwh"E&W s2=s20;
$Mx.8FC + s3=s30;
H[x 9 7r p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
?<w +{ %energy in waveguide 1
U
gB p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
{\t:{.F
A %energy in waveguide 2
7$GP#V1r/ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
xuelo0h, %energy in waveguide 3
a~ REFy for m3 = 1:1:M3 % Start space evolution
,`|KNw5 s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
Yb =8\<; s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
,)L.^< s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
vfhip"1 sca1 = fftshift(fft(s1)); % Take Fourier transform
RpLm'~N' sca2 = fftshift(fft(s2));
yB.6U56 sca3 = fftshift(fft(s3));
S0=BfkHi. sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
t9pPG {1 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
`T9<}&=! sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
^:-%tpB#! s3 = ifft(fftshift(sc3));
,75,~ s2 = ifft(fftshift(sc2)); % Return to physical space
bM^'q s1 = ifft(fftshift(sc1));
8}\"LXRbo end
V43JY_: p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
"E2
g7n& p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
m Xw1%w[* p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
&U
'Ds! P1=[P1 p1/p10];
N&>D/Z;" P2=[P2 p2/p10];
Vxgc|E^J P3=[P3 p3/p10];
TU. h P=[P p*p];
Eun%uah6c end
SwP h-6 figure(1)
9DtSYd/ plot(P,P1, P,P2, P,P3);
h V8A<VT R1q04Zj{2 转自:
http://blog.163.com/opto_wang/