计算脉冲在非线性耦合器中演化的Matlab 程序 /?P!.!W& 3ev -Iqz % This Matlab script file solves the coupled nonlinear Schrodinger equations of
u{Ak:0G7 % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
7 >bMzdH % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
iD714+N( % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
V&iS~V0. |IN[uQ %fid=fopen('e21.dat','w');
j^ nu| N = 128; % Number of Fourier modes (Time domain sampling points)
~b6GrY"vB M1 =3000; % Total number of space steps
%Kl(>{N J =100; % Steps between output of space
e2wvc/gG6 T =10; % length of time windows:T*T0
0>FE% T0=0.1; % input pulse width
'Wp@b678 MN1=0; % initial value for the space output location
;MPKJS68@ dt = T/N; % time step
RG1\=J$:E n = [-N/2:1:N/2-1]'; % Index
\=fh-c(J, t = n.*dt;
F>-}*o u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
$8g42LR' u20=u10.*0.0; % input to waveguide 2
[0!{_E)< u1=u10; u2=u20;
P)hi||[ U1 = u1;
w
&
P&7 U2 = u2; % Compute initial condition; save it in U
"V}qf3qU ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
n[CoS w=2*pi*n./T;
]r959+\$ g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
x.UaQ |F L=4; % length of evoluation to compare with S. Trillo's paper
h.}u?{ dz=L/M1; % space step, make sure nonlinear<0.05
) EXJ for m1 = 1:1:M1 % Start space evolution
H=<LutnZ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
+`}o,z/^ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
b# ='^W3 ca1 = fftshift(fft(u1)); % Take Fourier transform
T1zi0fa' ca2 = fftshift(fft(u2));
MI*Sq\-i c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
taDQ65 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
.iT4- u2 = ifft(fftshift(c2)); % Return to physical space
[K:29N9~4 u1 = ifft(fftshift(c1));
C:j]43` if rem(m1,J) == 0 % Save output every J steps.
&*gbK6JB U1 = [U1 u1]; % put solutions in U array
&,MFB U2=[U2 u2];
Ct!S Tk[2 MN1=[MN1 m1];
FYl3c z1=dz*MN1'; % output location
!\x?R6K end
{[^#h|U end
<5IQc[3]aP hg=abs(U1').*abs(U1'); % for data write to excel
Uk'U?9O ha=[z1 hg]; % for data write to excel
a+
GJVJ t1=[0 t'];
ir&.Z5= hh=[t1' ha']; % for data write to excel file
Pm?B
9S %dlmwrite('aa',hh,'\t'); % save data in the excel format
|^Kjz{ figure(1)
C}Qt "-% waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
9g]M4*?C9P figure(2)
"8/dD]=f^a waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
mi^hvks< 39D } 非线性超快脉冲耦合的数值方法的Matlab程序 1;&T^Gdj PGX+p+wB 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
CDCC1B G" 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
hY=I5[* '5rUe\k Gru ALx7 X| <yq % This Matlab script file solves the nonlinear Schrodinger equations
;k}H(QI % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
c0[k T % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
a.,_4;'UE1 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
i@,]Z~] }N,>A-P C=1;
xZ+]QDKC M1=120, % integer for amplitude
>S.91!x M3=5000; % integer for length of coupler
=DMbz`t N = 512; % Number of Fourier modes (Time domain sampling points)
C*rd;+1A dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
*s\sa+2al T =40; % length of time:T*T0.
XeU<^ [ dt = T/N; % time step
Kz[BB@[ n = [-N/2:1:N/2-1]'; % Index
P4 6,o t = n.*dt;
jdlG#j-\ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
rBfg*r`) w=2*pi*n./T;
j-32S! g1=-i*ww./2;
_9kIRmT{ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
*h:kmT g3=-i*ww./2;
RGp'b P1=0;
p;`N\.ld P2=0;
_6rKC*Pe1 P3=1;
)eR$:uO P=0;
`%y5\!X for m1=1:M1
QJSr:dP4dG p=0.032*m1; %input amplitude
.Dx2 ;lj s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
!<r8~A3!( s1=s10;
^'W%X s20=0.*s10; %input in waveguide 2
^:z7E1~ s30=0.*s10; %input in waveguide 3
V(..8}LlD s2=s20;
%6i=lyH- s3=s30;
sN]Z
#7 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
`qu]Pxk %energy in waveguide 1
) 4ncutb p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
7I3 :u+ %energy in waveguide 2
B.K4!/cF p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
w-FHhf %energy in waveguide 3
/ O)6iJ for m3 = 1:1:M3 % Start space evolution
SqqDV)Uih1 s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
SRWg[H s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
|yv]Y/= s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
_FsB6
G]mc sca1 = fftshift(fft(s1)); % Take Fourier transform
rzT{-DZB[4 sca2 = fftshift(fft(s2));
bNs[O22 sca3 = fftshift(fft(s3));
? s4oDi|: sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
cL7C2wB` sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
; )|nkI sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
r|-J8s# s3 = ifft(fftshift(sc3));
3EOyq^I% s2 = ifft(fftshift(sc2)); % Return to physical space
o? \Gm s1 = ifft(fftshift(sc1));
2sun=3qb end
!.eAOuq p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
o9+Q{|r p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
v,0<9!'v p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
j@t{@Ke P1=[P1 p1/p10];
mz-N{ >k P2=[P2 p2/p10];
**HrWM%?8o P3=[P3 p3/p10];
,qu:< P=[P p*p];
w4A#>;Qu* end
BS.= figure(1)
\(bj(any plot(P,P1, P,P2, P,P3);
yHOqzq56 !Bj^i
cR 转自:
http://blog.163.com/opto_wang/