计算脉冲在非线性耦合器中演化的Matlab 程序 2bLc57j{`9 @%2crJnkS % This Matlab script file solves the coupled nonlinear Schrodinger equations of
p>\[[Md % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of
A^6z.MdYZ % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
{d'B._#i % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
;<[!;8 c^'bf_~-W %fid=fopen('e21.dat','w');
)quQI)Ym N = 128; % Number of Fourier modes (Time domain sampling points)
r}e(MT:R' M1 =3000; % Total number of space steps
\Gk}Fer J =100; % Steps between output of space
N#jUqm T =10; % length of time windows:T*T0
"Dk@-Ac T0=0.1; % input pulse width
:|S[i(' MN1=0; % initial value for the space output location
1|-C(UW> dt = T/N; % time step
frm[<-~ w0 n = [-N/2:1:N/2-1]'; % Index
bZgo}`o% t = n.*dt;
lul u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10
^`dMjeF u20=u10.*0.0; % input to waveguide 2
.pe.K3G& u1=u10; u2=u20;
!Sy9v U1 = u1;
tj00xYY U2 = u2; % Compute initial condition; save it in U
;nbEV2Y< ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
7Dl^5q.| w=2*pi*n./T;
% rnRy<9 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T
~H?v L c;> L=4; % length of evoluation to compare with S. Trillo's paper
n#WOIweInf dz=L/M1; % space step, make sure nonlinear<0.05
9;vES^ for m1 = 1:1:M1 % Start space evolution
:jkPV%!~ u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS
|B$JX'_ u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2;
>wb*kyO7(# ca1 = fftshift(fft(u1)); % Take Fourier transform
il{x?#Wrb ca2 = fftshift(fft(u2));
rfQs
7S;G c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation
5N6R%2,A c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift
d^$cx(2$D u2 = ifft(fftshift(c2)); % Return to physical space
Q2]7|C u1 = ifft(fftshift(c1));
rk&oKd_&i if rem(m1,J) == 0 % Save output every J steps.
$^ir3f+ U1 = [U1 u1]; % put solutions in U array
J32{#\By U2=[U2 u2];
w""u]b%:r MN1=[MN1 m1];
XAF]B,h= z1=dz*MN1'; % output location
-gC%*S5& end
H3d|eO4+W end
SJj_e- hg=abs(U1').*abs(U1'); % for data write to excel
d3?gh[$ ha=[z1 hg]; % for data write to excel
d/3&3>/ t1=[0 t'];
2fc+PE hh=[t1' ha']; % for data write to excel file
_f "I%QTL %dlmwrite('aa',hh,'\t'); % save data in the excel format
v[x 5@$ figure(1)
n31nORx50 waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn
F{7
BY~d figure(2)
e*(
_Cvxp waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn
d3T7$'l$ 1uA-!T*e> 非线性超快脉冲耦合的数值方法的Matlab程序 CnY dj~ >[T6/#M 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的
论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。
Kb5}M/8 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
/Z#AHfKF n],cs B@ \0b| [vY)y\W{ % This Matlab script file solves the nonlinear Schrodinger equations
SFsT^f< % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of
^H<VH % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear
5y0LkuRR: % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004
6w{""K.{ ahM?;p C=1;
[ CU8%%7 M1=120, % integer for amplitude
c No)LF M3=5000; % integer for length of coupler
N;m62N N = 512; % Number of Fourier modes (Time domain sampling points)
b_~KtMO dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05.
={ 190=\9 T =40; % length of time:T*T0.
5KYR"-jY dt = T/N; % time step
=<=[E:B n = [-N/2:1:N/2-1]'; % Index
zCwb>v t = n.*dt;
-M[BC~!0; ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1.
j=>WWlZ w=2*pi*n./T;
&.0 wPyw g1=-i*ww./2;
a5@lWpQsV g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0;
SnO,-Rg g3=-i*ww./2;
_ @|_`5W P1=0;
0b,{4DOD P2=0;
Z>@\!$Mc P3=1;
1BzU-Ma P=0;
Gh'{O/F4* for m1=1:M1
zq#gf p=0.032*m1; %input amplitude
2fUz}w ( s10=p.*sech(p.*t); %input soliton pulse in waveguide 1
H{d/%}7[v s1=s10;
a9nXh6 s20=0.*s10; %input in waveguide 2
d
k|X&)xTJ s30=0.*s10; %input in waveguide 3
5hiuBf< s2=s20;
h&{>4{ s3=s30;
3_ =:^Z p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1))));
JlH5 <:#PN %energy in waveguide 1
rf&nTDaWI p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1))));
a>nV!b\n5 %energy in waveguide 2
MP 8s} p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1))));
V3\}]5 %energy in waveguide 3
=1F F2#zS for m3 = 1:1:M3 % Start space evolution
q]*:RI?wGT s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS
><;.vP s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2;
gi\UNT9x s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3;
EmcwX4| sca1 = fftshift(fft(s1)); % Take Fourier transform
zhwajc sca2 = fftshift(fft(s2));
X@B,w_b sca3 = fftshift(fft(s3));
MWc{7, sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift
@/?$ ZX/e[ sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz);
UC9w T sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz);
0`e- ; s3 = ifft(fftshift(sc3));
';x5 $5k' s2 = ifft(fftshift(sc2)); % Return to physical space
W&a<Q)o*I s1 = ifft(fftshift(sc1));
s|8_R; end
&$NVEmW-J p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1))));
9hs7B!3pc> p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1))));
7Rom#Kl: p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1))));
~E7=c3:" P1=[P1 p1/p10];
`\S~;O P2=[P2 p2/p10];
F(:]lM| P3=[P3 p3/p10];
UBy:W^\g P=[P p*p];
o"A%dC_ end
/F @a@m| figure(1)
D&&11Iz& plot(P,P1, P,P2, P,P3);
R:DW>LB 6~Xe$fP( 转自:
http://blog.163.com/opto_wang/