计算脉冲在非线性耦合器中演化的Matlab 程序 I^[[*Bh*C ?}(B8^ % This Matlab script file solves the coupled nonlinear Schrodinger equations of
s(r4m/ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
{HFx+<JG % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
'LR|DS[Ne % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
,vAcri
97 bRr3:"=sE %fid=fopen('e21.dat','w');
h05<1>?| N = 128; % Number of Fourier modes (Time domain sampling points)
x0lAJaG M1 =3000; % Total number of space steps
PZI6{KOis J =100; % Steps between output of space
?P/73p T =10; % length of time windows:T*T0
IsDwa qd| T0=0.1; % input pulse width
ZKM@U?PK MN1=0; % initial value for the space output location
F3L+X5D.yu dt = T/N; % time step
t/l<X]o n = [-N/2:1:N/2-1]'; % Index
]zn3nhBI t = n.*dt;
yq[@Cw u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
Lyit`j~yH u20=u10.*0.0; % input to waveguide 2
~
ea K]| u1=u10; u2=u20;
8\jsGN.$JZ U1 = u1;
l hST%3Ld U2 = u2; % Compute initial condition; save it in U
.hnq>R\ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
3$.#\*s_4 w=2*pi*n./T;
RiFUa
$ g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
$VF$Ok> L=4; % length of evoluation to compare with S. Trillo's paper
kdaq_O:s dz=L/M1; % space step, make sure nonlinear<0.05
qd<I;*WV for m1 = 1:1:M1 % Start space evolution
EK&0Cn3z u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
wJ"]H!r0 u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
6Cfsh<]b ca1 = fftshift(fft(u1)); % Take Fourier transform
"2p\/VfA ca2 = fftshift(fft(u2));
p|@#IoA/e c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
l=x(
c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
7
D{% u2 = ifft(fftshift(c2)); % Return to physical space
+O.qYX u1 = ifft(fftshift(c1));
|kTq
&^$ if rem(m1,J) == 0 % Save output every J steps.
RE4WD9n U1 = [U1 u1]; % put solutions in U array
(H\ `/%Bp U2=[U2 u2];
f.$*9Fkw MN1=[MN1 m1];
qW'L}x z1=dz*MN1'; % output location
}6=?
zs} end
#%w)w R3 end
Z]x6np hg=abs(U1').*abs(U1'); % for data write to excel
1g j GaC ha=[z1 hg]; % for data write to excel
+cKOIMu9 t1=[0 t'];
7p1B"% hh=[t1' ha']; % for data write to excel file
9ExI, %dlmwrite('aa',hh,'\t'); % save data in the excel format
&I%E8E figure(1)
_dmG#_1 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
5:C>:pA V figure(2)
a6O <t;& waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
) .KMZ] ,eWLig
非线性超快脉冲耦合的数值方法的Matlab程序 DIJmISk @th94tk, 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
drk BW}_ 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
upX@8WxR _pDfPLlY& D wr 9}Z-] *u",-n % This Matlab script file solves the nonlinear Schrodinger equations
%(W8WLz} % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
Rjv;[ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
[;4;.V % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
`xx3JQv[ @|bJMi C=1;
cbs ; M1=120, % integer for amplitude
'@Yp@
_ M3=5000; % integer for length of coupler
HFlExau N = 512; % Number of Fourier modes (Time domain sampling points)
Tku6X/LF dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
WW>m`RU` T =40; % length of time:T*T0.
~"<^4h dt = T/N; % time step
%QEyvl4 n = [-N/2:1:N/2-1]'; % Index
El: @l% t = n.*dt;
1iNMgA ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
9*huO# w=2*pi*n./T;
|\/\FK]?] g1=-i*ww./2;
1N:~5S}s> g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
6(uZn= g3=-i*ww./2;
M ?AX:0 P1=0;
/oLY\>pD P2=0;
Nu\<Xr8 P3=1;
}`%ks P=0;
/y6f~F for m1=1:M1
1uCF9P
ai p=0.032*m1; %input amplitude
3HW&\:q5'M s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
D.|r
[c s1=s10;
#NYHwO<0- s20=0.*s10; %input in waveguide 2
}L&LtW{X s30=0.*s10; %input in waveguide 3
}/,Rp/+7] s2=s20;
VaGQre s3=s30;
nc\2A>f` p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
Li"+` %energy in waveguide 1
9I;~P & p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
4*Gv0#dga %energy in waveguide 2
~G-W|> p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
TA2ETvz^ %energy in waveguide 3
&[_@f# for m3 = 1:1:M3 % Start space evolution
~!Nw]lb! s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
Xo]2iQy s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
S' kgpF"bm s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
?6hd(^ sca1 = fftshift(fft(s1)); % Take Fourier transform
0@{0#W3R sca2 = fftshift(fft(s2));
u@`a~ sca3 = fftshift(fft(s3));
h]+;"v6 / sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
5]upfC6 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
w6)Q5H53) sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Yf~Kzv1]* s3 = ifft(fftshift(sc3));
lX)AbK]nb s2 = ifft(fftshift(sc2)); % Return to physical space
3\
,t_6} s1 = ifft(fftshift(sc1));
,\c V,$ end
t[|t0y8 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
HGh
-rEh p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
NsSZ?ky p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
_aF8Us P1=[P1 p1/p10];
ir>h3Zk P2=[P2 p2/p10];
N3aqNRwlk P3=[P3 p3/p10];
,aGIq. *v P=[P p*p];
xkiiQs) end
wy#>Aq figure(1)
79@CO6 plot(P,P1, P,P2, P,P3);
oz)4YBf 1"75+Q>D 转自:
http://blog.163.com/opto_wang/