计算脉冲在非线性耦合器中演化的Matlab 程序 \c}_!.xj" ,1/O2aQ%\0 % This Matlab script file solves the coupled nonlinear Schrodinger equations of
W*S}^6ZT` % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
} I>6 8dS[ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
!q\MXS($#u % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
\ vn!SO7 ypU-/}Cf, %fid=fopen('e21.dat','w');
>[}lC7 z, N = 128; % Number of Fourier modes (Time domain sampling points)
B@cC'F#G M1 =3000; % Total number of space steps
j9gn7LS J =100; % Steps between output of space
/]j^a:#"6t T =10; % length of time windows:T*T0
]%M&pc3U T0=0.1; % input pulse width
DW(
/[jo\ MN1=0; % initial value for the space output location
&O
+?#3 dt = T/N; % time step
8;6j n = [-N/2:1:N/2-1]'; % Index
YI+ clh;%9 t = n.*dt;
n*A?>NV u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
Hjhgu= u20=u10.*0.0; % input to waveguide 2
:o~]FVf u1=u10; u2=u20;
UE9RrfdN U1 = u1;
;~D$rT U2 = u2; % Compute initial condition; save it in U
{zX]41T ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
e"oTlB w=2*pi*n./T;
o|:c{pwq g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
dG&^M".( L=4; % length of evoluation to compare with S. Trillo's paper
:HW| mqKd dz=L/M1; % space step, make sure nonlinear<0.05
/!Ay12lKE} for m1 = 1:1:M1 % Start space evolution
mR|L'[l u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
!3F3E8% u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
6am
g*=] ca1 = fftshift(fft(u1)); % Take Fourier transform
:FT x#cZ ca2 = fftshift(fft(u2));
(+yH c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
ziDvDu= c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
GY>G}bfh u2 = ifft(fftshift(c2)); % Return to physical space
@C-03`JWuK u1 = ifft(fftshift(c1));
NSawD.9mV if rem(m1,J) == 0 % Save output every J steps.
{N3&JL5\"E U1 = [U1 u1]; % put solutions in U array
{Qi J-[q U2=[U2 u2];
CvHE7H|-{ MN1=[MN1 m1];
3Fb9\2<H z1=dz*MN1'; % output location
&(7=NAQsE end
Gv[s86AP, end
pMHF u/|Pr hg=abs(U1').*abs(U1'); % for data write to excel
p}oGhO&= ha=[z1 hg]; % for data write to excel
1 | t1=[0 t'];
4#CHX^De hh=[t1' ha']; % for data write to excel file
X+1Mv %dlmwrite('aa',hh,'\t'); % save data in the excel format
Rh}}8 sv figure(1)
5?MaKNm } waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
]_BH"ng} figure(2)
2HUw^ *3 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
Ul_5"3ze (xfh 9=. 非线性超快脉冲耦合的数值方法的Matlab程序 ,,SV@y; V408uy-M 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
[
*Dj7zt: 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
#f [}a @U3:9~Q E!'6vDVC: Ur]/kij % This Matlab script file solves the nonlinear Schrodinger equations
jDb"|l % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
TjDtNE % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
JK`$/l|7 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
uu9IUqEq2 l?QA;9_R' C=1;
j]FK.G' M1=120, % integer for amplitude
l\F71pwSI M3=5000; % integer for length of coupler
,z<1:st]< N = 512; % Number of Fourier modes (Time domain sampling points)
3. @LAF dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
R#T
6] T =40; % length of time:T*T0.
2}=@n*8*d dt = T/N; % time step
dB6['z)2 n = [-N/2:1:N/2-1]'; % Index
*Y?oAVkz t = n.*dt;
&r.M~k
> ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
-#v1/L/= w=2*pi*n./T;
99.F'Gz g1=-i*ww./2;
%ufh g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
=&6sU{j* g3=-i*ww./2;
|.,]0CRg P1=0;
{nXygg
J P2=0;
?"*JV1 9 P3=1;
}toe'6 P=0;
d)S`.Q for m1=1:M1
$[}EV(#y p=0.032*m1; %input amplitude
gyMHC{l/B s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
j g//I<D s1=s10;
u7^(?"x s20=0.*s10; %input in waveguide 2
~|9VVeE s30=0.*s10; %input in waveguide 3
7UY4* j|[C s2=s20;
(8aj`> y s3=s30;
hf]m'5pb p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
%59uR}\ %energy in waveguide 1
]/kpEx p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
y+T[="W %energy in waveguide 2
;}iB9 Tl p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
"!D y[J %energy in waveguide 3
'AX5V-t for m3 = 1:1:M3 % Start space evolution
9Q^cE\j s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
l_/(J)|a s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
^P^%Q)QXl s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
@J&korU sca1 = fftshift(fft(s1)); % Take Fourier transform
W^H3 =hZ sca2 = fftshift(fft(s2));
*<W8j[? sca3 = fftshift(fft(s3));
/zt M' sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
PWyf3 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
CxeW5qc sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
(T0MWp 0 s3 = ifft(fftshift(sc3));
oWL_Hh%-f` s2 = ifft(fftshift(sc2)); % Return to physical space
5LB{b]w7m s1 = ifft(fftshift(sc1));
}mXYS|{ end
?!&%-R6* p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
t+}wTis p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
|bz%SB p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
3PGAUQR#"q P1=[P1 p1/p10];
^l|b>z"0ao P2=[P2 p2/p10];
6_4B! P3=[P3 p3/p10];
BH1h2OEe# P=[P p*p];
w+>+hq end
RzjUrt figure(1)
*9"x0bth plot(P,P1, P,P2, P,P3);
HB8s[]A:D Hl0"
zS[ 转自:
http://blog.163.com/opto_wang/