计算脉冲在非线性耦合器中演化的Matlab 程序 lAjP'( W/03L, 1 % This Matlab script file solves the coupled nonlinear Schrodinger equations of
TZ#(G % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
hM}rf6B % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
8!8 yA % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
nnr
g^F mZGAl1`8 %fid=fopen('e21.dat','w');
UcaLi& N = 128; % Number of Fourier modes (Time domain sampling points)
oU/CXz?H M1 =3000; % Total number of space steps
]2O52r J =100; % Steps between output of space
A4;EtW+F T =10; % length of time windows:T*T0
`PML4P[ T0=0.1; % input pulse width
tA#7Xr+ MN1=0; % initial value for the space output location
:[icd2JCw] dt = T/N; % time step
+/!kL0[v n = [-N/2:1:N/2-1]'; % Index
j1/.3\ t = n.*dt;
2.''Nt6| u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
Bw5zh1ALC; u20=u10.*0.0; % input to waveguide 2
qg521o$* u1=u10; u2=u20;
dnRS$$9# U1 = u1;
z1wJ-l U2 = u2; % Compute initial condition; save it in U
B[XVTok ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
0
#*M'C# w=2*pi*n./T;
<'s_3AC g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
TL^af- L=4; % length of evoluation to compare with S. Trillo's paper
_i@{:v dz=L/M1; % space step, make sure nonlinear<0.05
6T3uv,2 for m1 = 1:1:M1 % Start space evolution
,'=Tf=wq u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
ly,3,ok u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
: ?K}.Kb ca1 = fftshift(fft(u1)); % Take Fourier transform
4sU*UePr ca2 = fftshift(fft(u2));
[!^Q_O c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
}^T7S2_Qy c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
w8MQA!=l u2 = ifft(fftshift(c2)); % Return to physical space
Xx.4K>j+j u1 = ifft(fftshift(c1));
W lDcKY if rem(m1,J) == 0 % Save output every J steps.
8GRp1'\Hi U1 = [U1 u1]; % put solutions in U array
&yu3nA:7D U2=[U2 u2];
$U3|.4 MN1=[MN1 m1];
7Jm&z/ z1=dz*MN1'; % output location
%}< e;t-O end
PwF
1Pr`r end
NO(^P+s hg=abs(U1').*abs(U1'); % for data write to excel
T6T3:DG_B ha=[z1 hg]; % for data write to excel
R^_7B( t1=[0 t'];
].E89 _|O hh=[t1' ha']; % for data write to excel file
5U%J,W %dlmwrite('aa',hh,'\t'); % save data in the excel format
e_eNtVq figure(1)
I``S%`h waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
&ZkY9XO figure(2)
I+qg'mo waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
YIP /N U<T.o0s= 非线性超快脉冲耦合的数值方法的Matlab程序 M8 4{u!>[ t r)[6o# 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
5AX
AIP n) 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
dv?ael^ _(#HQd,i {zTo[i "c0I2wq % This Matlab script file solves the nonlinear Schrodinger equations
~&zrDj~FI % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
B=EI&+F+ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
L5+X& % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
U8f!yXF' [#+yL C=1;
iD;pXE{2s% M1=120, % integer for amplitude
].=~C"s,a M3=5000; % integer for length of coupler
}6Ut7J]a| N = 512; % Number of Fourier modes (Time domain sampling points)
=H<I` J' dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
tl:V8sYTP T =40; % length of time:T*T0.
*wH.]$ dt = T/N; % time step
(d>
M/x?W n = [-N/2:1:N/2-1]'; % Index
74[wZDW|( t = n.*dt;
H@+1I?l ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
kIC$ai6. w=2*pi*n./T;
7P+qPcRaP g1=-i*ww./2;
b"Z$?5 g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
,M4G_U[ g3=-i*ww./2;
>
whcZ.8 P1=0;
UR3qzPm!0e P2=0;
r JvtE}x1 P3=1;
3MmpB9l#H P=0;
I_/E0qSJI for m1=1:M1
d8)ps, p=0.032*m1; %input amplitude
)bd)noZi s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
3/aK#TjK s1=s10;
mJ_5Vt= s20=0.*s10; %input in waveguide 2
QLs9W&PG s30=0.*s10; %input in waveguide 3
bvay7 s2=s20;
cEdf&*_-'I s3=s30;
Po)!vL"
p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
mp!S<m %energy in waveguide 1
%>z4hH, p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
|41NRGgY %energy in waveguide 2
C`J> Gm p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
4# L}& %energy in waveguide 3
D]?eRO9' for m3 = 1:1:M3 % Start space evolution
Gu#Vc.e s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
xJ$/#UdP s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
tj'xjX s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
f:\)oIW9Kk sca1 = fftshift(fft(s1)); % Take Fourier transform
Cr7T=&L sca2 = fftshift(fft(s2));
R&-Vm3mc3 sca3 = fftshift(fft(s3));
|Ix{JP"Lk sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
Kl Kk?6> sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
zu,F 0;De sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
s|`Z V^R s3 = ifft(fftshift(sc3));
iL$~d@AEn s2 = ifft(fftshift(sc2)); % Return to physical space
d3[O!4<T s1 = ifft(fftshift(sc1));
mTj?W$+r end
Q)IL]S p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
'^{:HR#i p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
9hTzi+'S p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
t'e\Z2 P1=[P1 p1/p10];
)bgaqca_{ P2=[P2 p2/p10];
8|"26UwD/ P3=[P3 p3/p10];
8v ZY+Q > P=[P p*p];
baO'FyCs9& end
rjo1 figure(1)
d:L|BkQ7* plot(P,P1, P,P2, P,P3);
LmZ"_ joRrsxFU 转自:
http://blog.163.com/opto_wang/