计算脉冲在非线性耦合器中演化的Matlab 程序 9c 6=[3)V
}=U\v'%m % This Matlab script file solves the coupled nonlinear Schrodinger equations of
Lh}he:k+ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
')BQ 0sg % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
_W;u Qg'] % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
!o@-kl ;Y"J j %fid=fopen('e21.dat','w');
EY>A(
N = 128; % Number of Fourier modes (Time domain sampling points)
=N=,;<6%A M1 =3000; % Total number of space steps
`G'V9Xs( J =100; % Steps between output of space
Ur`v*LT}~ T =10; % length of time windows:T*T0
;Gi w7a) T0=0.1; % input pulse width
^{s)`j'I* MN1=0; % initial value for the space output location
^Z*_@A _v dt = T/N; % time step
B$bsh. n = [-N/2:1:N/2-1]'; % Index
v%1# y5 t = n.*dt;
]HRZ9oP u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
; H3kb
+ u20=u10.*0.0; % input to waveguide 2
g5E]o) u1=u10; u2=u20;
p})&Zl)V U1 = u1;
$\bH5|Hk] U2 = u2; % Compute initial condition; save it in U
oI>;O# ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
4=9F1[ w=2*pi*n./T;
I$Z"o9" g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
Rww KPE L=4; % length of evoluation to compare with S. Trillo's paper
uk1IT4+ dz=L/M1; % space step, make sure nonlinear<0.05
K)qmJ-Gub for m1 = 1:1:M1 % Start space evolution
!-QKh aY u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
C?B7xK u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
y|p:^41Ro ca1 = fftshift(fft(u1)); % Take Fourier transform
V><P` ca2 = fftshift(fft(u2));
~ e"^-x c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
DGU$3w c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
0`x<sjG\q u2 = ifft(fftshift(c2)); % Return to physical space
WDZEnauE u1 = ifft(fftshift(c1));
<W?,n% if rem(m1,J) == 0 % Save output every J steps.
78X;ZMY U1 = [U1 u1]; % put solutions in U array
xWD wg@ P U2=[U2 u2];
jk|0 <-3 MN1=[MN1 m1];
E`i;9e'S z1=dz*MN1'; % output location
?832#a?FZ; end
>fjf]
6 end
b#P8Je`;9 hg=abs(U1').*abs(U1'); % for data write to excel
hE=cgO`QU ha=[z1 hg]; % for data write to excel
j'7FTVmJ t1=[0 t'];
+`[$w<I hh=[t1' ha']; % for data write to excel file
os2yiF", %dlmwrite('aa',hh,'\t'); % save data in the excel format
%B~`bUHjq figure(1)
!XFN/-Q , waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
]\jhtC=2 figure(2)
,^+3AT waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
F/!C=nS $/D@=Pkc 非线性超快脉冲耦合的数值方法的Matlab程序 9A6ly9DIS 89L-k%R 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
ZK13[_@9 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
sOHh&e H[Qh* pq2 >uQ!B/C! Yux7kD\c % This Matlab script file solves the nonlinear Schrodinger equations
DF|qNX % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
9oaq%Sf % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
iBZ+gsSP % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
'aCnj8B }x%"Oq|2]x C=1;
c`iSe$eS M1=120, % integer for amplitude
o$Jk27 M3=5000; % integer for length of coupler
/aK },+ N = 512; % Number of Fourier modes (Time domain sampling points)
i P/I% D dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
{!-w|&bF T =40; % length of time:T*T0.
eo@:@O+bm dt = T/N; % time step
{}>"f]3 n = [-N/2:1:N/2-1]'; % Index
!Zs;m`j&9 t = n.*dt;
LIR2B"3F ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
UP,(zKTA w=2*pi*n./T;
fxc~5~$> g1=-i*ww./2;
i1/FNem g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
^m5{:\
Xk g3=-i*ww./2;
0AaN P1=0;
Y(&phv& P2=0;
Oy H: P3=1;
M]6=Rxq1:E P=0;
]qXfgc for m1=1:M1
s&c^Wr p=0.032*m1; %input amplitude
x[)S3UJ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
BkIvoW_ s1=s10;
-5E<BmM s20=0.*s10; %input in waveguide 2
K[ylyQ1 s30=0.*s10; %input in waveguide 3
x{+rx. s2=s20;
2)U3/TNe s3=s30;
(Q\w4?ci p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
<1hwXo %energy in waveguide 1
R
z[- p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
)of_"gZ$3A %energy in waveguide 2
u'=#~'6 p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
z9VQsC'K %energy in waveguide 3
3Hq0\Y"Y for m3 = 1:1:M3 % Start space evolution
xvgIYc{ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
eNXpRvY s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
1Ce:<.99B s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
S;CT:kG6Y{ sca1 = fftshift(fft(s1)); % Take Fourier transform
mNV4"lNR sca2 = fftshift(fft(s2));
X-t4irZ) sca3 = fftshift(fft(s3));
Ir]b.6B sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
zO!`sPP sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
u<+;]8[o sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
AjZT- Q0L s3 = ifft(fftshift(sc3));
|Q7Ch]G s2 = ifft(fftshift(sc2)); % Return to physical space
Z-:$)0f s1 = ifft(fftshift(sc1));
uz*C`T0:rj end
;7qk9rz4 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
YXBS!89m p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
h; {?z p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
a8dR. P1=[P1 p1/p10];
:CH'Bt4< P2=[P2 p2/p10];
;&[0 h) P3=[P3 p3/p10];
2y,~i;;_ P=[P p*p];
gs9f2t end
J :, figure(1)
[J:vSt plot(P,P1, P,P2, P,P3);
+L_.XToq- <KJ18/ 转自:
http://blog.163.com/opto_wang/