计算脉冲在非线性耦合器中演化的Matlab 程序 _wXT9`|3 ;40Z/#FI % This Matlab script file solves the coupled nonlinear Schrodinger equations of
r.)n>
% soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
50 w$PW % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
XOX$uLm % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
62nmm/c 0`zdj %fid=fopen('e21.dat','w');
t{UVX%b N = 128; % Number of Fourier modes (Time domain sampling points)
Q=!
lbW M1 =3000; % Total number of space steps
sDs.da#*2 J =100; % Steps between output of space
,7:GLkj T =10; % length of time windows:T*T0
QeF:s|[ T0=0.1; % input pulse width
r1F5'?NZ(0 MN1=0; % initial value for the space output location
G1it
3^*$ dt = T/N; % time step
l`~$cK! n = [-N/2:1:N/2-1]'; % Index
gK~Z Ch t = n.*dt;
. AA#
G u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
P'iX?+* u20=u10.*0.0; % input to waveguide 2
mvH}G8 u1=u10; u2=u20;
L+ew/I>: U1 = u1;
j&dCP@G U2 = u2; % Compute initial condition; save it in U
,Gy,bcv{ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
Fep@VkN w=2*pi*n./T;
K"[jrvZ= g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
Ng<ic L=4; % length of evoluation to compare with S. Trillo's paper
<zY#qFQ2 dz=L/M1; % space step, make sure nonlinear<0.05
(XR}U6^v] for m1 = 1:1:M1 % Start space evolution
/V0Put u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
X*#\JF4$i u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
}+lK'6 ca1 = fftshift(fft(u1)); % Take Fourier transform
/T
qbl^[ ca2 = fftshift(fft(u2));
%{'[S0 @Z c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
k6DJ(.n'%a c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
O.#Rr/+) u2 = ifft(fftshift(c2)); % Return to physical space
[Y@}{[q5 u1 = ifft(fftshift(c1));
i.^UkN{ if rem(m1,J) == 0 % Save output every J steps.
.+Q1h61$T U1 = [U1 u1]; % put solutions in U array
f-^*p U2=[U2 u2];
>9XG+f66E MN1=[MN1 m1];
m.6uLaD"!} z1=dz*MN1'; % output location
m; =S]3P* end
sAO/yG end
U(+QrC: hg=abs(U1').*abs(U1'); % for data write to excel
M`#g>~bI#R ha=[z1 hg]; % for data write to excel
&
:W6O)uY t1=[0 t'];
)s7 EhIP hh=[t1' ha']; % for data write to excel file
lpd~U 2& %dlmwrite('aa',hh,'\t'); % save data in the excel format
L})fYVX
figure(1)
P{s1NorKDh waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
(j:[<U figure(2)
k^JgCC+ waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
`6Q+N=k~Z 41B.ZE+*qd 非线性超快脉冲耦合的数值方法的Matlab程序 QHXpX9 e7iQG@i7 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
;E{@)X..| 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
F*z>B >{) IY~I=} {>64-bU VAheus % This Matlab script file solves the nonlinear Schrodinger equations
WSF$xC/~ % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
/Re67cMQ* % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
_;x` 6LM % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
7!o#pt7 ~yngH0S$[b C=1;
;eFV}DWW M1=120, % integer for amplitude
wko9tdC=U M3=5000; % integer for length of coupler
!}`[s2ji N = 512; % Number of Fourier modes (Time domain sampling points)
$rjm MSxi dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
9l[C&0w#\ T =40; % length of time:T*T0.
b*Hk}
!qH dt = T/N; % time step
j$u n = [-N/2:1:N/2-1]'; % Index
$^e_4]k t = n.*dt;
BD.l 5~: ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
pxbuZ9w2Q w=2*pi*n./T;
vPZ0?r_5W g1=-i*ww./2;
/ml+b8@ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
rCGKE`H g3=-i*ww./2;
_M>S =3w P1=0;
E^w0X,0XlE P2=0;
gpbdK? P3=1;
_+~jZ]o
N P=0;
J1r\Cp+h0 for m1=1:M1
<g&GIFE, p=0.032*m1; %input amplitude
g p9;I*! s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
E9.1~
) s1=s10;
PJKxh%J s20=0.*s10; %input in waveguide 2
(:+Wc^0 s30=0.*s10; %input in waveguide 3
t1#f*G5 s2=s20;
L]X Lv9J0 s3=s30;
s}^W2 p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
bL:+(/: %energy in waveguide 1
A6;[r #C p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
wqE2n %energy in waveguide 2
vXSpn71Jb p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
tQMz1$ %energy in waveguide 3
*MWI`=c for m3 = 1:1:M3 % Start space evolution
#Guwbg s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
p8CaD4bE s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
>^f]Lgp s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
#b&=CsW` sca1 = fftshift(fft(s1)); % Take Fourier transform
^sJp!hi4=) sca2 = fftshift(fft(s2));
Ej@N}r>X sca3 = fftshift(fft(s3));
li` sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
Hw#yw g sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
esv<b>`R sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
Pj^Ccd'>= s3 = ifft(fftshift(sc3));
Kna@K$6{w= s2 = ifft(fftshift(sc2)); % Return to physical space
.KYDYdoS' s1 = ifft(fftshift(sc1));
T< <N U"n end
MLmk=&d p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
H[/^&1P p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
X*r?@uK5 p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
bOlb P1=[P1 p1/p10];
fb!>@@9Z P2=[P2 p2/p10];
0w$1Yx~C P3=[P3 p3/p10];
*u34~v16, P=[P p*p];
k~1{|HxrE end
,v*\2oG3^ figure(1)
#/K71Y plot(P,P1, P,P2, P,P3);
(jh0cy}|] BLo=@C%w5 转自:
http://blog.163.com/opto_wang/