计算脉冲在非线性耦合器中演化的Matlab 程序 !ZN"(0#qz aSSw>*?Q % This Matlab script file solves the coupled nonlinear Schrodinger equations of
lI[O!VuKc % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
$! UEpQ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
`~qVo4V6Z % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
rAu@`H? Hn?v/3 %fid=fopen('e21.dat','w');
niCq`! N = 128; % Number of Fourier modes (Time domain sampling points)
G^\.xk] M1 =3000; % Total number of space steps
oJ0
#U J =100; % Steps between output of space
.YIb ny1 T =10; % length of time windows:T*T0
!wjD6NK T0=0.1; % input pulse width
vqwSOh|P9 MN1=0; % initial value for the space output location
P76QHBbl dt = T/N; % time step
%e=UYBj" n = [-N/2:1:N/2-1]'; % Index
9q<?xO t = n.*dt;
iM{aRFL u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
@IBU{{ u20=u10.*0.0; % input to waveguide 2
$Mqw)X&q u1=u10; u2=u20;
!ma'*X U1 = u1;
Q"`J-#L U2 = u2; % Compute initial condition; save it in U
F[oTc^dr ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
#_fL[j& w=2*pi*n./T;
[V,f@}m
F g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
sHMZ'9b L=4; % length of evoluation to compare with S. Trillo's paper
d?OsVT;U dz=L/M1; % space step, make sure nonlinear<0.05
H:L<gv(rG for m1 = 1:1:M1 % Start space evolution
2-u9% u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
d-$/C| J u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
'Y-Y
By : ca1 = fftshift(fft(u1)); % Take Fourier transform
Gn?<~8a ca2 = fftshift(fft(u2));
E#+|.0*!s c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
~@ hiLW c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
RD'i(szi? u2 = ifft(fftshift(c2)); % Return to physical space
oyo
V1jO u1 = ifft(fftshift(c1));
#j${R={ if rem(m1,J) == 0 % Save output every J steps.
Ha20g/UN. U1 = [U1 u1]; % put solutions in U array
^y&sKO U2=[U2 u2];
Ceak8#|4 MN1=[MN1 m1];
=xsTVT;sj z1=dz*MN1'; % output location
1mz72K end
mA']*)L1 end
vBjrI*0 hg=abs(U1').*abs(U1'); % for data write to excel
X/`M'8v.% ha=[z1 hg]; % for data write to excel
xy1R_*.F^T t1=[0 t'];
[NIaWI,> hh=[t1' ha']; % for data write to excel file
7
a_99?J %dlmwrite('aa',hh,'\t'); % save data in the excel format
i@#fyU)[G figure(1)
XVkCYh4, waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
);5H<[ figure(2)
la[>C:8IG waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
L)j<;{J/Q0 Mi&jl_& 非线性超快脉冲耦合的数值方法的Matlab程序 f8836<c )Fh5*UC 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
_V-pr#lP1 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
I Z{DR VRa>bS l|&DI]gw K';x2ffj % This Matlab script file solves the nonlinear Schrodinger equations
$fl+l5?9 % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
#Vi:-zyY % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
u~q6?*5 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
V`XtGTx 2io~pk> C=1;
_iZ_.3Ip M1=120, % integer for amplitude
&x<y4ORH| M3=5000; % integer for length of coupler
Ub-q0[6 N = 512; % Number of Fourier modes (Time domain sampling points)
&)v}oHy,m dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
&a
bR}J[ T =40; % length of time:T*T0.
8[xl3= dt = T/N; % time step
sW]fPa(cn, n = [-N/2:1:N/2-1]'; % Index
v)J(@>CZ[ t = n.*dt;
TQg~I/ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Y('?Z] w=2*pi*n./T;
L:E?tR}H g1=-i*ww./2;
|Y&&g=7 g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
.-HwT3 g3=-i*ww./2;
UCVdR<<Z P1=0;
s'Wu \r' P2=0;
%d"d<pvx P3=1;
u</LgOP`- P=0;
_[t:Vme}v for m1=1:M1
M=Cl| p=0.032*m1; %input amplitude
*'jI>^o s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
cHjnuL0fsy s1=s10;
G=l-S\0@ s20=0.*s10; %input in waveguide 2
pDV8B/{ s30=0.*s10; %input in waveguide 3
|g,99YIv> s2=s20;
].r~?9'/ s3=s30;
N(=Z4Nk5 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
hX9vtV5L %energy in waveguide 1
nBJ'ak p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
@\s*f7 %energy in waveguide 2
~duF2m 72 p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
GW;O35
m %energy in waveguide 3
#$0*Gd-N for m3 = 1:1:M3 % Start space evolution
h"$ )[k~ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
qe<aJn s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
j;SK{Oq s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
VBv|7S sca1 = fftshift(fft(s1)); % Take Fourier transform
*9O@DF&*6 sca2 = fftshift(fft(s2));
h 1REL^!c sca3 = fftshift(fft(s3));
H=v=)cUe[ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
OD;F{Hc sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
g`\5!R1 sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Bx9v2x. s3 = ifft(fftshift(sc3));
]wm<$+@ s2 = ifft(fftshift(sc2)); % Return to physical space
!@3"vd{^ s1 = ifft(fftshift(sc1));
5VZZk%oy end
Q"F" 13 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
^ZPynduR p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
5/YGu=, p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
{u)>W@Lr P1=[P1 p1/p10];
yB2}[1 P2=[P2 p2/p10];
BHN EP |= P3=[P3 p3/p10];
@|'$k{i P=[P p*p];
SQs+4YJ end
E)F#Z=) figure(1)
<\`qRz0/ plot(P,P1, P,P2, P,P3);
Aa4 DJ CWY-}M 转自:
http://blog.163.com/opto_wang/