计算脉冲在非线性耦合器中演化的Matlab 程序 ,^IZ[D>u) dzv,)X % This Matlab script file solves the coupled nonlinear Schrodinger equations of
<9@]| % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
+81+4{* % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
vYt:}$AE % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
8rG&CxI rDx],O _ %fid=fopen('e21.dat','w');
o&F.mYnqX N = 128; % Number of Fourier modes (Time domain sampling points)
XX[Wwt M1 =3000; % Total number of space steps
j_WF38o J =100; % Steps between output of space
qp_ `Fj: T =10; % length of time windows:T*T0
$}UJs <-F T0=0.1; % input pulse width
YlcF-a MN1=0; % initial value for the space output location
N
evvA(M dt = T/N; % time step
q\HBAry n = [-N/2:1:N/2-1]'; % Index
6-X?uaY)os t = n.*dt;
E)_!Hi0<s u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
qCkg\)Ks5I u20=u10.*0.0; % input to waveguide 2
[;#.DH] u1=u10; u2=u20;
4"X>_Nt6 U1 = u1;
,sJfMY U2 = u2; % Compute initial condition; save it in U
=i5:*J ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
|AfQ_iT6c w=2*pi*n./T;
?{z${ bD g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
z57papo L=4; % length of evoluation to compare with S. Trillo's paper
0?Wf\7 dz=L/M1; % space step, make sure nonlinear<0.05
i|,A1c"* for m1 = 1:1:M1 % Start space evolution
0o=)&%G u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
:lQjy@J u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
OK J%M]< ca1 = fftshift(fft(u1)); % Take Fourier transform
%y7wF'_Y ca2 = fftshift(fft(u2));
kJeOlO[ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
5)v^
cR?& c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
K ':pU1 u2 = ifft(fftshift(c2)); % Return to physical space
WblV`"~e u1 = ifft(fftshift(c1));
r~2@#gTbl if rem(m1,J) == 0 % Save output every J steps.
KC-aLq/ U1 = [U1 u1]; % put solutions in U array
D&m"~wI U2=[U2 u2];
f EiEfu MN1=[MN1 m1];
!cq|g z1=dz*MN1'; % output location
446hr zW>@ end
.F3LA6se end
:::f,aCAu hg=abs(U1').*abs(U1'); % for data write to excel
/"{ ,m! ha=[z1 hg]; % for data write to excel
Odtck9L t1=[0 t'];
gO%i5 hh=[t1' ha']; % for data write to excel file
,UZE;lXJ'Q %dlmwrite('aa',hh,'\t'); % save data in the excel format
>`|uc figure(1)
?HyioLO waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
a4.:
i figure(2)
'htA! KHF waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
9qy 9 vEp8Hc 非线性超快脉冲耦合的数值方法的Matlab程序 GWZXRUc ?N*@o. 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
MNmQ%R4jRN 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
QGj5\{E_ 64>[pZF8 "wC5hj] 8Xzx;-&4 % This Matlab script file solves the nonlinear Schrodinger equations
I3$vw7}5Y % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
lFV|GJ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
>qvD39w % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
gj;G:;1m ~ A|*]0, C=1;
5o ^=~ M1=120, % integer for amplitude
#R~NR8(z M3=5000; % integer for length of coupler
:|Nbk58 N = 512; % Number of Fourier modes (Time domain sampling points)
L5uI31 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
;l?(VqX_E T =40; % length of time:T*T0.
<!(n5y_ dt = T/N; % time step
^ 6|"=+cO\ n = [-N/2:1:N/2-1]'; % Index
H=RV M t = n.*dt;
=e/4Gs0* ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
^v5hr>m w=2*pi*n./T;
)9Ojvp=#r: g1=-i*ww./2;
DkKD~ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
}jgAV g3=-i*ww./2;
GnaVI P1=0;
M':.b+xN P2=0;
B9:0|i!!A` P3=1;
becQ5w/~ P=0;
PW4Wn`u for m1=1:M1
O;?~#E<6w p=0.032*m1; %input amplitude
c6)zx
b s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
k ,(:[3J s1=s10;
B[X6AQj}d s20=0.*s10; %input in waveguide 2
d`7] reh s30=0.*s10; %input in waveguide 3
3*JybMo" s2=s20;
(Fd4Gw<sq s3=s30;
5&@ U T p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
4344PBj %energy in waveguide 1
rep"xV&|>o p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
Z5-'|h$| %energy in waveguide 2
4O^1gw p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
6
74X)hB %energy in waveguide 3
!P3|T\|]+ for m3 = 1:1:M3 % Start space evolution
:|3C-+[ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
$?{zV$r1 s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
%BLKB%5 s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
QjU"|$ sca1 = fftshift(fft(s1)); % Take Fourier transform
>C3 9`1 sca2 = fftshift(fft(s2));
N&.p\T&t sca3 = fftshift(fft(s3));
e90z(EF?0 sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
L1i> %5:g sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
vy?YA- sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
cEu98nP s3 = ifft(fftshift(sc3));
EtGr&\, s2 = ifft(fftshift(sc2)); % Return to physical space
Mv=;+?z! s1 = ifft(fftshift(sc1));
\RO Sd end
V= PoQ9d p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
m
0PF"( p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
`<~P> p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
rID]!7~ P1=[P1 p1/p10];
p2^OQK P2=[P2 p2/p10];
[?*^&[ P3=[P3 p3/p10];
IPR396J+- P=[P p*p];
>,vuC4v- end
jqedHnx figure(1)
1j,Y plot(P,P1, P,P2, P,P3);
<~w#sIh =x>k:l~s 转自:
http://blog.163.com/opto_wang/