计算脉冲在非线性耦合器中演化的Matlab 程序 ~\.w^*$#Y )XakJU^o % This Matlab script file solves the coupled nonlinear Schrodinger equations of
rI>aAW' % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
Rhz_t@e % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
zj`v?#ET % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
c^u"I'#Q #H{<gjs] %fid=fopen('e21.dat','w');
'wI"Bo6e N = 128; % Number of Fourier modes (Time domain sampling points)
"@d[h ,TM M1 =3000; % Total number of space steps
qT"Q1xU[ J =100; % Steps between output of space
8p9bCE>\ T =10; % length of time windows:T*T0
fX.>9H[w@~ T0=0.1; % input pulse width
_$f9]bab MN1=0; % initial value for the space output location
MHai%E dt = T/N; % time step
[}8|R0KF n = [-N/2:1:N/2-1]'; % Index
YZ7|K< t = n.*dt;
< hO
/jB u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
#hf
ak u20=u10.*0.0; % input to waveguide 2
AvSM^ u1=u10; u2=u20;
!+4cqO U1 = u1;
PSVc+s[Q+V U2 = u2; % Compute initial condition; save it in U
Ucm :S- ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
a{J,~2> w=2*pi*n./T;
^Au _U g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
J-)
XQDD L=4; % length of evoluation to compare with S. Trillo's paper
A~+S1 dz=L/M1; % space step, make sure nonlinear<0.05
2fS[J'-o for m1 = 1:1:M1 % Start space evolution
9}uW}yJ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
>teOm?@U u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
IlE_@gS8 ca1 = fftshift(fft(u1)); % Take Fourier transform
@@rEs40 ca2 = fftshift(fft(u2));
pT1[<X!<s c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
IWveW8qJ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
2@~M4YJf u2 = ifft(fftshift(c2)); % Return to physical space
6{+{lBm=y u1 = ifft(fftshift(c1));
f=!VsR2o if rem(m1,J) == 0 % Save output every J steps.
o{EC&- U1 = [U1 u1]; % put solutions in U array
$:j G- r U2=[U2 u2];
\,&co MN1=[MN1 m1];
C2xL1` z1=dz*MN1'; % output location
WN5`;{\ end
nJ"YIT1K]p end
HJ[/|NZU$ hg=abs(U1').*abs(U1'); % for data write to excel
r"a5(Q;n ha=[z1 hg]; % for data write to excel
.OqSch| t1=[0 t'];
""h)LUrl hh=[t1' ha']; % for data write to excel file
Vc%R$E% %dlmwrite('aa',hh,'\t'); % save data in the excel format
'vq:D$A figure(1)
RJH, waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
<b?!jV7 figure(2)
d]i(h~?_ waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
RZ7(J ;?~$h-9) 非线性超快脉冲耦合的数值方法的Matlab程序 >'xGp7}y ND,Kldji 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
5"]~oPK 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
8kOKwEX EVUq--)~ {
"xln/ #D9e$E(J^ % This Matlab script file solves the nonlinear Schrodinger equations
KdUnD4d % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
^o@,3__7Q % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
j.ldaLdG % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
7`H
1f]d 3bd5FsI^pU C=1;
(NK9vW4F M1=120, % integer for amplitude
K+)%KP M3=5000; % integer for length of coupler
ZBG}3Z
N = 512; % Number of Fourier modes (Time domain sampling points)
s/e"'Hz dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
xc:!cA{V T =40; % length of time:T*T0.
9F-
)r' dt = T/N; % time step
1w0OKaF5 n = [-N/2:1:N/2-1]'; % Index
f0SAP0M3 t = n.*dt;
m8JR@!t7 ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
u=NSsTP& w=2*pi*n./T;
/.eeO k g1=-i*ww./2;
q
)lnS ) g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
Dbaf0 g3=-i*ww./2;
tYqs~B3 P1=0;
BH@)QVs- P2=0;
X$b={]b P3=1;
o}'bv P=0;
omf Rs for m1=1:M1
H{c?lT p=0.032*m1; %input amplitude
)Vk6;__ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
>x@P|\ s1=s10;
\mN[gT}LHm s20=0.*s10; %input in waveguide 2
"SoHt]%# s30=0.*s10; %input in waveguide 3
o1OBwPj
s2=s20;
.LRxP#B s3=s30;
-g/hAxb5 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
cj|*_} %energy in waveguide 1
T\# *S0^ p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
`C+HE$B %energy in waveguide 2
R,!Q
Zxmg p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
o:dR5v %energy in waveguide 3
l0Ti Z for m3 = 1:1:M3 % Start space evolution
x2#qg>`l s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
a>B[5I5 s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
qy!Ou3^ s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
>(tn "2 sca1 = fftshift(fft(s1)); % Take Fourier transform
~ZlC
' sca2 = fftshift(fft(s2));
zMK](o1Vj sca3 = fftshift(fft(s3));
W:VP1 : sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
8g7,2f/ } sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
@TA9V@?) sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
7C?.L70ZY s3 = ifft(fftshift(sc3));
l??;3kh1 s2 = ifft(fftshift(sc2)); % Return to physical space
kao}(?x% s1 = ifft(fftshift(sc1));
Y/8K;U| end
td -3h,\\ p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
&yz&LNn' p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
q1hMmMi p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
pY^9l3y^ P1=[P1 p1/p10];
i(wgB\9i4 P2=[P2 p2/p10];
AzpV4(:an. P3=[P3 p3/p10];
f.pkQe( P=[P p*p];
qq0?e0H end
4*UP.r@ figure(1)
:Px\qh}K plot(P,P1, P,P2, P,P3);
-#A:`/22 ;<G<1+ 转自:
http://blog.163.com/opto_wang/