用LightPipes生成可以拐弯的Airy光束
摘要:LightPipes实现了基于Airy函数的一维和二维Airy光束模型。一维Airy光束光场分布为 F ( x ) = A i ( x / x 0 ) e a x F(x)=Ai(x/x0)e^{ax} F(x)=Ai(x/x0)eax,传播时呈现弯曲特性;二维Airy光束在x和y方向均服从Airy函数分布 F ( x , y ) = A i ( x / x 0 ) A i ( y / y 0 ) e a 1 x + a 2 y F(x,y)=Ai(x/x0)Ai(y/y0)e^{a1x+a2y} F(x,y)=Ai(x/x0)Ai(y/y0)ea1x+a2y。文章通过Python代码示例展示了两种光束的生成和传播特性,并给出了相应的光强分布图。AiryBeam1D和AiryBeam2D函数分别用于创建一维和二维Airy光束,可指定尺度参数和衰减系数。
Airy函数
LightPipes中封装了一维和二维的Airy光束模型,是一种不沿着直线传播的光束模型,因其光场分布为Airy函数,故而得名。
Airy函数是二阶线性微分方程 d 2 y d x 2 − x y = 0 \frac{\mathrm d^2y}{\mathrm dx^2}-xy=0 dx2d2y−xy=0的有界解,其积分表达式为
Ai ( x ) = 1 π ∫ 0 ∞ cos ( t 3 3 + x t ) d t \operatorname{Ai}(x)=\frac{1}{\pi}\int^\infty_0\cos(\frac{t^3}{3}+xt)\mathrm dt Ai(x)=π1∫0∞cos(3t3+xt)dt
其级数展开为
Ai ( x ) = 1 3 2 3 Γ ( 2 3 ) ∑ k = 0 ∞ 1 k ! ( 3 1 / 3 x 1 ) 3 k Γ ( k + 1 3 ) sin ( 2 ( 1 − k ) π 3 ) + ⋯ \operatorname{Ai}(x)=\frac{1}{3^\frac{2}{3}\Gamma(\frac{2}{3})}\sum^\infty_{k=0}\frac{1}{k!}(\frac{3^{1/3}x}{1})^{3k}\Gamma(k+\frac{1}{3})\sin(\frac{2(1-k)\pi}{3})+\cdots Ai(x)=332Γ(32)1k=0∑∞k!1(131/3x)3kΓ(k+31)sin(32(1−k)π)+⋯
一维
一维Airy光束在 z = 0 z=0 z=0处的光场分布为
F ( x , y , z = 0 ) = Ai ( x x 0 ) e a x F(x,y,z=0)=\operatorname{Ai}(\frac{x}{x_0})e^{ax} F(x,y,z=0)=Ai(x0x)eax
其传播过程如图所示

其中, z z z为光场传播方向, x x x方向是光场分布方向,如图可知,光束在沿 z z z方向传播过程中发生了弯曲。
绘图代码如下
from LightPipes import *
import matplotlib.pyplot as plt
import numpy as np
wavelength = 2.3*um
size = 30*mm
N = 500
N2=N//2
x0=0.3*mm
a=0.1/mm
dz=1.25*cm
NZ=200
F0=Begin(size,wavelength,N)
F0=AiryBeam1D(F0,x0=x0, a=a)
Ix=np.zeros(N)
for k in range(0,NZ):
F=Forvard(F0,dz*k)
I=Intensity(F)
Ix=np.vstack([Ix,I[N2]])
plt.imshow(Ix, extent=[-size/2/mm, size/2/mm, 0, NZ*dz/cm], aspect=0.08, origin='lower', cmap='jet')
plt.xlabel('x [mm]')
plt.ylabel('z [cm]')
plt.show()
【AiryBeam1D】即为一维Airy光束函数,其参数分别是输入光场、 x x x方向的尺度以及Airy函数的参数 a a a。
二维Airy光束
二维Airy光束即两个方向均服从Airy函数,其光场分布为
F ( x , y , z = 0 ) = Ai ( x x 0 ) Ai ( x y 0 ) e a 1 x + a 2 y F(x,y,z=0)=\operatorname{Ai}(\frac{x}{x_0})\operatorname{Ai}(\frac{x}{y_0})e^{a_1x+a_2y} F(x,y,z=0)=Ai(x0x)Ai(y0x)ea1x+a2y
其传播图像为

其 x , y x,y x,y轴分别为光场分布方向。绘图代码如下
wavelength = 2.3*um
size = 30*mm
N = 500
x0=y0=1*mm
a1=a2=0.1/mm
z=900*cm
F0=Begin(size,wavelength,N)
F0=AiryBeam2D(F0,x0=x0, y0=y0, a1=a1, a2=a2)
F=Fresnel(F0,z)
I=Intensity(F)
ext = [-size/2/mm, size/2/mm, -size/2/mm, size/2/mm]
plt.imshow(I, extent=ext, origin='lower', cmap='jet')
plt.title('2D Airy beam')
plt.xlabel('x [mm]')
plt.ylabel('y [mm]')
plt.show()
【AiryBeam2D】即为二维Airy光束的生成函数,相当于在 x , y x,y x,y方向分别指定了范围以及Airy函数参数。函数签名如下
AiryBeam2D(Fin, x0=0.001, y0=0.001, a1=100, a2=100)
- Fin (Field) – 输入光场
- x0 (int, float) – x方向尺寸,默认1mm
- y0 (int, float) – y方向尺寸,默认1mm
- a1 (int, float) – a 1 a_1 a1
- a2 (int, float) – a 2 a_2 a2
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)