计算脉冲在非线性耦合器中演化的Matlab 程序 'HC4Q{b` m^ILcp!
% This Matlab script file solves the coupled nonlinear Schrodinger equations of
{{O1C~ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
V'9 k;SF % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
:!R+/5a % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
Z6Mh`:7 !rXyw`6N %fid=fopen('e21.dat','w');
$`uL^ hlj] N = 128; % Number of Fourier modes (Time domain sampling points)
OaEOk57%de M1 =3000; % Total number of space steps
#bGt%*Re p J =100; % Steps between output of space
lAoH@+dyA+ T =10; % length of time windows:T*T0
6l50IWj,T T0=0.1; % input pulse width
I|p(8R! MN1=0; % initial value for the space output location
mtHw! * dt = T/N; % time step
0iwx$u7[ n = [-N/2:1:N/2-1]'; % Index
!7_Q_h', t = n.*dt;
M[X& Q u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
i |C'_gw`n u20=u10.*0.0; % input to waveguide 2
S3 &L u1=u10; u2=u20;
3.8d" U1 = u1;
wp} PQw: U2 = u2; % Compute initial condition; save it in U
chxO*G ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
(pAGS{{ w=2*pi*n./T;
O)W1.]GMbf g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
B[8 L=4; % length of evoluation to compare with S. Trillo's paper
H1N%uk=kV dz=L/M1; % space step, make sure nonlinear<0.05
kMK-E<g for m1 = 1:1:M1 % Start space evolution
h_H$+!Nzb u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
,%Dn}mWu u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
2jA-y!(e ca1 = fftshift(fft(u1)); % Take Fourier transform
d':c ca2 = fftshift(fft(u2));
INi(G-!g c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
hv8V=Z'Q c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
*_@8 v? u2 = ifft(fftshift(c2)); % Return to physical space
]M#_o] u1 = ifft(fftshift(c1));
)p 2kx if rem(m1,J) == 0 % Save output every J steps.
HPT$)NeNc U1 = [U1 u1]; % put solutions in U array
?9.SwIxU& U2=[U2 u2];
R0AVAUG MN1=[MN1 m1];
.t$~>e
. z1=dz*MN1'; % output location
:Fu.S1j$ end
S }mqK|! end
g"^<LX- hg=abs(U1').*abs(U1'); % for data write to excel
$SA8$!: ha=[z1 hg]; % for data write to excel
HvLvSy1U
t1=[0 t'];
}GRZCX> hh=[t1' ha']; % for data write to excel file
6]1cy&SG %dlmwrite('aa',hh,'\t'); % save data in the excel format
a;8q7nC figure(1)
CM|?;PBuv
waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
dJ#mk5=
" figure(2)
5Z@OgR waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
GB&<+5t2 #+>8gq^5 非线性超快脉冲耦合的数值方法的Matlab程序 ===M/}r unY+/p $ 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
N D`?T
&PK 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
fq-e2MCX5 R9xhO! g
67;O(3 P;GRk6 % This Matlab script file solves the nonlinear Schrodinger equations
\jH^OXxb % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
u?,M`w0' % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
mO%F {' % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
z3>ldT RE6dN C=1;
HtFc+%= M1=120, % integer for amplitude
3V2dN)\ M3=5000; % integer for length of coupler
Okxuhzn>" N = 512; % Number of Fourier modes (Time domain sampling points)
v!~tX*q dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
a/p}
?!\ T =40; % length of time:T*T0.
qD!qSM dt = T/N; % time step
O1xK\ogv n = [-N/2:1:N/2-1]'; % Index
*5T^wZpj) t = n.*dt;
7\.{O$Q ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
GP<PU w=2*pi*n./T;
:Q]P=-Y8 g1=-i*ww./2;
N5K\h}'% g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
IPHZ~'M g3=-i*ww./2;
P]cC2L@Vbi P1=0;
'/O >#1 P2=0;
VkW N1A P3=1;
ykMdH: P=0;
J> Z.2 for m1=1:M1
o|`%>&jP p=0.032*m1; %input amplitude
z}.Q~4 f0D s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
W!jg s1=s10;
e)BU6m% s20=0.*s10; %input in waveguide 2
y).dw( s30=0.*s10; %input in waveguide 3
M1HGXdN* B s2=s20;
^L?2y/ s3=s30;
&dsXK~9M> p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
SB
x<-^ %energy in waveguide 1
(pv6V2i p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
qe[P'\]L %energy in waveguide 2
?Z(xu~^/ p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
BZP{{ %energy in waveguide 3
P!xN]or]u for m3 = 1:1:M3 % Start space evolution
i&mt- s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
8{4SaT.-Rm s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
*G&3NSM- s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
]iezwz`' sca1 = fftshift(fft(s1)); % Take Fourier transform
\DMZ M sca2 = fftshift(fft(s2));
_=YHO. sca3 = fftshift(fft(s3));
wG LSei-s sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
[cso$Tv sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
HRg< f= oz sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
AFdBf6/"i s3 = ifft(fftshift(sc3));
n?mV(? N s2 = ifft(fftshift(sc2)); % Return to physical space
4Ai#$SHLm s1 = ifft(fftshift(sc1));
zvOSQxGQ end
]@A31P4t| p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
~0V,B1a p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
jI!WE$dt p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
Q@ghQGn# P1=[P1 p1/p10];
w%?6s 3 P2=[P2 p2/p10];
jM[]Uh P3=[P3 p3/p10];
?#gYu%7DN P=[P p*p];
5:vy_e& end
kWZ/O figure(1)
eh /QFm
4 plot(P,P1, P,P2, P,P3);
d>hLnz1O DAVgP7h' 转自:
http://blog.163.com/opto_wang/