计算脉冲在非线性耦合器中演化的Matlab 程序 Fsnw3/Nr #Y/97_2 xa % This Matlab script file solves the coupled nonlinear Schrodinger equations of
5Xp$yX = % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
9vB9k@9 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
cZPbD;e: % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
l
:f9Ih }K#iCby4 %fid=fopen('e21.dat','w');
rd|@*^k N = 128; % Number of Fourier modes (Time domain sampling points)
(3)C_Z M1 =3000; % Total number of space steps
pA*D/P- J =100; % Steps between output of space
;:v]NZtc T =10; % length of time windows:T*T0
L#@l(8. T0=0.1; % input pulse width
_Cu[s?,kS MN1=0; % initial value for the space output location
}T?i%l dt = T/N; % time step
XMjI}SPG n = [-N/2:1:N/2-1]'; % Index
s#'|{ t = n.*dt;
*O2^{ C u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
trID#DT~ u20=u10.*0.0; % input to waveguide 2
{Bav$kw;?e u1=u10; u2=u20;
'e+-,CGdY\ U1 = u1;
FCsyKdM U2 = u2; % Compute initial condition; save it in U
F2Nb5WT ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
z'5;f; w=2*pi*n./T;
$K=K?BV[ g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
pkrl@jv > L=4; % length of evoluation to compare with S. Trillo's paper
Y2RxD\!Z dz=L/M1; % space step, make sure nonlinear<0.05
6Y0/i,d* for m1 = 1:1:M1 % Start space evolution
O^QR;<t' u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
|HKHN?) u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
jldcvW ca1 = fftshift(fft(u1)); % Take Fourier transform
V Z4nAG ca2 = fftshift(fft(u2));
YHwVj?6W c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
VWnu#_( c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
avYh\xZ u2 = ifft(fftshift(c2)); % Return to physical space
(E2lv#[ u1 = ifft(fftshift(c1));
)W_ Y3M, if rem(m1,J) == 0 % Save output every J steps.
O3slabE# U1 = [U1 u1]; % put solutions in U array
:epitpJ U2=[U2 u2];
*~\;&G29Y MN1=[MN1 m1];
r9p?@P\:[ z1=dz*MN1'; % output location
hr/xpQW end
$6Q2)^LJ end
\?5[RR hg=abs(U1').*abs(U1'); % for data write to excel
`Z;B^Y0 ha=[z1 hg]; % for data write to excel
$G^H7|PzdC t1=[0 t'];
i]hR7g< hh=[t1' ha']; % for data write to excel file
MSxU>FX0 %dlmwrite('aa',hh,'\t'); % save data in the excel format
rm7*l<v6 figure(1)
LN,$P waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
;DT"S{"7 figure(2)
ThT.iD[ waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
Q!BkS=H30K +#i,87 非线性超快脉冲耦合的数值方法的Matlab程序 P~b%;*m}8 #U6/@l) 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
r`mzsO-' 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
o$qFa9|Ec? A ydy=sj (<5'ceF)X ]9~#;M%1 % This Matlab script file solves the nonlinear Schrodinger equations
!T&u2=`D % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
)nbyV a % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
MO(5-R` % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
6i?kkULBS 0X}w[^f C=1;
l")o!N? M1=120, % integer for amplitude
Bt`r6v;\ M3=5000; % integer for length of coupler
`qYc#_ELv N = 512; % Number of Fourier modes (Time domain sampling points)
*I;Mp dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
;Kq<',u~ T =40; % length of time:T*T0.
i >/@]2 dt = T/N; % time step
O7L6Htya n = [-N/2:1:N/2-1]'; % Index
#q^>qX
y t = n.*dt;
QVA!z## ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
sVZ}nq{ w=2*pi*n./T;
hE?GO, g1=-i*ww./2;
w-q=.RSTn= g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
swe8 g3=-i*ww./2;
'KW+Rr~tZn P1=0;
N]<~NG:6b P2=0;
2Xk1AS P3=1;
.jG.90 P=0;
G@l|u for m1=1:M1
*^&iw$Qx3 p=0.032*m1; %input amplitude
$(<*pU s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
EZNB`gO s1=s10;
U]R|ej s20=0.*s10; %input in waveguide 2
B+e~k?O] 1 s30=0.*s10; %input in waveguide 3
jak|LOp s2=s20;
^,\se9=( s3=s30;
_ZvX" {y~ p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
XQ?) %energy in waveguide 1
H6+st`{ p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
^dp[Z,[1z %energy in waveguide 2
=*O9)$b p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
@o-evH;G %energy in waveguide 3
vA $BBXX for m3 = 1:1:M3 % Start space evolution
N'1 [t s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
3ks| s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
Y_ u7
0@` s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
k?_$h<Y sca1 = fftshift(fft(s1)); % Take Fourier transform
I[YfF sca2 = fftshift(fft(s2));
F^[Rwzv>c sca3 = fftshift(fft(s3));
8B(Q7Qj sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
(j\UoKLRt sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
Xwn|. sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
OTr!?xi s3 = ifft(fftshift(sc3));
_KlPbyLU s2 = ifft(fftshift(sc2)); % Return to physical space
aG&kl O>m s1 = ifft(fftshift(sc1));
P24 end
pz z`4VS: p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
EC&19 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
Ql!6I ( p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
'G
By^hj? P1=[P1 p1/p10];
pRfHbPV? P2=[P2 p2/p10];
(5\d[||9g P3=[P3 p3/p10];
<
oG\)!O P=[P p*p];
v,O&UrZ end
` G/QJH{I figure(1)
t3kh]2t plot(P,P1, P,P2, P,P3);
:j!_XMyT: [;\<
2 =H 转自:
http://blog.163.com/opto_wang/