计算脉冲在非线性耦合器中演化的Matlab 程序 M,9f}V) }Ias7d?re % This Matlab script file solves the coupled nonlinear Schrodinger equations of
[[0u|`T/ % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
d#3E'8 % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
f>_' ]eM% % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
odpjEeQC q vGkTE %fid=fopen('e21.dat','w');
KP]{=~( N = 128; % Number of Fourier modes (Time domain sampling points)
?,x3*'-( M1 =3000; % Total number of space steps
0=KyupwXC J =100; % Steps between output of space
w+3-j T =10; % length of time windows:T*T0
*U^7MU0 T0=0.1; % input pulse width
s(Llz]E~ZX MN1=0; % initial value for the space output location
%FO#j 6 dt = T/N; % time step
/q >1X!Z n = [-N/2:1:N/2-1]'; % Index
*5|q_K
Pt t = n.*dt;
aRF}FE,u u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
z7g=L@ u20=u10.*0.0; % input to waveguide 2
2i_k$- u1=u10; u2=u20;
S U$U U1 = u1;
\$[S=&E U2 = u2; % Compute initial condition; save it in U
-mK;f$X ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
<C,lHt w=2*pi*n./T;
zU,Qph
,< g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
)> |x 2q L=4; % length of evoluation to compare with S. Trillo's paper
6Z3L=j dz=L/M1; % space step, make sure nonlinear<0.05
o&"nF+, for m1 = 1:1:M1 % Start space evolution
f+Ht u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
-9z!fCu3 u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
=Hwlo! ca1 = fftshift(fft(u1)); % Take Fourier transform
m<uBRI*I ca2 = fftshift(fft(u2));
'9d]
B^)F c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
w4e(p 3 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
%ryYa u2 = ifft(fftshift(c2)); % Return to physical space
aaODj> u1 = ifft(fftshift(c1));
qt!0#z8 if rem(m1,J) == 0 % Save output every J steps.
]3iQpL U1 = [U1 u1]; % put solutions in U array
Zw<\^1 U2=[U2 u2];
E2~&GkU.UN MN1=[MN1 m1];
%^CoWbU z1=dz*MN1'; % output location
XIJW$CY end
9(
"<NB0y end
RO+N>Wkt hg=abs(U1').*abs(U1'); % for data write to excel
J}'a|a@bk ha=[z1 hg]; % for data write to excel
a08`h.dyN t1=[0 t'];
qmx4hs8sh hh=[t1' ha']; % for data write to excel file
ic(`E v %dlmwrite('aa',hh,'\t'); % save data in the excel format
;Wu6f"+Y# figure(1)
S)$iHBx{ waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
&nyJ :? figure(2)
~ '/Yp8( waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
)eaEc9o> 51&K 非线性超快脉冲耦合的数值方法的Matlab程序 14
Toi >q7/zl 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
+1o4l i 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
$\A=J \x9.[?;=e -)LiL sOUQd-!" % This Matlab script file solves the nonlinear Schrodinger equations
VW/ICX~"d % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
@nOj6b % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
Ufr,6IX % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
U8gf_R' r#X6jU C=1;
P/XCaj3a[ M1=120, % integer for amplitude
]5Mq^@mD' M3=5000; % integer for length of coupler
+9!=pRq N = 512; % Number of Fourier modes (Time domain sampling points)
j| Hyv{sM dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
FZ~^cK9g: T =40; % length of time:T*T0.
J':x]_; dt = T/N; % time step
6k- n = [-N/2:1:N/2-1]'; % Index
Q^!x8oUF t = n.*dt;
zD,K_HicI ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
O; #qG/b1 w=2*pi*n./T;
WAqH*LB g1=-i*ww./2;
V|W[>/ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
64R~ $km g3=-i*ww./2;
sRkPXzK P1=0;
Yw_^]:~ P2=0;
EwX:^1f P3=1;
|Jpi|'
P=0;
aF]cEe for m1=1:M1
F9PXQD( p=0.032*m1; %input amplitude
dlJc~| s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
#m;|QWW s1=s10;
9T;DFUM s20=0.*s10; %input in waveguide 2
/=IBK` s30=0.*s10; %input in waveguide 3
%("WoBPH` s2=s20;
Q8 s3=s30;
_k O<|ev p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
RoYwZX~ %energy in waveguide 1
}LTy Xo p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
Nm4
h %energy in waveguide 2
6s(.ul p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
8RaRXnJ %energy in waveguide 3
`m+o^!SGe for m3 = 1:1:M3 % Start space evolution
'LW~_\ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
~A$y-Dt'
s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
m4~>n( s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
/n-!dXi sca1 = fftshift(fft(s1)); % Take Fourier transform
+b_o2'' sca2 = fftshift(fft(s2));
_oAWj]~rO sca3 = fftshift(fft(s3));
~b;u1;ne sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
WinwPn+9 sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
EaN1xb(DYa sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
=+ALh- s3 = ifft(fftshift(sc3));
>& `;@ZOH s2 = ifft(fftshift(sc2)); % Return to physical space
$*q^7ME s1 = ifft(fftshift(sc1));
9gQ
]!Oq end
:TkR]bhm p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
2C[xrZa^ p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
/0z#0gNp p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
&<oJw TC P1=[P1 p1/p10];
kxWcWl8 P2=[P2 p2/p10];
S2<evs1d P3=[P3 p3/p10];
`RHhc{ P=[P p*p];
<:ptNGR end
b`&
:` figure(1)
zTS P8Q7 plot(P,P1, P,P2, P,P3);
":W$$w< @5tGI U;1 转自:
http://blog.163.com/opto_wang/