计算脉冲在非线性耦合器中演化的Matlab 程序 ?
i|LO h4M>k{ % This Matlab script file solves the coupled nonlinear Schrodinger equations of
?B4X&xf.D % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
Mg^3Y'{o % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
/@s(8{; % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
"g;}B"rG \G]vTK3 %fid=fopen('e21.dat','w');
llBW*4' N = 128; % Number of Fourier modes (Time domain sampling points)
\]t}N M1 =3000; % Total number of space steps
b;(BMO,( J =100; % Steps between output of space
M*jn8OE T =10; % length of time windows:T*T0
1FEY&rpR T0=0.1; % input pulse width
qc^qCGy!z MN1=0; % initial value for the space output location
ivl_= dt = T/N; % time step
h IUO=f n = [-N/2:1:N/2-1]'; % Index
u#34mg.. t = n.*dt;
mt3j$r{_ u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
&f>1/"lnd\ u20=u10.*0.0; % input to waveguide 2
:j#Fq
d[DF u1=u10; u2=u20;
}W R?n U1 = u1;
h)C`w'L U2 = u2; % Compute initial condition; save it in U
4ze4{a^ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Jro%zZle w=2*pi*n./T;
wn{DY
v7B g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
\>XkK<ye L=4; % length of evoluation to compare with S. Trillo's paper
.3T#:Hl dz=L/M1; % space step, make sure nonlinear<0.05
GCA?sFwo> for m1 = 1:1:M1 % Start space evolution
j%s:d(H` u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
};;6706a u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
A@ lY{e ca1 = fftshift(fft(u1)); % Take Fourier transform
?qjlWCV|e ca2 = fftshift(fft(u2));
W[tX%B c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
l+8G6?@]> c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
$5/lU
}To u2 = ifft(fftshift(c2)); % Return to physical space
lAPvphO u1 = ifft(fftshift(c1));
sv?Lk4_ if rem(m1,J) == 0 % Save output every J steps.
T]Eg9Y:+v U1 = [U1 u1]; % put solutions in U array
h wfKgsm U2=[U2 u2];
>)PcK MN1=[MN1 m1];
8L*P!j9`EY z1=dz*MN1'; % output location
dg]: JU end
RBzBR)@5 end
)`.'QW hg=abs(U1').*abs(U1'); % for data write to excel
S+(-k0 ha=[z1 hg]; % for data write to excel
(>Tq t1=[0 t'];
v=I 'rx hh=[t1' ha']; % for data write to excel file
n$T'gX#5 %dlmwrite('aa',hh,'\t'); % save data in the excel format
&ahZ_9Q figure(1)
ta 66AEc9 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
;4 ON figure(2)
2aUy1*aM waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
(AnM_s XZFM|=%X 非线性超快脉冲耦合的数值方法的Matlab程序 noa=wy g4 |s9RMD 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
&qP&=( $ 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
#{kwl|c .3.oan*i jQ s"8[=s #A2)]XvY % This Matlab script file solves the nonlinear Schrodinger equations
%kJ_o*" % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
g"iLhm`L % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
A<VNttgG % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
&u'$q
CcHf1
_CI C=1;
gOA M1=120, % integer for amplitude
5 5_#?vw M3=5000; % integer for length of coupler
!5P\5WF~Y N = 512; % Number of Fourier modes (Time domain sampling points)
M6P`~emX2 dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
v}$KlT T =40; % length of time:T*T0.
f|f9[h' dt = T/N; % time step
.;0?r9 n = [-N/2:1:N/2-1]'; % Index
crt
)}L8- t = n.*dt;
g=
ql 3N ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
{\Eqo4A5} w=2*pi*n./T;
i<*{Z~B g1=-i*ww./2;
F`$V H^%V g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
<"g ^V g3=-i*ww./2;
.*N,x0B( P1=0;
C[ ehw P2=0;
;:[!I ]E0 P3=1;
6mnj!p]3 P=0;
^hhJ6E_W for m1=1:M1
&ESE?{of) p=0.032*m1; %input amplitude
^nYS@ s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
EhkvC>y s1=s10;
#l6L7u0~wC s20=0.*s10; %input in waveguide 2
RY(\/W#$ s30=0.*s10; %input in waveguide 3
hDp
-,ag{ s2=s20;
,&;#$ b5 s3=s30;
]F5qXF5 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
8 ]N %energy in waveguide 1
,{ C p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
rTiW %energy in waveguide 2
Sxrbhnx p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
"0F =txduS %energy in waveguide 3
]}_@!F) for m3 = 1:1:M3 % Start space evolution
=#AeOqs( q s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
G] -$fz s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
(=d%Bn$6b s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
P~V0<$C sca1 = fftshift(fft(s1)); % Take Fourier transform
]OE{qXr{ sca2 = fftshift(fft(s2));
z:hY{/- sca3 = fftshift(fft(s3));
:h 1-i sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
%C_RBd sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
HG2i^y sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
h\k!X/ s3 = ifft(fftshift(sc3));
D6trqB s2 = ifft(fftshift(sc2)); % Return to physical space
/;t42
g9w s1 = ifft(fftshift(sc1));
7-"ml\z end
P#/k5]g p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
K<O1PrC p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
T-)Ur/qp p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
FqOV/B
/z2 P1=[P1 p1/p10];
85rXm*Df P2=[P2 p2/p10];
;?>xuC$ P3=[P3 p3/p10];
_7(>0GY P=[P p*p];
N4$!V}pp end
Iz/o|o]# figure(1)
iV!o)WvG,F plot(P,P1, P,P2, P,P3);
_L mDF8Q( / c1=`OJ 转自:
http://blog.163.com/opto_wang/