gprMax进行正演模拟[Ascan,Bscan]

1 篇文章 0 订阅
1 篇文章 0 订阅

​1 模拟Ascan

1.1 编写模型A-Scan构建文件

这里我们用官方给予的示例文件”cylinder_Ascan_2D.in“。

#title: A-scan from a metal cylinder buried in a dielectric half-space
#domain: 0.240 0.210 0.002
#dx_dy_dz: 0.002 0.002 0.002
#time_window: 3e-9

#material: 6 0 1 0 half_space

#waveform: ricker 1 1.5e9 my_ricker
#hertzian_dipole: z 0.100 0.170 0 my_ricker
#rx: 0.140 0.170 0

#box: 0 0 0 0.240 0.170 0.002 half_space
#cylinder: 0.120 0.080 0 0.120 0.080 0.002 0.010 pec

#geometry_view: 0 0 0 0.240 0.210 0.002 0.002 0.002 0.002 cylinder_half_space n

(1)模型名称
“title”配置项为模型名字,不多赘述。

#title: A-scan from a metal cylinder buried in a dielectric half-space

(2)设定地下目标物参数
"box"配置项对应范围见示意图中“Half Space”部分。
"cylinder"配置项对应范围见示意图中“Metal cylinder”部分。

#box: 0 0 0 0.240 0.170 0.002 half_space
#cylinder: 0.120 0.080 0 0.120 0.080 0.002 0.010 pec

(2)确定网格大小
根据官方文档参数,将网格大小设置为0.002米。

#dx_dy_dz: 0.002 0.002 0.002

(3)设置扫描移动范围和时窗大小
"domain"配置项表示雷达扫描时的移动范围,范围的大小包括额外的加上10个单元的PML吸收边界条件(默认值情况下),可在示意图中看到“Domain boundary”和“PML region”部分的更直观的表示。“time_window”配置项设置为3ns。

#domain: 0.240 0.210 0.002
#time_window: 3e-9

(4)设定材料的构成参数
本例中涉及三种材料:空气、介电半空间、金属圆柱体,其中空气和金属圆柱体的参数已经在gprMax中内置了,因此,只需要指定介电半空间(Half_space)部分的参数设置,"material"参数的6 0 1 0分别对应相对介电常数、电导率为、相对磁化率和零电导率。

#material: 6 0 1 0 half_space

(5)设定源类型和激励频率

#waveform: ricker 1 1.5e9 my_ricker

在这里插入图片描述

1.2 进入gprMax环境

用conda环境管理进入gprMax环境

# 进入gprmax环境
conda activate gprMax
# 进入gprMax目录
cd ……/gprMax

1.3 生成输出文件"cylinder_Ascan_2D.out"

使用以下命令根据2.1节中的模型A-Scan构建文件生成相应输出文件"cylinder_Ascan_2D.out"。

(gprMax)$ python -m gprMax user_models/cylinder_Ascan_2D.in

1.4 将输出结果可视化为A-Scan图像

使用以下命令将2.2节中的输出数据可视化为A-Scan图像。

(gprMax)$ python -m tools.plot_Ascan user_models/cylinder_Ascan_2D.out

在这里插入图片描述

2 模拟B-scan

2.1 编写模型B-Scan构建文件

相对于本文2.1节中模型A-Scan构建文件,模型B-Scan构建文件增加了“src_steps”和“rx_steps”两个配置项。“src_steps”配置项指定模型构建运算时信号源的移动步长,“rx_steps”配置项配置项指定模型构建运算时接收器的移动步长,这里依然使用官方提供的示例文件“cylinder_Bscan_2D.in”

#title: A-scan from a metal cylinder buried in a dielectric half-space
#domain: 0.240 0.210 0.002
#dx_dy_dz: 0.002 0.002 0.002
#time_window: 3e-9

#material: 6 0 1 0 half_space

#waveform: ricker 1 1.5e9 my_ricker
#hertzian_dipole: z 0.100 0.170 0 my_ricker
#rx: 0.140 0.170 0

#box: 0 0 0 0.240 0.170 0.002 half_space
#cylinder: 0.120 0.080 0 0.120 0.080 0.002 0.010 pec

#geometry_view: 0 0 0 0.240 0.210 0.002 0.002 0.002 0.002 cylinder_half_space n

2.2 生成输出文件"cylinder_Bscan_2D.out"

运行模型来创建 B 扫描,必须传递一个可选参数来指定模型应运行的次数。这是构成 B 扫描的 A 扫描(迹线)的数量。对于距离 120mm、步长为 2mm 的 B 扫描,即 60 次 A 扫描。您现在可以使用以下命令运行模型

python -m gprMax user_models/cylinder_Bscan_2D.in -n 60

2.3 将 A 扫描合并为 B 扫描

应该生成 60 个输出文件,每个 A 扫描一个,带有名称my_cylinder_Bscan_2D1.out等my_cylinder_Bscan_2D2.out…可以使用以下命令将这些文件组合成一个文件:

python -m tools.outputfiles_merge user_models/cylinder_Bscan_2D

2.4 绘制 B 扫描图

可以使用以下方法绘制 B 扫描:

python -m tools.plot_Bscan user_models/cylinder_Bscan_2D_merged.out Ez

请添加图片描述
B 扫描( E z E_z Ez 场分量)显示信号的初始部分(~0.5-1.5 ns),代表从发射器到接收器的直接波。然后来自金属圆柱体的反射波(~2-3 ns)产生双曲线形状。

3. 总结

本文讲解了使用gprMax进行探地雷达电磁波信号的正演模拟方法,并用官方文档所提供的示例进行了A-Scan图像和B-Scan图像生成过程演示,所模拟电磁场传播如下动图所示。
模拟电磁场传播示意图

部分用法引用于博主「@realXuan」https://blog.csdn.net/xuan373366788/article/details/128212459

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值