计算脉冲在非线性耦合器中演化的Matlab 程序 VTD'D+t ?(hdV?8)P % This Matlab script file solves the coupled nonlinear Schrodinger equations of
1 [dza5 % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
Io|
72W}rg % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
U2!9Tl9". % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
voCQ_~*)9 3<?#*z4]_ %fid=fopen('e21.dat','w');
eFbr1IV N = 128; % Number of Fourier modes (Time domain sampling points)
Zs)HzOP)9 M1 =3000; % Total number of space steps
RBiDU}j J =100; % Steps between output of space
3%'$AM}+s T =10; % length of time windows:T*T0
}F**!%4d T0=0.1; % input pulse width
O']-<E`1k MN1=0; % initial value for the space output location
k_$w+Q dt = T/N; % time step
vxK}f*d n = [-N/2:1:N/2-1]'; % Index
YG<?|AS/ t = n.*dt;
Q+gQ"l,95 u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
'Aai.PE: u20=u10.*0.0; % input to waveguide 2
|no '^ u1=u10; u2=u20;
=p:D_b U1 = u1;
#\o
VbVq U2 = u2; % Compute initial condition; save it in U
1+v)#Wj ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
b4i=eI8 w=2*pi*n./T;
DTPYCG&% g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
#%Uk}5;- L=4; % length of evoluation to compare with S. Trillo's paper
sZ7{_}B dz=L/M1; % space step, make sure nonlinear<0.05
!bS:!Il9= for m1 = 1:1:M1 % Start space evolution
T/UhZ4(V u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
]xbR:CYJ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
}5FdX3YR ca1 = fftshift(fft(u1)); % Take Fourier transform
5
J61PuH
ca2 = fftshift(fft(u2));
UC3?XoT\ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
yiiYq(\{ c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
p'ukV(B u2 = ifft(fftshift(c2)); % Return to physical space
#GY;., u1 = ifft(fftshift(c1));
\XhzaM
if rem(m1,J) == 0 % Save output every J steps.
1\TXb!OtL U1 = [U1 u1]; % put solutions in U array
D`2Iy.|! U2=[U2 u2];
%5NfF65' MN1=[MN1 m1];
ZFY t[: z1=dz*MN1'; % output location
CUaI 66 end
fXEF]C end
G(EiDo& hg=abs(U1').*abs(U1'); % for data write to excel
:"|}oKT%mP ha=[z1 hg]; % for data write to excel
hj4Kv t1=[0 t'];
/T!S)FD\/v hh=[t1' ha']; % for data write to excel file
#B_
``XV %dlmwrite('aa',hh,'\t'); % save data in the excel format
-P^ 6b( figure(1)
+K])&}Dw waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
Szsq|T figure(2)
oyiEOC waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
Re0ma%~LP udMDE=1~L 非线性超快脉冲耦合的数值方法的Matlab程序 M`-.0 S9U,so? 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
VZ5EV'D8! 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
"}Of f RU|{'zC\v Gcna:w>6d t-)C0< % This Matlab script file solves the nonlinear Schrodinger equations
DP6 M4 % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
7loIX Qw % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
qCi6kEr % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
prV:Kq ;O DBI[OG9 C=1;
"qYPi M1=120, % integer for amplitude
VPx"l5\ M3=5000; % integer for length of coupler
_=Ed>2M)no N = 512; % Number of Fourier modes (Time domain sampling points)
: " 9F.U dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
:n4? T =40; % length of time:T*T0.
&9g4/c-?$ dt = T/N; % time step
hz\Fq1 n = [-N/2:1:N/2-1]'; % Index
hiZE8?0+~N t = n.*dt;
N{U``LV ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
( 6|S42 w=2*pi*n./T;
(,#Rj$W g1=-i*ww./2;
{+_pyL g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
E"ijN s g3=-i*ww./2;
;I1}g] P1=0;
dlsVE~_G P2=0;
s-!Bpr16o0 P3=1;
8M9 &CsT6 P=0;
B`3RyM"J @ for m1=1:M1
03Pa; n p=0.032*m1; %input amplitude
rnz9TmN:*1 s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
?4GI19j s1=s10;
<2Lcy&w_M s20=0.*s10; %input in waveguide 2
Z6F>SL s30=0.*s10; %input in waveguide 3
0*o)k6?q3 s2=s20;
^|M\vO s3=s30;
1bs8fUPB3 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
~$-Nl %energy in waveguide 1
20h|e+3 p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
]:m>pI*z. %energy in waveguide 2
L8("1_ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
}YH@T]O} %energy in waveguide 3
l3dGe' for m3 = 1:1:M3 % Start space evolution
b1Bu5%bt,: s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
q] eSDRW s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
#-?pY"N, s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
]@)T] sca1 = fftshift(fft(s1)); % Take Fourier transform
m&(yx|a4+ sca2 = fftshift(fft(s2));
*&]x-p1m sca3 = fftshift(fft(s3));
SV*h9LL sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
k$1ya7-@ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
*$mDu,'8 sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
y1z<{'2x s3 = ifft(fftshift(sc3));
Z".mEF-b s2 = ifft(fftshift(sc2)); % Return to physical space
8@S7_x s1 = ifft(fftshift(sc1));
HL-zuZa`Ju end
@| kBc.(] p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
>Q':+|K} p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
Ej\EuX p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
ug*#rpb P1=[P1 p1/p10];
,b!!h]t P2=[P2 p2/p10];
'wB6- P3=[P3 p3/p10];
oxT..=- P=[P p*p];
72@lDY4cE end
e]R`B}vO figure(1)
CMn&1 plot(P,P1, P,P2, P,P3);
/Ud<4j- v).V&": 转自:
http://blog.163.com/opto_wang/