计算脉冲在非线性耦合器中演化的Matlab 程序 C ?aa)H %u*HNo % This Matlab script file solves the coupled nonlinear Schrodinger equations of
O
_^Y*! % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
AXPdgo6 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
XlxM.;i0H % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
Xcc i)",! zQsW*)L %fid=fopen('e21.dat','w');
ce1U}">11 N = 128; % Number of Fourier modes (Time domain sampling points)
H :`H4S} M1 =3000; % Total number of space steps
xc1-($Q, J =100; % Steps between output of space
b'(Hwc\ t T =10; % length of time windows:T*T0
f.ws\^v% T0=0.1; % input pulse width
1,pPLc( MN1=0; % initial value for the space output location
8MBvp* dt = T/N; % time step
}?,Eb~q n = [-N/2:1:N/2-1]'; % Index
Lz`_&&6 t = n.*dt;
B3&ETi5NTU u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
(iu IeJ^Z u20=u10.*0.0; % input to waveguide 2
,TQ;DxB}=E u1=u10; u2=u20;
A=BT2j'l) U1 = u1;
0
TOw4pC U2 = u2; % Compute initial condition; save it in U
}_9yemP ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
x UTlM w=2*pi*n./T;
VI8/@A1Gv g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
.;%`I L=4; % length of evoluation to compare with S. Trillo's paper
E5t
/-4 dz=L/M1; % space step, make sure nonlinear<0.05
*30T$_PiX| for m1 = 1:1:M1 % Start space evolution
Eyg F,>.4 u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
kntULI$` u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
UZ7ukn- ca1 = fftshift(fft(u1)); % Take Fourier transform
OBnvY2)Ri ca2 = fftshift(fft(u2));
cjf_,x c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
~p\r( B7G c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
n<DZb`/uHZ u2 = ifft(fftshift(c2)); % Return to physical space
+Sg+% 8T u1 = ifft(fftshift(c1));
W%<z|
if rem(m1,J) == 0 % Save output every J steps.
}n?D#Pk, U1 = [U1 u1]; % put solutions in U array
>ToI$~84 U2=[U2 u2];
wo\O0?d3{ MN1=[MN1 m1];
3Hh u]5 z1=dz*MN1'; % output location
lLNI5C end
2mfG:^^c end
GT-ONwVDq hg=abs(U1').*abs(U1'); % for data write to excel
hGU 3DKHT ha=[z1 hg]; % for data write to excel
NdM \RD_R t1=[0 t'];
FdS'0#$ hh=[t1' ha']; % for data write to excel file
(iY2d_FQ[ %dlmwrite('aa',hh,'\t'); % save data in the excel format
]1|OQYG figure(1)
B1z7r0Rm, waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
eY3<LVAX figure(2)
%H=^U8WB waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
C@9K`N[* !>6`+$=U 非线性超快脉冲耦合的数值方法的Matlab程序 !s[gv1 km6O3>p5r 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
qDjH^f 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
Bh()?{q I\('b9"* |uM(A~? Ba9"IXKH % This Matlab script file solves the nonlinear Schrodinger equations
%=i/MFGX % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
|5\:
E}1 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
WM GiV % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
~!'T!g%C @g1T??h C=1;
;tfGhHpQn M1=120, % integer for amplitude
hGo/Ve+@ M3=5000; % integer for length of coupler
`i6q\-12n N = 512; % Number of Fourier modes (Time domain sampling points)
~?KbpB| dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
b:x*Hjf T =40; % length of time:T*T0.
_`xhP-,`S dt = T/N; % time step
)H%RwV# n = [-N/2:1:N/2-1]'; % Index
`k3sl
0z% t = n.*dt;
-8&P1jrI ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
gg$:U w=2*pi*n./T;
OQ4rJ#b g1=-i*ww./2;
2Kw i4R g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
/B5rWJ2AS g3=-i*ww./2;
+A2}@k P1=0;
phy:G}F6% P2=0;
z#+Sf. P3=1;
EP6@5PNZ P=0;
k(_^Lq f- for m1=1:M1
aa\?k\h'7X p=0.032*m1; %input amplitude
ab*O7v s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
|S3wCG s1=s10;
6x@4gPy[ s20=0.*s10; %input in waveguide 2
\|$GB U s30=0.*s10; %input in waveguide 3
slV]CXW)t s2=s20;
LEY k s3=s30;
U6~79Hnt p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
x6
h53R %energy in waveguide 1
O,0j+1? p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
C59H|
S %energy in waveguide 2
S,RC;D7 p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
-nnAe
F %energy in waveguide 3
+xBM\Dz8 for m3 = 1:1:M3 % Start space evolution
/mnV$+BE s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
pYX!l:hk s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
gHVD,Jr s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
6jz~q~I sca1 = fftshift(fft(s1)); % Take Fourier transform
8lF:70wia sca2 = fftshift(fft(s2));
r1.OLn?C sca3 = fftshift(fft(s3));
MG74,D.f sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
='<*mT< sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
je=XZ's,i~ sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Q$~_'I7~Mz s3 = ifft(fftshift(sc3));
}dG>_/3 s2 = ifft(fftshift(sc2)); % Return to physical space
$H1igYc s1 = ifft(fftshift(sc1));
Tnb5tHjnh end
i/F].Sag p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
&u~%5; p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
xWKUti i p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
>@q4Uez P1=[P1 p1/p10];
:bz;_DZP P2=[P2 p2/p10];
}*56DX P3=[P3 p3/p10];
~0Mw\p%} P=[P p*p];
JO\KTWtjO end
ilFS9A3P figure(1)
T_~xDQ` v plot(P,P1, P,P2, P,P3);
;ZR^9%+y9 H;RgYu2J 转自:
http://blog.163.com/opto_wang/