AnyMath 文档
Notebook

高斯光束在吸收半平面上的衍射

在这个问题中,考虑了理想吸收半平面边界附近的二维波场的传播。 源为垂直于屏幕边缘入射的高斯光束。 主要目标是显示波如何"流动"到几何阴影的区域,在表面上形成一个没有干扰振荡的平滑场,这对于Fock模型来说是典型的。 我们将数值求解进化类型的相应方程,并沿介质界面可视化场的幅度。

抛物线Leontovich-Fock方程

Leontovich-Fock抛物线方程由Vladimir Alexandrovich FockMikhail Alexandrovich Leontovich一起在研究无线电波在地球弯曲表面周围的传播过程中求解。

任务的难点在于经典方法在所谓的"Foca区域"—光与影边界的过渡区域中根本不起作用。 想象一下由无线电发射器照亮的地球表面。 在光线以直线(视线)到达的地方,一切都或多或少清晰。 但更远的地方,在地平线之外,有一个阴影区域,正如我们在实践中所知,无线电波仍然穿透。 用数学方法描述这个过程是非常困难的。

该方程是通过隔离沿选定方向传播的快速振荡乘法器并忽略沿纵向坐标的二阶导数从亥姆霍兹方程获得的。 它描述了阴影边界附近波u(x,z)的慢复振幅。

方程写成如下:

这里 -沿传播方向坐标, -横向坐标, -波数,以及 -介质的相对介电常数(仅取决于 ).

这个方程告诉我们,波u的慢振幅沿x变化,与它沿z的剖面曲率成比例。从物理上讲,这描述了窄光束如何在传播时扩散并渗入阴影区域。 对于计算机,导数需要用离散类似物替换,因此我们复盖平面 带台阶的网格 ,和二阶导数由 我们通过三个相邻点的值来写: .

在某个x处知道该字段,我们希望在下一步中找到它。 . 简单的显式方法在这里是不稳定的,所以我们使用Crank—Nicholson方案,它平均当前和下一层之间的二阶导数。: ,在哪里 -离散二阶导数的矩阵。 遭受了未知的痛苦 向左,和已知的 在右边,我们得到了一个具有三边形矩阵的线性方程组 . 通过在每一步解决它,我们沿着 . 为了模拟吸收屏幕的边缘,在每个步骤之后,我们强制调整网格节点中的振幅,该振幅对应于 为所有人 . 这产生了视觉衍射图案:光束变宽,其接触边界的部分被不可撤销地吸收。

决定

让我们考虑一个可用空间的模型问题()具有半平面上理想吸收的边界条件: . 初始场分布在 我们将其定义为从边界偏移的高斯光束。 软件的演变 我们将使用完全隐式有限差分方案(Crank—Nicholson方法)执行,该方案具有良好的稳定性。

In [ ]:
using LinearAlgebra

# ---任务参数 ---
k = 20.0          # 波数
Lz = 10.0         # z中区域的大小
Nz = 300          # z中的节点数
dz = Lz / Nz
z = range(-Lz/2, Lz/2, length=Nz+1)[1:Nz]

Lx = 5.0
Nx = 200
dx = Lx / Nx
x_range = range(0, Lx, length=Nx+1)

# 初始高斯光束
z0 = 2.0
w0 = 0.5
u0 = @. exp(-((z - z0)/w0)^2)

# ---离散化 ---
main_diag = -2.0 * ones(Nz)
off_diag  = ones(Nz-1)
D2 = (1/dz^2) * (diagm(-1 => off_diag, 0 => main_diag, 1 => off_diag))
D2[1, end] = 1/dz^2
D2[end, 1] = 1/dz^2

alpha = -1im / (2k)
I_mat = Matrix{ComplexF64}(I, Nz, Nz)
A = I_mat - (alpha * dx/2) * D2
B = I_mat + (alpha * dx/2) * D2

zero_idx = argmin(abs.(z .- 0.0))

# ---X三月 ---
u = copy(u0)
field_amplitude = zeros(Float64, Nz, Nx+1)
field_amplitude[:, 1] = abs.(u)

for n in 1:Nx
    u = A \ (B * u)
    u[zero_idx] = 0.0
    field_amplitude[:, n+1] = abs.(u)
end

# ---3d表面 ---
plot(
    x_range, z, field_amplitude,
    st = :surface,          # 图形类型-表面
    xlabel = "x(纵向坐标)",
    ylabel = "z(横向坐标)",
    zlabel = "|u|",
    title = "高斯光束在吸收半平面上的衍射(Leontovich-Fock方程)",
    camera = (45, 30),      # 方便的视角
    colorbar_title = "的振幅",
    alpha = 0.9,            # 轻微的透明度,更好的深度感知
    fillalpha = 0.8,
    linewidth = 0.1,        # 细网格以避免图像过载。
    titlefont=font(10), guidefont=font(6)
)

# 为了清楚起见,让我们添加半平面的边缘线
plot!(
    [0, Lx], [0, 0], [0, 0],
    lw = 3, color = :black, linestyle = :dash, label = "半平面的边缘(z=0)"
)
Out[0]:
No description has been provided for this image

该图显示了高斯光束如何由于衍射而移位和变宽,并且当其传播超过半平面边缘时,其在z=0附近的幅度趋于零。

结论

抛物线Leontovich-Fock方程使得可以有效地计算阴影边界附近的衍射效应,而无需求解全波方程。 Crank-Nicholson方法演示的数值解是稳定的,并且易于缩放到更复杂的介电常数剖面,这使得它成为分析地球表面附近无线电波传播和准光学问题的便捷工具。