计算脉冲在非线性耦合器中演化的Matlab 程序 rPt KNR7Igw?} % This Matlab script file solves the coupled nonlinear Schrodinger equations of
v#e*RI2} % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
@FF80U4' % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
<C451+95 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
8,(--A M{SJ8+G %fid=fopen('e21.dat','w');
3#y`6e=5 N = 128; % Number of Fourier modes (Time domain sampling points)
E<7$!P=z` M1 =3000; % Total number of space steps
=`UFg>- J =100; % Steps between output of space
*X^C+F T =10; % length of time windows:T*T0
+O^} t T0=0.1; % input pulse width
Gte\=0Wr MN1=0; % initial value for the space output location
Ihv@2{*(b dt = T/N; % time step
D
!{e n = [-N/2:1:N/2-1]'; % Index
CeM%?fr5 t = n.*dt;
}pGjc_:'] u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
"=LeHY=9 u20=u10.*0.0; % input to waveguide 2
K(HrwH`a{ u1=u10; u2=u20;
,<Wt8'e U1 = u1;
R7O<>kt U2 = u2; % Compute initial condition; save it in U
.1z=VLKF' ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
R<O Rw] w=2*pi*n./T;
Pq@-`sw g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
?bg
/%o L=4; % length of evoluation to compare with S. Trillo's paper
&3 Ki dz=L/M1; % space step, make sure nonlinear<0.05
7P]i|Q{ for m1 = 1:1:M1 % Start space evolution
uGHM ]"!) u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
yXqC u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
v*c"SI=@M= ca1 = fftshift(fft(u1)); % Take Fourier transform
7|jy:F,w% ca2 = fftshift(fft(u2));
oTx>oM, c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
?@kz`BY c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
$4qM\3x0, u2 = ifft(fftshift(c2)); % Return to physical space
B I=57 u1 = ifft(fftshift(c1));
fRq+pUxU if rem(m1,J) == 0 % Save output every J steps.
MWK)Bn U1 = [U1 u1]; % put solutions in U array
rhZp U2=[U2 u2];
6/ T/A+u MN1=[MN1 m1];
:qzhkKu z1=dz*MN1'; % output location
^bfU>02Q6p end
H328I}7 end
\DWKG~r-% hg=abs(U1').*abs(U1'); % for data write to excel
MZxU)QW1 ha=[z1 hg]; % for data write to excel
J^S!GG'gb t1=[0 t'];
kD7'BP/# hh=[t1' ha']; % for data write to excel file
<0? r#
} %dlmwrite('aa',hh,'\t'); % save data in the excel format
b80&${v figure(1)
*ae)<l3v waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
Z^=(9: figure(2)
a .?AniB0 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
R&g&BF 6y57m;JW/ 非线性超快脉冲耦合的数值方法的Matlab程序 $!TMS&Wk ?$uEN_1O\@ 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
A (p^Q 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
N eP 4'`H H E9Dy)f]#W s@GE(Pu7 % This Matlab script file solves the nonlinear Schrodinger equations
~%eE%5!k % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
R3.w")6 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
"5'eiYms % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
%d40us8 E l*huKSX} C=1;
{v|ib112; M1=120, % integer for amplitude
t
o8J
M3=5000; % integer for length of coupler
~4O3~Y_+GN N = 512; % Number of Fourier modes (Time domain sampling points)
5rc3jIXc{| dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
(I(U23A~ T =40; % length of time:T*T0.
uXvE>VpJG dt = T/N; % time step
-#R`n'/ n = [-N/2:1:N/2-1]'; % Index
;uv$>Fauk t = n.*dt;
m1X*I ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
~4Mz:h^ w=2*pi*n./T;
SGba6b31 g1=-i*ww./2;
cIC/3g}] g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
-AU'1iRcK7 g3=-i*ww./2;
~D`R"vzw= P1=0;
'.8eLN P2=0;
zAvI f P3=1;
5w{U/v$Z P=0;
q?)5yukeF for m1=1:M1
.IVKgQ
B p=0.032*m1; %input amplitude
!q$>6P s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
%++S;#)~ s1=s10;
!0UfX{. s20=0.*s10; %input in waveguide 2
)OucJQ s30=0.*s10; %input in waveguide 3
m7RyFnR2 s2=s20;
mG\9Qkom| s3=s30;
+JY8"a97> p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
W$&*i1<a+ %energy in waveguide 1
R>1oF]w p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
#7]>ozKm %energy in waveguide 2
="f-I9y p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
vpOGyvI %energy in waveguide 3
dM19;R@4 for m3 = 1:1:M3 % Start space evolution
+ZGH s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
mA_EvzXk\ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
<<Y]P+uU s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
1vCp<D9< sca1 = fftshift(fft(s1)); % Take Fourier transform
fA0wQz]u sca2 = fftshift(fft(s2));
H 8 66,] sca3 = fftshift(fft(s3));
3RxR'M1 sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
[u J<] sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
<:N$ $n sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Dq9f Fe s3 = ifft(fftshift(sc3));
_ouZd. s2 = ifft(fftshift(sc2)); % Return to physical space
yd'cLZd<} s1 = ifft(fftshift(sc1));
5p:2gsk end
YcR: _ac p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
,?Vxcr p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
UEm4):/} p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
dS \n2Qb P1=[P1 p1/p10];
kK
5~hpv P2=[P2 p2/p10];
dVGcth;
P3=[P3 p3/p10];
l&"bm C:xr P=[P p*p];
D+oV( Pw, end
e8egxm figure(1)
S$R=!3* "V plot(P,P1, P,P2, P,P3);
0"+QWh :B|rs& 转自:
http://blog.163.com/opto_wang/