计算脉冲在非线性耦合器中演化的Matlab 程序 JOeeU8C M@v.c;Lt % This Matlab script file solves the coupled nonlinear Schrodinger equations of
tW}'g:s % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
mGg+.PFsM % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
r0% D58 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
5D//*}b, `1IgzKL9 %fid=fopen('e21.dat','w');
$Ri; ^pZw[ N = 128; % Number of Fourier modes (Time domain sampling points)
a~y'RyA M1 =3000; % Total number of space steps
B>P{A7Q J =100; % Steps between output of space
&7tbI5na@ T =10; % length of time windows:T*T0
DT&@^$? T0=0.1; % input pulse width
5vnrA'BhBU MN1=0; % initial value for the space output location
0*{%=M dt = T/N; % time step
^v7gIC n = [-N/2:1:N/2-1]'; % Index
&`2)V;t t = n.*dt;
$X,D( u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
)irEM u20=u10.*0.0; % input to waveguide 2
JYHl,HH#z u1=u10; u2=u20;
~q25Yx9W@ U1 = u1;
((M>s&\y*Y U2 = u2; % Compute initial condition; save it in U
j3E7zRm] \ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
4ID5q~ w=2*pi*n./T;
Qj3EXb g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
:&."ttf= L=4; % length of evoluation to compare with S. Trillo's paper
#Ki[$bS~6 dz=L/M1; % space step, make sure nonlinear<0.05
L$M9w for m1 = 1:1:M1 % Start space evolution
!%%6dB@%t u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
m^;f(IK5 u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
)bscBj@ ca1 = fftshift(fft(u1)); % Take Fourier transform
/aZ`[m2 ca2 = fftshift(fft(u2));
WCixKYq c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
s`~IUNJ@P c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
'E""amIJ u2 = ifft(fftshift(c2)); % Return to physical space
ge8ZsaiU u1 = ifft(fftshift(c1));
draN0vf if rem(m1,J) == 0 % Save output every J steps.
9InVQCf2J U1 = [U1 u1]; % put solutions in U array
[Y|t]^M U2=[U2 u2];
\(2sW^fY MN1=[MN1 m1];
II{&{S'HU z1=dz*MN1'; % output location
VRB;$ end
P71Lqy)5}A end
c'yxWZEv hg=abs(U1').*abs(U1'); % for data write to excel
NqWdRU ha=[z1 hg]; % for data write to excel
E+;7>ja t1=[0 t'];
9~[Y-cpoi hh=[t1' ha']; % for data write to excel file
K J4.4Zq{c %dlmwrite('aa',hh,'\t'); % save data in the excel format
ePo}y])2 figure(1)
n/mG|)Xt waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
Q hO!Ma] figure(2)
]~3V}z,T* waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
61'XgkacDS =Jb>x#Y 非线性超快脉冲耦合的数值方法的Matlab程序 H"WprHe 8v%o," 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
6(ol1
(U 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
E hMNap}5" 1bX<$>x9u l!u_"I8j5 #S"nF@ % This Matlab script file solves the nonlinear Schrodinger equations
B^^#D0< % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
1p=]hC % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
c5GuM|*7 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
vyI!]p 11;MN C=1;
R8'RA%O9J M1=120, % integer for amplitude
g3y+&Y_ M3=5000; % integer for length of coupler
I
b5rqU\ N = 512; % Number of Fourier modes (Time domain sampling points)
j&qub_j"xX dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
TarY|P7_ T =40; % length of time:T*T0.
tY4;F\e2|A dt = T/N; % time step
[d]9Oa4 n = [-N/2:1:N/2-1]'; % Index
{R`[kt t = n.*dt;
i=2N;sAl ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
[/8%3 w=2*pi*n./T;
l+^*LqEW2 g1=-i*ww./2;
b d!Y\OD g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
d/~9&wLSb g3=-i*ww./2;
DSn_0D P1=0;
hp|YE'uYT P2=0;
L.JT[zOfb P3=1;
'}Z<h?9 P=0;
"3Y0`&:D for m1=1:M1
5`p.#
p=0.032*m1; %input amplitude
Slc\&Eb s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
}Jj}%XxKs s1=s10;
@f3E`8 s20=0.*s10; %input in waveguide 2
;
BHtCuY s30=0.*s10; %input in waveguide 3
a9Zq{Ysj s2=s20;
rjnrju+ s3=s30;
wN~_v-~*Q p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
5\VWC I %energy in waveguide 1
iDqoa\ p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
[ub e6 %energy in waveguide 2
sK?twg;D*| p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
|M;7>'YNC* %energy in waveguide 3
)zDCu` for m3 = 1:1:M3 % Start space evolution
}i&/G+_ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
<lJ345Q s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
>Cq<@$I2EB s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
a/xn'"eli sca1 = fftshift(fft(s1)); % Take Fourier transform
:?1Dko^ sca2 = fftshift(fft(s2));
?(_08O sca3 = fftshift(fft(s3));
SQ+Gvq%Q] sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
wi{3/ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
*MW\^PR? sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
'i|YlMFI g s3 = ifft(fftshift(sc3));
R[]Mdt< s2 = ifft(fftshift(sc2)); % Return to physical space
h^P#{W!e\ s1 = ifft(fftshift(sc1));
@gK?\URoT end
W: z;|FF p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
aV0"~5 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
B/Ws_Kv p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
uHRsFlw P1=[P1 p1/p10];
+k R4E23: P2=[P2 p2/p10];
N?`' /e P3=[P3 p3/p10];
>9Vn.S P=[P p*p];
N!tX<u~2 end
,64-1! figure(1)
-jmY)(\ plot(P,P1, P,P2, P,P3);
`N8O"UcoBo )NT*bLRPQ 转自:
http://blog.163.com/opto_wang/