计算脉冲在非线性耦合器中演化的Matlab 程序 a7uL{*ZR 'h7x@[| % This Matlab script file solves the coupled nonlinear Schrodinger equations of
k.2GIc:5 % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
~l?c.CSd % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
2{Dnfl'k % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
Dgc6rv# +?ZP3vgGA %fid=fopen('e21.dat','w');
#_`p
0wY N = 128; % Number of Fourier modes (Time domain sampling points)
Ayv:Pv@ M1 =3000; % Total number of space steps
avM8-&h J =100; % Steps between output of space
mxBx?xM- T =10; % length of time windows:T*T0
Y<kz+d,C T0=0.1; % input pulse width
o8H\l\( MN1=0; % initial value for the space output location
jcvq:i{ dt = T/N; % time step
zDEgC n = [-N/2:1:N/2-1]'; % Index
xLLTp7b( t = n.*dt;
1Y;.fZE u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
&/2+'wCp5 u20=u10.*0.0; % input to waveguide 2
!.MbPPNp u1=u10; u2=u20;
NS""][# U1 = u1;
iOCs%J U2 = u2; % Compute initial condition; save it in U
lZe-A/E ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
#8
^b] w=2*pi*n./T;
{dP6fr1z g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
#G?#ot2o L=4; % length of evoluation to compare with S. Trillo's paper
BNA1"@9q dz=L/M1; % space step, make sure nonlinear<0.05
g.blDOmlc for m1 = 1:1:M1 % Start space evolution
i%F2^R@!q/ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
-P-8D6 u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
Rq e|7/As ca1 = fftshift(fft(u1)); % Take Fourier transform
^'du@XCf} ca2 = fftshift(fft(u2));
V@s93kh c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
@$L| c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
6R8>w, u2 = ifft(fftshift(c2)); % Return to physical space
@Q{:m)\ u1 = ifft(fftshift(c1));
%Ie,J5g5 if rem(m1,J) == 0 % Save output every J steps.
RJd*(!y U1 = [U1 u1]; % put solutions in U array
]bmf}& U2=[U2 u2];
b{)kup MN1=[MN1 m1];
6/Yo0D>M$ z1=dz*MN1'; % output location
#O,w{S end
JY"J} end
lKU{jWA hg=abs(U1').*abs(U1'); % for data write to excel
8''1H<f ha=[z1 hg]; % for data write to excel
tJQZRZViu t1=[0 t'];
^_V0irv hh=[t1' ha']; % for data write to excel file
;;rx)|\<R %dlmwrite('aa',hh,'\t'); % save data in the excel format
uPN^o.,/. figure(1)
d2US~.;>l waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
$FIJI^Kd7 figure(2)
\L$]2"/v- waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
[ +CFQf> VKu_l 非线性超快脉冲耦合的数值方法的Matlab程序 L0H^S)g g`C"t3~%S 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
(E 8jkc
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
7h!nt=8Y #nft{AN >Wx9a"H^( =w8 0y' % This Matlab script file solves the nonlinear Schrodinger equations
r8N)]HsZH % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
xiQc\k$ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
`('Up? % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
`WxGU g2}aEfp!H C=1;
X|g5tnsj` M1=120, % integer for amplitude
Z\QNn M3=5000; % integer for length of coupler
KyDd( 'i N = 512; % Number of Fourier modes (Time domain sampling points)
y,KZp2 j dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
f* h nzj T =40; % length of time:T*T0.
?}W#j dt = T/N; % time step
Eg&Q,dH[ n = [-N/2:1:N/2-1]'; % Index
[AD%8H t = n.*dt;
eYjF"Aq ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
(r'NB w=2*pi*n./T;
kf~>%tES] g1=-i*ww./2;
BtJF1#f g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
w)YTHY(k; g3=-i*ww./2;
673G6Nk P1=0;
VzcW9'"# P2=0;
eISHV.QV P3=1;
lD_iIe~c P=0;
XC390t for m1=1:M1
bZQ_j#{$ p=0.032*m1; %input amplitude
AI9=?X<kh s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
o@} qPvt0 s1=s10;
+_f813$C s20=0.*s10; %input in waveguide 2
Tn38]UL s30=0.*s10; %input in waveguide 3
{cw+kY]m4- s2=s20;
cj[%.M5iBA s3=s30;
'$ G%HUn p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
gKPqU @$* %energy in waveguide 1
0d`lugf p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
Lr"`OzDz %energy in waveguide 2
RcI0n"Gi_ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
XFww|SG$ %energy in waveguide 3
S|IDFDn for m3 = 1:1:M3 % Start space evolution
1gYvp9Ma s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
)hK;27m4 s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
IueI7A s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
1py>[II@ sca1 = fftshift(fft(s1)); % Take Fourier transform
!#WJ(zSq sca2 = fftshift(fft(s2));
=A"z.KfV sca3 = fftshift(fft(s3));
U/rFH9e$ sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
IF? sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
C\cZ sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
GMob&0l8_ s3 = ifft(fftshift(sc3));
{?IUf~< s2 = ifft(fftshift(sc2)); % Return to physical space
M3)Id?|]6 s1 = ifft(fftshift(sc1));
+2s][^-KV end
.8CfCRq p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
>LEp EMJ\ p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
%-NG eN8 p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
^"$~&\+x5 P1=[P1 p1/p10];
k~$}&O P2=[P2 p2/p10];
H<`7){iG P3=[P3 p3/p10];
@=l.J+lh P=[P p*p];
\&Oc}] end
E0Kt4%b figure(1)
+n<;);h plot(P,P1, P,P2, P,P3);
T@N)BfkB
Yp9%u9tNq 转自:
http://blog.163.com/opto_wang/