计算脉冲在非线性耦合器中演化的Matlab 程序 qvhTc6oH 6^}GXfJAc % This Matlab script file solves the coupled nonlinear Schrodinger equations of
~@MIG % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
9:4P7 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
2}'&38wMT % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
03AYW)"}M xlv:+ %fid=fopen('e21.dat','w');
%UY=VE\F N = 128; % Number of Fourier modes (Time domain sampling points)
Y Q3%vH5#y M1 =3000; % Total number of space steps
/Y%) Y J =100; % Steps between output of space
v)4 kS T =10; % length of time windows:T*T0
FHqa|4Ie T0=0.1; % input pulse width
q1`uS^3` MN1=0; % initial value for the space output location
+#,t dt = T/N; % time step
,k+jx53XV n = [-N/2:1:N/2-1]'; % Index
Oa
CkU t = n.*dt;
2mVH*\D u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
I)O%D3wfMW u20=u10.*0.0; % input to waveguide 2
IcI y u1=u10; u2=u20;
z35n3q U1 = u1;
}DY^a'wJ- U2 = u2; % Compute initial condition; save it in U
xL=g(FN(6L ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
24>{T5E w=2*pi*n./T;
~iydp g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
**dGK_^T0 L=4; % length of evoluation to compare with S. Trillo's paper
ib*$3Fn~ dz=L/M1; % space step, make sure nonlinear<0.05
UFC.!t-Z for m1 = 1:1:M1 % Start space evolution
&%C4rAd2 u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
>c8zMd u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
^7~=+0cF] ca1 = fftshift(fft(u1)); % Take Fourier transform
OCY7Bls4 ca2 = fftshift(fft(u2));
l?Bv9k.^? c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
JwxI8Pi*y c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
C7eaioW$ u2 = ifft(fftshift(c2)); % Return to physical space
Pg|q{fc u1 = ifft(fftshift(c1));
X7Cou6r if rem(m1,J) == 0 % Save output every J steps.
X}h{xl U1 = [U1 u1]; % put solutions in U array
wF$8#= U2=[U2 u2];
4VD'<`R[ MN1=[MN1 m1];
GDZe6* z1=dz*MN1'; % output location
6(<AuhFu end
Y')in7g end
H /*^$>0Uo hg=abs(U1').*abs(U1'); % for data write to excel
<),FI <~ ha=[z1 hg]; % for data write to excel
b>&kL t1=[0 t'];
{- 7T\mj hh=[t1' ha']; % for data write to excel file
RR*z3i`PP %dlmwrite('aa',hh,'\t'); % save data in the excel format
'R,1Jmx figure(1)
w'?uJW waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
(y=P-nm figure(2)
3QM.X^ANH waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
r]kLe2r:B <b{Le{QJ* 非线性超快脉冲耦合的数值方法的Matlab程序 VL7zU->
W(a=ev2sa 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
T[~ak"M 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
2Q-kD?PO, G{YJ(6etZ NrhU70y 6(<M.U_ft % This Matlab script file solves the nonlinear Schrodinger equations
*.ZV.( % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
&z&Jl#t-) % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
D{PO!WzW % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
9Z6O{
> htkn#s~= C=1;
`cMa Fc-y/ M1=120, % integer for amplitude
%~}9#0h) M3=5000; % integer for length of coupler
!
FhN(L[=j N = 512; % Number of Fourier modes (Time domain sampling points)
HVh+Zk dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
q J@XVN4 T =40; % length of time:T*T0.
& i)p^AmM dt = T/N; % time step
Z\4l+.R` n = [-N/2:1:N/2-1]'; % Index
rnEWTk7& t = n.*dt;
OAc+LdT ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
"72
_Sw w=2*pi*n./T;
$NT{ssh g1=-i*ww./2;
j""u:l^+x g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
rP^2MH" g3=-i*ww./2;
ceyZ4M P1=0;
+'y$XR~W { P2=0;
W5HC7o\4 P3=1;
[gqV}Y"Md P=0;
jbMzcn~ehI for m1=1:M1
(VU: &. p=0.032*m1; %input amplitude
ZMy,<wk s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
WSW aq\9]8 s1=s10;
o%RyE]pw, s20=0.*s10; %input in waveguide 2
Y{f;qbEQH' s30=0.*s10; %input in waveguide 3
]@C&Q,~q s2=s20;
1`X{$mxw s3=s30;
C[|jJ9VE, p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
) zz"DH %energy in waveguide 1
_LCK|H%v' p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
`>g:
: %energy in waveguide 2
8! pfy" p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
|r%6;8A]i %energy in waveguide 3
305() for m3 = 1:1:M3 % Start space evolution
eM*@}3 s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
'\[GquK;P s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
" q0lh s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
5O]ph[7 sca1 = fftshift(fft(s1)); % Take Fourier transform
118A6qyi sca2 = fftshift(fft(s2));
ROW8YTYb sca3 = fftshift(fft(s3));
P!0uAkt9C sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
v0apEjT sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
8%U+y0j6b sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
"tn]s>iAd= s3 = ifft(fftshift(sc3));
Fnzv& s2 = ifft(fftshift(sc2)); % Return to physical space
mC8c`#1T s1 = ifft(fftshift(sc1));
5)AMl) end
mXAX%M U p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
PI)lJ\ p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
)8!""n~ p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
18zv]v
% P1=[P1 p1/p10];
]wc'h>w P2=[P2 p2/p10];
1\$xq9 P3=[P3 p3/p10];
zw_Xh~4"b P=[P p*p];
|zKFF?7#wE end
+%UfnbZ figure(1)
K_G(J> plot(P,P1, P,P2, P,P3);
dNU i|IYm$ 6:fe.0H9 转自:
http://blog.163.com/opto_wang/