计算脉冲在非线性耦合器中演化的Matlab 程序 "=9L7.E) 69r<Z % This Matlab script file solves the coupled nonlinear Schrodinger equations of
Gnj|y?' % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
@(Ou;Uy % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
5 ah]E % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
#\@*C= bNY_V;7Kw` %fid=fopen('e21.dat','w');
yWFDGk N = 128; % Number of Fourier modes (Time domain sampling points)
5"^$3&) M1 =3000; % Total number of space steps
_hA p@?
M J =100; % Steps between output of space
`dn|nI2 T =10; % length of time windows:T*T0
J L`n12$m T0=0.1; % input pulse width
hM/|k0YV MN1=0; % initial value for the space output location
o}7`SYn dt = T/N; % time step
~e ]83? n = [-N/2:1:N/2-1]'; % Index
y!mjZR,& t = n.*dt;
MPT*[&\- u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
R BwI*~%g{ u20=u10.*0.0; % input to waveguide 2
(6>8Dt 9[ u1=u10; u2=u20;
I
r<5% U1 = u1;
!m'lOz U2 = u2; % Compute initial condition; save it in U
vitmG'|WG ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
j5G8IP_Wx w=2*pi*n./T;
{ >bw:^F g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
K\5@yqy5 L=4; % length of evoluation to compare with S. Trillo's paper
K.",=\53 dz=L/M1; % space step, make sure nonlinear<0.05
\;.\g6zX for m1 = 1:1:M1 % Start space evolution
yWsNG;> u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
R4]t D| u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
z6ArSLlZ ca1 = fftshift(fft(u1)); % Take Fourier transform
|.)oV;9 ca2 = fftshift(fft(u2));
2"c$#N c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
4nXS}bW f c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
D7olu29 u2 = ifft(fftshift(c2)); % Return to physical space
f,k'gM{K u1 = ifft(fftshift(c1));
=UM30
P/ if rem(m1,J) == 0 % Save output every J steps.
op/HZa U1 = [U1 u1]; % put solutions in U array
:hwZz2Dhi U2=[U2 u2];
l~!\<, ! MN1=[MN1 m1];
O!\P]W4r$ z1=dz*MN1'; % output location
(w-z~#< end
tTLD6# end
'_@Y hg=abs(U1').*abs(U1'); % for data write to excel
Jj8z ~3XnJ ha=[z1 hg]; % for data write to excel
.`)\GjDv t1=[0 t'];
fJH09:@^% hh=[t1' ha']; % for data write to excel file
~kD/dXt %dlmwrite('aa',hh,'\t'); % save data in the excel format
c'vxT<8fWW figure(1)
7(QRG\G# waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
R/Mwq#xUb figure(2)
"<Dn%r waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
e>#*$4tg \&NpVH,- 非线性超快脉冲耦合的数值方法的Matlab程序 3qXOsa7 zy"L%i 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
'u@
)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
D}>pl8ke~g 1j`-lD SsIy ;l +%OINMo.A % This Matlab script file solves the nonlinear Schrodinger equations
IgI*mDS&b % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
|h\e(_G\ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
+?w 7Nm` % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
&BY%<h0c rr>QG<i;G C=1;
X};m \Bz M1=120, % integer for amplitude
=;W"Pi;* M3=5000; % integer for length of coupler
w9rwuk N = 512; % Number of Fourier modes (Time domain sampling points)
mSp- dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
Hzcy' T =40; % length of time:T*T0.
1XSA3;ZEc dt = T/N; % time step
9z$]hl n = [-N/2:1:N/2-1]'; % Index
#v0"hFOH, t = n.*dt;
5x(`z
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
o]t6u .L w=2*pi*n./T;
Kfa7}f_ g1=-i*ww./2;
cv=nGFx6 g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
%0fF_OU g3=-i*ww./2;
1P.
W 34 P1=0;
MUhC6s\F P2=0;
d rnqX-E; P3=1;
X^r5su? P=0;
p(QB 5at for m1=1:M1
>6*"g{/ p=0.032*m1; %input amplitude
MqGF~h|+ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
]( V+ qj s1=s10;
M#LQz~E s20=0.*s10; %input in waveguide 2
3~z4#8= s30=0.*s10; %input in waveguide 3
A{iI,IFe s2=s20;
veFl0ILd s3=s30;
VUC p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
vA2@Db} %energy in waveguide 1
`zGK$,[% p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
F1JSf&8 %energy in waveguide 2
(#Z2 p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
BIEc4k5( %energy in waveguide 3
M>D 3NY[, for m3 = 1:1:M3 % Start space evolution
q>/#
P5V s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
JZQkr s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
S(9Xbw)T s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
R $HIJM sca1 = fftshift(fft(s1)); % Take Fourier transform
?v-IN sca2 = fftshift(fft(s2));
fu?5gzT+b sca3 = fftshift(fft(s3));
/e1m1 B sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
C7[ge& sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
%Fig`qX sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
X0O0Y>" s3 = ifft(fftshift(sc3));
;>QED s2 = ifft(fftshift(sc2)); % Return to physical space
F,Y@ s1 = ifft(fftshift(sc1));
AFcsbw end
*Dtwr p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
+(0Fab8g p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
] as_7 p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
!4GGq P1=[P1 p1/p10];
Ja>UcE29 P2=[P2 p2/p10];
T=35? P3=[P3 p3/p10];
["- pylhK P=[P p*p];
j!q5 Bc? end
jY
EB`& figure(1)
EF=.L{ plot(P,P1, P,P2, P,P3);
^wPKqu)^ '\\dh 转自:
http://blog.163.com/opto_wang/