计算脉冲在非线性耦合器中演化的Matlab 程序 p.(8e kh 5F#Q1gP- % This Matlab script file solves the coupled nonlinear Schrodinger equations of
4/6?wX % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
:bJT2o[ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
A 9I5 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
05]y*I $)UMRG %fid=fopen('e21.dat','w');
>LvQ&fAo N = 128; % Number of Fourier modes (Time domain sampling points)
M4MO)MYJ M1 =3000; % Total number of space steps
L>4!@L5) J =100; % Steps between output of space
tOQ2947zk T =10; % length of time windows:T*T0
\UBTNY, T0=0.1; % input pulse width
oD0WHp MN1=0; % initial value for the space output location
{s ]yP_ dt = T/N; % time step
o>(I_3J[p n = [-N/2:1:N/2-1]'; % Index
l*~ ".q;S t = n.*dt;
P0R8
f u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
,ALEfepo u20=u10.*0.0; % input to waveguide 2
@|3PV u1=u10; u2=u20;
x4b.^5"`: U1 = u1;
qnFi./ U2 = u2; % Compute initial condition; save it in U
Wq5 Nc ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
\^l273 w=2*pi*n./T;
8GGC)2 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
zk\YW'x|r L=4; % length of evoluation to compare with S. Trillo's paper
BKd03s= dz=L/M1; % space step, make sure nonlinear<0.05
:Nry | for m1 = 1:1:M1 % Start space evolution
PubO|Mf u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
J |$(O$hYy u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
oP[R?zN ca1 = fftshift(fft(u1)); % Take Fourier transform
[(*ObvEF ca2 = fftshift(fft(u2));
I.C,y\ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
]@Gw$ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
75>)1H)Xm u2 = ifft(fftshift(c2)); % Return to physical space
-0pAj}_2} u1 = ifft(fftshift(c1));
UEm~5,>$0 if rem(m1,J) == 0 % Save output every J steps.
e}F1ZJz U1 = [U1 u1]; % put solutions in U array
,CGq_>Z U2=[U2 u2];
VLLE0W _] MN1=[MN1 m1];
OI@;ffHSW z1=dz*MN1'; % output location
G@Jl4iHug" end
@;^7kt end
C r A7lu' hg=abs(U1').*abs(U1'); % for data write to excel
Ub>Pl,~' ha=[z1 hg]; % for data write to excel
zO@7V>2 t1=[0 t'];
&]d-R hh=[t1' ha']; % for data write to excel file
**RW
9FU %dlmwrite('aa',hh,'\t'); % save data in the excel format
F.N4Q'2Z figure(1)
oRp;9 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
;+86q"&n figure(2)
#b^x! lR waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
rM|] }M=_V 5eP0W# 非线性超快脉冲耦合的数值方法的Matlab程序 P#gY-k&Nr 0j'H5>m" 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
8w 2$H 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
ZUkrJ' XIS.0]~ <@+>A$~0 Cp`>dtCd % This Matlab script file solves the nonlinear Schrodinger equations
/o/0 9K % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
;!k{{Xndd % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
+Jf45[D % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
-GqMis}c E0SP C=1;
|FR'?y1 M1=120, % integer for amplitude
7Ud M3=5000; % integer for length of coupler
1cA4-,YO> N = 512; % Number of Fourier modes (Time domain sampling points)
@,=E[c
8 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
KS9eV T =40; % length of time:T*T0.
Z'u:Em dt = T/N; % time step
{}Q A#:V n = [-N/2:1:N/2-1]'; % Index
}mhD2 ' E t = n.*dt;
)`4g, W ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
"Z\^dR w=2*pi*n./T;
RD$"ft]Vc g1=-i*ww./2;
bOY<C%;C
g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
>k\lE( g3=-i*ww./2;
D09/(%4j P1=0;
v ?9 P2=0;
_&]B P3=1;
ME9jN{ le P=0;
n)~9 for m1=1:M1
2V-zmyJs5 p=0.032*m1; %input amplitude
t7(#Cuv- s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
uyp|Xh, s1=s10;
Em(&cra s20=0.*s10; %input in waveguide 2
I_h8)W s30=0.*s10; %input in waveguide 3
Lwy9QZL s2=s20;
1=9M@r~ ^ s3=s30;
V~9s+> p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
C2Pw;iK_t %energy in waveguide 1
_Di";fe? p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
2$Fy?08q %energy in waveguide 2
m\XgvpvrP p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
Z^fkv %energy in waveguide 3
+H'{!:e5 for m3 = 1:1:M3 % Start space evolution
O6P{+xj$ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
`Dn"<-9: s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
&idPO{G s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
e*zt;SR sca1 = fftshift(fft(s1)); % Take Fourier transform
,[Bv\4Ah sca2 = fftshift(fft(s2));
I Ceb2R sca3 = fftshift(fft(s3));
V>Zw" #Q sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
T&/ ]| 4 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
5y1:oiE/ sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
"< c,I=A s3 = ifft(fftshift(sc3));
|KC!6<}T~9 s2 = ifft(fftshift(sc2)); % Return to physical space
G(;C~kHX s1 = ifft(fftshift(sc1));
=Eh~ wm
end
GJ3@".+6 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
1&wI*4 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
p ow.@ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
$O)fHD' P1=[P1 p1/p10];
0fpxr` P2=[P2 p2/p10];
I'qIc? P3=[P3 p3/p10];
2<
"- P=[P p*p];
Q`ALyp,9b end
)6k([u%;B figure(1)
+im>| plot(P,P1, P,P2, P,P3);
?FRuuAS {cW%i: 转自:
http://blog.163.com/opto_wang/