计算脉冲在非线性耦合器中演化的Matlab 程序 w[XW>4xK
Z6I!4K
% This Matlab script file solves the coupled nonlinear Schrodinger equations of 4d O>L"
% soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
eUl[gHP
% Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear ^,3 >}PU
% pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 IKt9=Tx
;iEqa"gO
%fid=fopen('e21.dat','w'); =o {`vv
N = 128; % Number of Fourier modes (Time domain sampling points) "3K0 wR5
M1 =3000; % Total number of space steps F~:5/-zs
J =100; % Steps between output of space &8N\
6K=
T =10; % length of time windows:T*T0 :?,&u,8
T0=0.1; % input pulse width ,F1$Of/'@\
MN1=0; % initial value for the space output location `JC!uc
dt = T/N; % time step WJ%b9{<
n = [-N/2:1:N/2-1]'; % Index N4Ym[l
t = n.*dt; -Bc.<pFqp
u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 [4gv_g
u20=u10.*0.0; % input to waveguide 2 9X-DR
u1=u10; u2=u20; _T1e##Sq,
U1 = u1; T@L^RaPX
U2 = u2; % Compute initial condition; save it in U Sdn]
f4
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. :=/DF
w=2*pi*n./T; ~=71){4A
g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T `hbM2cM
L=4; % length of evoluation to compare with S. Trillo's paper U|>Js!$
dz=L/M1; % space step, make sure nonlinear<0.05 W uQdz&s>
for m1 = 1:1:M1 % Start space evolution _*+M'3&=
u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS Xd4~N:
u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; tlW}lN}
ca1 = fftshift(fft(u1)); % Take Fourier transform uJ%ql5XDV
ca2 = fftshift(fft(u2)); }"szL=s
c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation >uVG]
c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift d00r&Mc
u2 = ifft(fftshift(c2)); % Return to physical space u+]zi"k^s
u1 = ifft(fftshift(c1)); , v R4x:W
if rem(m1,J) == 0 % Save output every J steps. Aam2Y,B
U1 = [U1 u1]; % put solutions in U array M|\XFO
U2=[U2 u2]; y==x
MN1=[MN1 m1]; {BF$N#7
z1=dz*MN1'; % output location <fP|<>s$@1
end =lzjMRX(?
end %rf<YZ.\
hg=abs(U1').*abs(U1'); % for data write to excel 7 `|- K
ha=[z1 hg]; % for data write to excel a+Z/=YUR
t1=[0 t']; H.YntFtD'
hh=[t1' ha']; % for data write to excel file s}5;)>3~@
%dlmwrite('aa',hh,'\t'); % save data in the excel format gG#M-2P
figure(1) kw!! 5U;7
waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn Tfj%Sb,zM
figure(2) d
hh`o\$
waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn qLcs)&}/A
[z/OY&kF
非线性超快脉冲耦合的数值方法的Matlab程序 ,Q^.SHP8
i`X/d=
在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 -?j'<g0
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 l{kum2DT
%kF6y_h`
R+P1 +5
SoCa_9*X
% This Matlab script file solves the nonlinear Schrodinger equations d^w6_
% for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of BYRf MtT@+
% Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear P#iBwmwN+.
% pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 ^W;\faG
aCQAh[T
C=1; oh|Q&R
M1=120, % integer for amplitude %?K'egkp
M3=5000; % integer for length of coupler <"6}C)G
N = 512; % Number of Fourier modes (Time domain sampling points) e~xN[Q\0]
dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. 6?r}bs6Msx
T =40; % length of time:T*T0. &S/KR$^ %
dt = T/N; % time step h^cM#L^B
n = [-N/2:1:N/2-1]'; % Index "HlT-0F
t = n.*dt; ]5wc8Kh"
ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. $)6y:t"
w=2*pi*n./T; usU5q>1
g1=-i*ww./2; l1nrJm8
g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; jruwdm^
g3=-i*ww./2; WS4Ja$*
P1=0; !ouJ3Jn
P2=0; ht)J#Di
P3=1; Ub3^Js!b%
P=0; uvi+#4~G
for m1=1:M1 ApR>b%
p=0.032*m1; %input amplitude .O@T#0&=_
s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 4 1q|R[js!
s1=s10; lx(kbSxF
s20=0.*s10; %input in waveguide 2 ("?V|
s30=0.*s10; %input in waveguide 3 PCtf&U