计算脉冲在非线性耦合器中演化的Matlab 程序 FoE|Js %lN2n,AK % This Matlab script file solves the coupled nonlinear Schrodinger equations of
/_]ltX D % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
5\okU"{d7 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
b6 $,Xh % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
?q\FLb%"7 ~mtTsZc %fid=fopen('e21.dat','w');
EJ1Bq>u7 N = 128; % Number of Fourier modes (Time domain sampling points)
ZB-QABn M1 =3000; % Total number of space steps
?#d6i$ J =100; % Steps between output of space
z8IPhE@ T =10; % length of time windows:T*T0
ZAMeqPt T0=0.1; % input pulse width
DhZ:#mM{ MN1=0; % initial value for the space output location
n'THe|:I dt = T/N; % time step
+wipfL~&S n = [-N/2:1:N/2-1]'; % Index
m;dm|4L^ t = n.*dt;
G3G/xC" u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
b3}Q#Y\G u20=u10.*0.0; % input to waveguide 2
v2d<o[[C u1=u10; u2=u20;
Odm#wL~E U1 = u1;
vB^uxdt|m U2 = u2; % Compute initial condition; save it in U
_}D%iJg# ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
.Y;b)]@f w=2*pi*n./T;
C@1CanL@3 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
|+98h&U~ L=4; % length of evoluation to compare with S. Trillo's paper
tv0Ha A dz=L/M1; % space step, make sure nonlinear<0.05
X2qv^G, for m1 = 1:1:M1 % Start space evolution
g+/0DO_F3 u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
aR _NyA u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
Bz?l{4". ca1 = fftshift(fft(u1)); % Take Fourier transform
%;7.9% ca2 = fftshift(fft(u2));
Pg`JQC| c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
Ejv%,q/T( c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
]fZ<`w8u} u2 = ifft(fftshift(c2)); % Return to physical space
t-WjL@$F/ u1 = ifft(fftshift(c1));
NetYg]8` if rem(m1,J) == 0 % Save output every J steps.
Av o|v> U1 = [U1 u1]; % put solutions in U array
PY?8[A+ U2=[U2 u2];
k'Gw!p} MN1=[MN1 m1];
C6|(ktt z1=dz*MN1'; % output location
pV7N byb4 end
+Gow5-( end
F|Q H hg=abs(U1').*abs(U1'); % for data write to excel
|m)kN2w ha=[z1 hg]; % for data write to excel
!siWEzw t1=[0 t'];
/%!~x[BeJ> hh=[t1' ha']; % for data write to excel file
i\)3l%AK]T %dlmwrite('aa',hh,'\t'); % save data in the excel format
&iqw!
ud figure(1)
V>Fesm"aq waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
;\qXbL7 figure(2)
k^%2_H waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
{pWBwf>R C }x:0os 非线性超快脉冲耦合的数值方法的Matlab程序 dy2rkV.z JEhm1T 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
<C'Z H'p 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
?sXG17~Bm : lgi>^ "k:=Y7Dx 9cG<hX9`F % This Matlab script file solves the nonlinear Schrodinger equations
Lu=O+{*8 % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
)o{aeV % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
)MSZ2)( % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
_7"5wB?|+ 2/B)O)#ls C=1;
gzf-)J M1=120, % integer for amplitude
X`:'i?(yj M3=5000; % integer for length of coupler
G>w+#{( N = 512; % Number of Fourier modes (Time domain sampling points)
T_LLJ}6M dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
+BL{@,zr T =40; % length of time:T*T0.
eh(<m8I dt = T/N; % time step
$shp(T,q n = [-N/2:1:N/2-1]'; % Index
| kXm}K t = n.*dt;
)&,{?$ . ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
_Zc4=c,K w=2*pi*n./T;
6ZOy&fd,Ty g1=-i*ww./2;
xq[Yg15d% g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
D."=k{r. g3=-i*ww./2;
~Y7dH
Dn P1=0;
})Yv9],6 P2=0;
rjk ( X|R* P3=1;
[=uIb._Wv P=0;
*jITOR!uF` for m1=1:M1
I4t*? p=0.032*m1; %input amplitude
=-#G8L%Q s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
pf&ag#nr s1=s10;
p?# pT}1 s20=0.*s10; %input in waveguide 2
hH>``gK s30=0.*s10; %input in waveguide 3
D-&an@ s2=s20;
94/BG0 s3=s30;
taWqSq! p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
gb" 4B%Hm %energy in waveguide 1
86
.`T l; p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
]Oeh=gq %energy in waveguide 2
YcDe@Zuwn p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
4_^[=p/R %energy in waveguide 3
Bp? for m3 = 1:1:M3 % Start space evolution
`yO'[2 s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
O.QK"pKD\ s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
r!GW=u' s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
swcd&~9r sca1 = fftshift(fft(s1)); % Take Fourier transform
(xpn`NA sca2 = fftshift(fft(s2));
J G$Z.s sca3 = fftshift(fft(s3));
Bc5+ss sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
"ju'UOcS/ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
wT,R0~V0 sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
!t#F/C s3 = ifft(fftshift(sc3));
vB'>[jvA| s2 = ifft(fftshift(sc2)); % Return to physical space
>jg0s)RA' s1 = ifft(fftshift(sc1));
!&^gaUa{ end
;i<jhNA p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
kz}R[7
p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
7[pBUDA p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
;C.S3} P1=[P1 p1/p10];
bulS&dAX P2=[P2 p2/p10];
i3$$,W! P3=[P3 p3/p10];
r6Aneg7 P=[P p*p];
5GzFoy)j> end
~f\G68c figure(1)
3uWkc3 plot(P,P1, P,P2, P,P3);
Kn`M4O ~`ny@WD9 转自:
http://blog.163.com/opto_wang/