基于matlab的激光谐振腔光场分布模拟和分析.docx

上传人:b****6 文档编号:13452719 上传时间:2023-06-14 格式:DOCX 页数:36 大小:460.94KB
下载 相关 举报
基于matlab的激光谐振腔光场分布模拟和分析.docx_第1页
第1页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第2页
第2页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第3页
第3页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第4页
第4页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第5页
第5页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第6页
第6页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第7页
第7页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第8页
第8页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第9页
第9页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第10页
第10页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第11页
第11页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第12页
第12页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第13页
第13页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第14页
第14页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第15页
第15页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第16页
第16页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第17页
第17页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第18页
第18页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第19页
第19页 / 共36页
基于matlab的激光谐振腔光场分布模拟和分析.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于matlab的激光谐振腔光场分布模拟和分析.docx

《基于matlab的激光谐振腔光场分布模拟和分析.docx》由会员分享,可在线阅读,更多相关《基于matlab的激光谐振腔光场分布模拟和分析.docx(36页珍藏版)》请在冰点文库上搜索。

基于matlab的激光谐振腔光场分布模拟和分析.docx

基于matlab的激光谐振腔光场分布模拟和分析

一.课程设计的主要任务:

1.任务总述:

用计算机模拟激光谐振腔的光场分布。

2.设计要求:

1)编程语言不限;

2)腔型包括:

条形腔,矩形平平腔,圆形平平腔,矩形共焦腔,圆形共焦腔,倾斜腔等。

二.我个人完成的情况:

1.已经完成的:

1)用基本的循环迭代法:

模拟了条形腔,矩形平平腔,圆形平平腔,矩形共焦腔,圆形共焦腔的光场的振幅和相位分布:

2)用传输矩阵结合分离变量的方法:

模拟了条形腔,矩形平平腔,矩形共焦腔的光场的振幅和相位分布。

三,基本原理:

1.一般的迭代法的基本原理:

 

1)基于菲涅尔衍射积分的基本原理:

设左右镜面的任意两个点P和P’点,光场分别为

是PP’连线和光轴的夹角,

为PP’之间的距离,则:

同理:

因此,左右通过上两式可以把激光谐振腔的左右有效地联系在一起,给出一个面的初始光场分布,经过往返迭代,可以得出如下的光场分布特性:

则说明激光谐振腔达到了自再现的条件,也是镜面上的场分布的稳定性条件。

2)网格化的思想:

虽然实际的腔镜面上的光场分布是连续的,但考虑到用计算机计算的离散的特性,需要把腔镜分割成网格,以网格上离散的节点的光场值去拟合实际的镜面的光场。

根据镜面的几何结构的特点,分割方法不尽相同,具如下:

A.条形腔:

等间距取点,(示意图略):

B,矩形镜面:

如下图左所示的方法进行等间隔分割与取点;

C,圆形镜面:

如下图右所示的方法进行等间距等角度离散。

3)化积分的运算为求和的思想:

结果加和存于一个二维数组中,通过循环,完成每一点的求和,具体的见代码(附有详细的注释)。

4)

不同的腔型所用到的积分公式略有不同:

A,条形腔:

B,平平矩形腔:

原始的菲涅尔积分公式:

式中:

C,平平圆心腔:

积分公式同平平矩形腔,但是不同的是在极坐标下的方程,且:

(左边)或

(右边)。

D,共焦矩形腔:

E,圆形共焦腔:

2,基于传输矩阵(结合分离变量)的基本原理:

1)考虑到matlab有着强大的矩阵和数组的计算功能,也为了克服一般循环迭代的速度低的问题,我把光的传输过程一个传输矩阵,问题就归结于求矩阵的特征向量的问题,以x轴方向为例:

是左边腔镜面离散点上光场的x轴分布,而且:

是右边镜面上的光场分布,不妨以三阶矩阵为例说明,

,且

而上述的矩阵可以直接有x,y列向量直接生成。

因此直接代入上式,得出传输矩阵。

再由初始额x轴方向的光场分布往返做矩阵的乘法,完成迭代,而且此种方法还可以直接求出特征值和特征向量。

 

四.仿真结果:

1.一般的迭代法的仿真结果:

1)条形腔:

运行:

A=rand(1,201);

fori=1:

200bar_typeend200次后得带稳定的幅度和相位分布如下:

且菲涅尔数是10,迭代次数为200次,基本上达到了稳定状态

2)矩形平平腔:

菲涅尔数目任然是10,以上由于计算速度比较慢,因此只迭代了5次,没有达到稳定状态。

3)圆形平平腔:

菲涅尔数为10,迭代次数为3次。

4)矩形共焦腔:

菲涅尔数为:

0.5,迭代次数为6次。

5)球面共焦腔(圆心镜共焦腔):

菲涅尔数为4,迭代4次。

2,基于传数矩阵(结合分离变量法)的仿真方法:

1)条形腔传输矩阵法:

菲涅尔数为10,迭代了300次,达到了稳定自再现状态:

2)矩形平平腔的传输矩阵法:

菲涅尔数为1,迭代次数为200次,达到了稳定的状态。

3)矩形共焦腔的传输矩阵法:

菲涅尔数为0.2,迭代次数为10次,达到了自在线的状态。

五,结果的分析:

1.Fox_li的迭代法和特征向量矩阵方法的比较如下:

从我前面的仿真对比来看,两者各有优势和不足之处:

(1)Fox_Li的衍射积分法,:

1)优点:

特点是思路简单,符合腔的模式形成的逻辑顺序,而且方法具有普适性,原则上对于任何几何形状的开腔都可以计算,而且还可以计算不对等,倾斜等的腔型:

2)缺点是运算量比较大,因此迭代的速度比较慢。

(2)特征向量法:

1)优点:

由于整个运算的过程是基于向量和数组的,只需要得出单程传输的传输矩阵,就可以很快得出矩阵的特征值和特征向量:

2)缺点:

由于要确定单程传输的矩阵,必须确定矩阵元,但是即使是规则额腔型,传输矩阵元也不易得出,因此该方法的关键就是确定每个矩阵元。

另外,还有很多的方法可以进行激光谐振腔的光场模拟,还有FFT算法(变换到频域上),

有限元光束传播法,有限差分法等等。

2.不同的初始分布如:

均匀分布,随机分布,三角分布等对最终稳定场分布的影响:

我每次进行模拟时,选择不用的初值分布,得出:

这对于最终的光场的分布没有影响,不懂的初始状态,改变的只是从初始值到稳定值的迭代的次数,不会影响最终的结果。

3.具体的编程细节对结果的影响:

1)所取的点的多少的影响:

点数取得越多,得到的曲线曲面越平滑,越接近真实的光场分布,但是点取得过多,会直接做成计算量的急剧上升,造成不能耗时过长或基本算不出来的情。

我的经验是:

对于基于传输矩阵的算法(速度快很多)可以比Fox_li迭代法取点对多些,一维的条形腔可以比二维的矩阵或圆形腔的一个方向上的点数可以适当多些。

2)菲涅数的选取对于结果的影响:

A.首先,对于平平腔和共焦腔,要获得相类似的模场分布,平平腔所需要的菲涅尔数要大些,

菲涅尔数目

矩形平平腔

矩形共焦腔

一般迭代法

10

0.5

传输矩阵法

1

0.2

原因分析:

由于共焦腔左右都是凹面腔镜,对光束有一定的汇聚作用,特别是对于近轴光线,几何偏折损耗几乎为0,只有衍射损耗:

而对于平平腔,只要是与光轴有夹角的光线,经过有限次数的传输后会偏折出腔外,因此,相同的菲涅尔数的情况下,平平腔比共焦腔的损耗要大些。

B.对于同样是平平腔或共焦腔,圆形比方形的损耗略大些,但是从理论上分析,方形共焦和圆形共焦腔的基的振幅分布,光斑尺寸,等相位面的曲率半径,光束发散角等都相同,这一点在仿真时也得到了体现。

3)其他参数,如波长,腔的尺寸等对场分布的影响,都可以归结到对菲涅尔数的影响,从而影响光场的分布。

4.分离变量法和直接考虑二维的情形对编程的影响:

1)直接考虑二维的情形:

假设每个面上取得点数均为N*N个(矩形镜为例),则传输举证的阶数就非常高,高达N*N阶,因此相应的矩阵元数目为N^4个,数目非常大,不仅计算量非常大,而且矩阵元的对应也非常复杂:

但是其优点是精度更高,更加接近真实场分布。

2)考虑分离变量法:

由于对于直角坐标系,分离变量非常容易,且同样假设左右各N*N个点,则考虑分离变量后,只需要求出x,和方向的N阶矩阵,且x和y方向的矩阵式相同的,只有N^2个矩阵元,计算量比二维的小很多。

缺点是:

要能分离变量,对原始的菲涅尔积分公式(二维)必须进行简化和近似,因此会引入一定的误差。

六.参考文献

[1]徐银新.激光谐振腔模式研究.硕士学位论文,TN248,10701

[2]程愿应,江超,王又青,胡进,李家熔.光腔模式及传输的特征向量算法.2005,5

[3]周炳琨,高以智,陈峥嵘.激光原理.北京:

国防出版社.2002.32~37.

七.设计体会

经过了一个星期左右的鏖战,我终于完成了这次激光课程设计,从开始学习matlab中,到开始独立地编写程序,再到程序的调试,到结果的分析,到文档的撰写,虽然过程比较艰辛,但是觉得从中学到了很多东西。

我虽然没有和别人合作,但是在编写和调试的过程中,特别是对于一些matlab指令的调用,我得到了女朋友(自动化专业,精通matlab)的帮助,在此特别表示感谢。

我最开始用最基本的循环迭代的方法,得到的结果有一个计算速度慢的特点,于是我决定寻求其他的解决方案,结合分离变量法的传输矩阵法就是我寻求到的运算速度大幅度提高的运算方法。

我通过看matlab的指导书,对于matlab的核心就是基于矩阵和数组的计算方法。

其基本的运算单元就是数组和矩阵,而非其他语言中的单一的变量。

我从matlab的基本的指令开始学起,从符号运算到数值计算,从数值阵列到向量化运算,再到函数和数据的可视化(绘图),再到M文件和函数句柄,觉得自己通过这次课程算是真正的对于matlab入了门。

我虽然没有来得及编写GUI图像界面,但是我追求的是用更多更优化的方法去仿真更多的腔型的场分布。

总结起来,我用两种方法编写了条形腔,矩形平面腔,圆形平面腔,矩形共焦腔和圆形共焦腔,总的m文件时8个,总的代码行数接近一千,虽然遗憾没有时间完成GUI图形界面,但还是觉得有很多的收获。

在编程的过程中,我还遇到了一些问题,虽然上网查了很多资料,但是目前还没有解决,就是在用传输矩阵法进行模拟时,如果迭代的次数到达一定的值,会出现NaN的情况,在可视化的图形上表现为图形无法显示(坐标系上是空的),我查看变量是出现了inf等情况,我上网查了一下,这是在IEEE规定中,0/0,0-0,

等都会返回NaN(NotaNumber),可能是我计算过程中出现上述的情形导致计算中断,但是更加奇怪的是:

我可以求出传输矩阵的特征值和特征向量,却不能一直通过迭代得到特征向量,这是我不明白的地方,目前正在思考这个问题。

我追求的是更好的方法和更多的腔型,我目前正在努力的方向是:

(1)用FFT把空间域变换到频域进行模拟;

(2)用时域有限元的方法,目前正在学习该方法;(3)能否对于一般的自由曲面对于任意的初始分布得到最终的光场分布。

这些事情可能要等到报告上交之后才有时间去完成,报告中无法体现。

八.附录:

所有的程序代码及其相应的输入指令:

注意:

由于我没有图形化界面,所以老师要看我的仿真结果,要按照我所给的输入指令行输入,主要是初始参数的形式(向量还是二维数组)和函数名。

1.一般的循环迭代方法:

1)条形腔:

bar_type.m

源代码如下:

%对称条形谐振腔的自再现模

M=201;%条形腔左边的总的分割数目

N=201;%条形腔右边的总的分割数目

lamda=6.328e-7;

L=1e5*lamda;

a=1e3*lamda;

b=1e3*lamda;

N1=a^2/(L*lamda);

N2=b^2/(L*lamda);

k=2*pi/lamda;

co=sqrt(1i*(exp(-1i*k*L))/(lamda*L));

B=zeros(1,201);

forn=-(N-1)/2:

1:

(N-1)/2

x2=(2*b)*n/N;

form=-(M-1)/2:

1:

(M-1)/2

x1=(2*a)*m/M;

B(n+(N+1)/2)=B(n+(N+1)/2)+exp(-1i*k*(x1-x2)^2/(2*L))*A(m+(M+1)/2)*(2*a/M)*co;

end

end

B=B/abs((max(B)));

A=zeros(1,201);

form=-(M-1)/2:

1:

(M-1)/2

x1=(2*a)*m/M;

forn=-(N-1)/2:

1:

(N-1)/2

x2=(2*b)*n/N;

A(m+(M+1)/2)=A(m+(M+1)/2)+exp(-1i*k*(x1-x2)^2/(2*L))*B(n+(N+1)/2)*(2*b/N)*co;

end

end

A=A/abs(max(A));

x1=(-(M-1)/2:

1:

(M-1)/2)*(2*a/M);

x2=(-(N-1)/2:

1:

(N-1)/2)*(2*b/N);

subplot(2,2,1);

plot(x1,abs(A));

subplot(2,2,3);

plot(x1,angle(A));

subplot(2,2,2);

plot(x2,abs(B));

subplot(2,2,4);

plot(x2,angle(B));

 

输入的指令和得到的结果如下:

clearall;

A=rand(1,201);

tic;

fori=1:

200

bar_type;

end

toc;

N1,N2

Elapsedtimeis155.402364seconds.

N1=

9.999999999999998

N2=

9.999999999999998

2)矩形平平腔:

pin_pin_rectangular.m

源代码如下:

%平平矩形腔的自再现模

M=31;%第一面镜的横向分割数

N=31;%第一面镜的纵向分割数

E=31;%第二面镜的横向分割数

F=31;%第二面镜的纵向分割数

lamda=6.328e-7;

L=1e5*lamda;

a=1e3*lamda;

b=1e3*lamda;

c=1e3*lamda;

d=1e3*lamda;

k=2*pi/lamda;

N1=(a*b)/(L*lamda);

N2=(c*d)/(L*lamda);

B=zeros(E,F);

fore=-(E-1)/2:

1:

(E-1)/2

forf=-(F-1)/2:

1:

(F-1)/2

x2=2*c*e/E;

y2=2*d*f/F;

form=-(M-1)/2:

1:

(M-1)/2

forn=-(N-1)/2:

1:

(N-1)/2

x1=2*a*m/M;

y1=2*b*n/N;

[r,costheta]=zihanshu(x1,y1,x2,y2,L);

co=exp(-i*k*r)*(1+costheta)/r;

B(e+(E+1)/2,f+(F+1)/2)=B(e+(E+1)/2,f+(F+1)/2)+i*k/(4*pi)*(4*a*b/(M*N))*A(m+(M+1)/2,n+(N+1)/2)*co;

end

end%solveB(e+(E+1)/2,f+(F+1)/2)

end

end

B=B/abs(max(max(B)));

A=zeros(M,N);

form=-(M-1)/2:

1:

(M-1)/2

forn=-(N-1)/2:

1:

(N-1)/2

x1=2*a*m/M;

y1=2*b*n/N;

fore=-(E-1)/2:

1:

(E-1)/2

forf=-(F-1)/2:

1:

(F-1)/2

x2=2*c*e/E;

y2=2*d*f/F;

[r,costheta]=zihanshu(x1,y1,x2,y2,L);

co=exp(-i*k*r)*(1+costheta)/r;

A(m+(M+1)/2,n+(N+1)/2)=A(m+(M+1)/2,n+(N+1)/2)+i*k/(4*pi)*(4*c*d/(E*F))*B(e+(E+1)/2,f+(F+1)/2)*co;

end

end%solveB(e+(E+1)/2,f+(F+1)/2)

end

end

A=A/abs(max(max(A)));

x1=(-(M-1)/2:

1:

(M-1)/2)'*a/M;

y1=(-(N-1)/2:

1:

(N-1)/2)'*b/N;

x2=(-(E-1)/2:

1:

(E-1)/2)'*c/E;

y2=(-(F-1)/2:

1:

(F-1)/2)'*d/F;

subplot(1,2,1);

mesh(x1,y1,abs(A));

subplot(1,2,2);

mesh(x2,y2,abs(B));

子函数的源代码如下:

function[r,costheta]=zihanshu(x1,y1,x2,y2,L)

%UNTITLED2Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

r=L+((x1-x2)^2+(y1-y2)^2)/(2*L);

costheta=L/r;

end

函数的输入命令和得到的如下:

clearall;

A=rand(31);

pin_pin_rectangular

pin_pin_rectangular

pin_pin_rectangular

pin_pin_rectangular

pin_pin_rectangular

N1,N2

N1=

9.999999999999998

N2=

9.999999999999998

3)圆形平平腔;circle_type.m

源代码如下:

%圆形平平腔的自再现模

M=48;%第一面镜的径向分割数

N=48;%第一面镜的角向分割数

E=48;%第二面镜的径向分割数

F=48;%第二面镜的角向分割数

lamda=6.328e-7;

L=1e5*lamda;

R1=1e3*lamda;

R2=1e3*lamda;

k=2*pi/lamda;

co1=1i*k/(4*pi);

N1=(R1^2)/(L*lamda);

N2=(R2^2)/(L*lamda);

B=zeros(E,F);

fore=1:

E

forf=1:

F

r2(e,f)=(e*R2)/E;

theta2(e,f)=(2*f*pi)/F;

x2(e,f)=r2(e,f)*cos(theta2(e,f));

y2(e,f)=r2(e,f)*sin(theta2(e,f));

form=1:

M

forn=1:

N

r1(m,n)=(m*R1)/M;

theta1(m,n)=(2*n*pi)/N;

x1(m,n)=r1(m,n)*cos(theta1(m,n));

y1(m,n)=r1(m,n)*sin(theta1(m,n));

rou(m,n)=sqrt((x1(m,n)-x2(e,f))^2+(y1(m,n)-y2(e,f))^2+L^2);

costheta(m,n)=L/rou(m,n);

co(m,n)=exp(-1i*k*rou(m,n))*(1+costheta(m,n))/rou(m,n);

B(e,f)=B(e,f)+A(m,n)*(pi*R1^2/(M*N))*co(m,n)*co1;

end

end%solveB(e+(E+1)/2,f+(F+1)/2)

end

end

B=B/abs(max(max(B)));

A=zeros(M,N);

form=1:

M

forn=1:

N

r1(m,n)=(m*R1)/M;

theta1(m,n)=(2*n*pi)/N;

x1(m,n)=r1(m,n)*cos(theta1(m,n));

y1(m,n)=r1(m,n)*sin(theta1(m,n));

fore=1:

E

forf=1:

F

r2(e,f)=(e*R2)/E;

theta2(e,f)=(2*f*pi)/F;

x2(e,f)=r2(e,f)*cos(theta2(e,f));

y2(e,f)=r2(e,f)*sin(theta2(e,f));

rou(e,f)=sqrt((x1(m,n)-x2(e,f))^2+(y1(m,n)-y2(e,f))^2+L^2);

costheta(e,f)=L/rou(e,f);

co(e,f)=exp(-1i*k*rou(e,f))*(1+costheta(e,f))/rou(e,f);

A(m,n)=A(m,n)+B(e,f)*(pi*R2^2/(E*F))*co(e,f)*co1;

end

end%solveB(e+(E+1)/2,f+(F+1)/2)

end

end

A=A/abs(max(max(A)));

r1=(1:

1:

M)*(R1/M);

theta1=2*pi/N:

2*pi/N:

2*pi;

r2=(1:

1:

E)*(R2/E);

theta2=2*pi/F:

2*pi/F:

2*pi;

[Rr1,THETA1]=meshgrid(r1,theta1);

[Rr2,THETA2]=meshgrid(r2,theta2);

Z1=abs(A)';

Z2=abs(B)';

[x1,y1,z1]=pol2cart(THETA1,Rr1,Z1);

[x2,y2,z2]=pol2cart(THETA2,Rr2,Z2);

subplot(1,2,1);

mesh(x1,y1,z1);

subplot(1,2,2);

mesh(x2,y2,z2);

输入的指令和得到的结果如下:

clearall;

A=rand(48);

circle_type;

circle_type

circle_type

N1,N2

N1=

9.999999999999998

N2=

9.999999999999998

4)矩形共焦腔:

rec_confocs.m

源代码如下:

%方形镜共焦腔的自再现模

M=21;%第一面镜的横向分割数

N=21;%第一面镜的纵向分割数

E=21;%第二面镜的横向分割数

F=21;%第二面镜的纵向分割数

lamda=6.327e-7;

L=2e6*lamda;

R1=L;

R2=L;

a=1e3*lamda;

b=1e3*lamda;

c=1e3*lamda;

d=1e3*lamda;

k=2*pi/lamda;

cons=1i*exp(-1i*k*L)/(L*lamda);

N1=(a*b)/(L*lamda);

N2=(c*d)/(L*lamda);

B=zeros(E,F);

fore=-(E-1)/2:

1:

(E-1)/2

forf=-(F-1)/2:

1:

(F-1)/2

x2=(2*c)*(e/E);

y2=(2*d)*(f/F);

form=-(M-1)/2:

1:

(M-1)/2

forn=-(N-1)/2:

1:

(N-1)/2

 

x1=(2*a)*(m/M);

y1=(2*b)*(n/N);

co2=exp(1i*k*(x1*x2+y1*y2)/L);

B(e+(E+1)/2,f+(F+1)/2)=B(e+(E+1)/2,f+(F+1)/2)+(4*a*b/(M*N))*A(m+(M+1)/2,n+(N+1)/2)*co2*cons;

end

end%solveB(e+(E+1)/2,f+(F+1)/2)

end

end

B=B/abs(max(max(B)));

A=zeros(M,N);

form=-(M-1)/2:

1:

(M-1)/2

forn=-(N-1)/2:

1:

(N-1)/2

x1=(2*a)*(m/M);

y1=(2*b)*(n/N);

fore=-(E-1)/2:

1:

(E-1)/2

forf=-(F-1)/2:

1:

(F-1)/2

x2=(2*c)*(e/E);

y2=(2*d)*(f/F);

co1=exp(1i*k*(x1*x2+y1*y2)/L);

A(m+(M+1)/2,n+(N+1)/2)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2