计算脉冲在非线性耦合器中演化的Matlab 程序 o
A*G J` {6l % This Matlab script file solves the coupled nonlinear Schrodinger equations of
&@"]+33 % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
0e["]Tlnm % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
1gO2C$ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
IGX:H)&* "%8A:^1 %fid=fopen('e21.dat','w');
v}J;ZIb N = 128; % Number of Fourier modes (Time domain sampling points)
tNs~M4TVVH M1 =3000; % Total number of space steps
1-I
Swd'u J =100; % Steps between output of space
7=4 A;Ybq T =10; % length of time windows:T*T0
O\;= V`z- T0=0.1; % input pulse width
~#:e *:ro MN1=0; % initial value for the space output location
.V6-(d dt = T/N; % time step
]Pn!nSg n = [-N/2:1:N/2-1]'; % Index
cd;NpN t = n.*dt;
o7&4G$FX~ u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
RK9>dkW u20=u10.*0.0; % input to waveguide 2
J3S&3+2G u1=u10; u2=u20;
sPNfbCOz U1 = u1;
s_jBu U2 = u2; % Compute initial condition; save it in U
2>S~I"o0 ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
ZeasYSo4P w=2*pi*n./T;
X_; *`,<T g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
HW=xvA+ L=4; % length of evoluation to compare with S. Trillo's paper
kR.wOJ7' dz=L/M1; % space step, make sure nonlinear<0.05
]0c Pml for m1 = 1:1:M1 % Start space evolution
#:3r4J%+~ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
QL"gWr`R u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
oL/o*^ ca1 = fftshift(fft(u1)); % Take Fourier transform
:s8A:mx ca2 = fftshift(fft(u2));
;kaHN;4? c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
4YbC(f c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
hN`gB#N3 u2 = ifft(fftshift(c2)); % Return to physical space
t\j!K2 u1 = ifft(fftshift(c1));
SA6hbcYk if rem(m1,J) == 0 % Save output every J steps.
&J"YsY U1 = [U1 u1]; % put solutions in U array
=.m6FRsU U2=[U2 u2];
nR5bs;gk" MN1=[MN1 m1];
mp`PE= z1=dz*MN1'; % output location
2?i\@r@E| end
J;~|ph end
||TtNH hg=abs(U1').*abs(U1'); % for data write to excel
sn k$^ ha=[z1 hg]; % for data write to excel
zjbE 7^N t1=[0 t'];
-oBI+v& hh=[t1' ha']; % for data write to excel file
F 1|zXg) %dlmwrite('aa',hh,'\t'); % save data in the excel format
z<C[nR$N figure(1)
K, (65>86; waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
xi {| figure(2)
>M^&F6 waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
'ND36jHcRD }6~)bLzI} 非线性超快脉冲耦合的数值方法的Matlab程序 `ypL]$cW qR,.W/eS8 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
XK 3]AYH 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
9\51Z:> lC9S\s 6zYaA i^%-aBZ % This Matlab script file solves the nonlinear Schrodinger equations
X7cWgo66T % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
cqQRU % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
IlHY%8F{ % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
2:J,2=% >_Uj?F: C=1;
u7k|7e=xk
M1=120, % integer for amplitude
RebTg1vGu M3=5000; % integer for length of coupler
#4y,a_) N = 512; % Number of Fourier modes (Time domain sampling points)
)bW5yG! dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
sMi{"`37 T =40; % length of time:T*T0.
vj3isI4lU dt = T/N; % time step
_'JRo%{xGX n = [-N/2:1:N/2-1]'; % Index
J/S{FxNe] t = n.*dt;
_^;;i4VZ ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
S[U/qO)m w=2*pi*n./T;
%_tk7x g1=-i*ww./2;
>~&(P_<b g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
agY5Dg7 g3=-i*ww./2;
4;\Y?M}g? P1=0;
nYov>x] P2=0;
``-k{C#F P3=1;
G.ud1,S# P=0;
^gm>!-Gx for m1=1:M1
xKW"X
p=0.032*m1; %input amplitude
"]<}Hy s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
i`~~+6`J s1=s10;
.}p|`3$P s20=0.*s10; %input in waveguide 2
)VY10R)$ s30=0.*s10; %input in waveguide 3
!QTPWA s2=s20;
LVmY=d> s3=s30;
t&f" jPu> p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
@KJV1t` %energy in waveguide 1
Qu}N:P9l?X p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
#NJ<[Gew %energy in waveguide 2
;Vo mFp L p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
c(:Oyba %energy in waveguide 3
;Id"n7W for m3 = 1:1:M3 % Start space evolution
a 2E t,WA% s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
VKf6|ae s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
@Z=wE3T@ s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
qL>v&Rd< sca1 = fftshift(fft(s1)); % Take Fourier transform
".M:`BoW4 sca2 = fftshift(fft(s2));
\>;%Ji sca3 = fftshift(fft(s3));
~y@& } sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
!OQuEJR sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
&NP6%}bR` sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
@WJf) s3 = ifft(fftshift(sc3));
R_9 o!sTZ s2 = ifft(fftshift(sc2)); % Return to physical space
7V/Zr s1 = ifft(fftshift(sc1));
f\=6I3z end
Re\o
v x9 p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
zi_[V@Es/ p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
>.@MR<H#5 p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
4L$};L P1=[P1 p1/p10];
[U']kt P2=[P2 p2/p10];
q06@SD$
P3=[P3 p3/p10];
/gX%ABmS P=[P p*p];
:W%4*-FP end
lux9o$ % figure(1)
No~6s.H plot(P,P1, P,P2, P,P3);
p`LL sOC|
B 转自:
http://blog.163.com/opto_wang/