东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2099|回复: 4
打印 上一主题 下一主题

[通信原理] gprMax模拟电磁波传播软件的安装与使用

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
跳转到指定楼层
楼主
发表于 2021-6-4 14:28:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
gprMax模拟电磁波传播软件的安装与使用




地址:https://github.com/gprMax/gprMax


python3 setup.py build
python3 setup.py install  这个需要 Searching for psutil  Searching for colorama
pip3 install psutil
pip3 install colorama


python3 setup.py cleanall


安装成功:
Using /home/jiang/miniconda3/envs/py3_tf2_torch/lib/python3.6/site-packages
Finished processing dependencies for gprMax==3.1.5


gprMax是主包。在这个包中,主模块是gprMax.py
setup.py 用于编译 Cython 扩展模块
tests 是一个包含测试模块和输入文件的子包
tools 是一个子包,其中包含有助于查看和后处理模型输出的脚本
user_libs 是一个子包,用于存储用户贡献的有用模块
user_models 是一个子包,用于存储用户贡献的有用输入文件




安装支持 OpenMP 的 C 编译器  gcc应该已经安装,所以不需要任何操作






-gpu 0
To use gprMax in GPU mode the pycuda package must be installed
安装:pip3 install pycuda
Successfully installed appdirs-1.4.4 mako-1.1.4 pycuda-2021.1 pytools-2021.2.7






等效于“Hello World”的 GPR 建模:
如何模拟来自埋在介电半空间中的金属圆柱体的单个迹线(A 扫描)
介电半空间 a dielectric half-space


模型中将出现三种不同的材料,分别代表空气、电介质半空间和金属圆柱体
空气(自由空间)已经作为 gprMax 中的内置材料存在,可以使用free_space标识符进行访问。
金属圆柱体将被建模为完美电导体,它再次作为 gprMax 中的内置材料存在,可以使用pec标识符访问


确定源类型和激励频率
低频用于重要的穿透深度,而高频用于需要较少穿透和更好分辨率的地方
馈入一个 Ricker 波形,其中心频率为fc=1.5 GHz将用于模拟 GPR 天线
#waveform: ricker 1 1.5e9 my_ricker
Ricker 波形是使用#waveform命令创建的,指定幅度为 1,中心频率为 1.5 GHz,并选择任意标识符my_ricker
使用#hertzian_dipole命令创建的,指定 z 方向极化(如果创建 B 扫描,则垂直于测量方向

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

  5. #material: 6 0 1 0 half_space

  6. #waveform: ricker 1 1.5e9 my_ricker
  7. #hertzian_dipole: z 0.100 0.170 0 my_ricker
  8. #rx: 0.140 0.170 0

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

  11. #geometry_view: 0 0 0 0.240 0.210 0.002 0.002 0.002 0.002 cylinder_half_space n
复制代码


一个好的经验法则是空间分辨率应该是模型中存在的最小波长的十分之一
提供 3 毫米的最小空间分辨率。然而,圆柱体的直径为 20 毫米,因此将解析为 7 个细胞。因此,更好的选择是 2 mm,它将钢筋的直径解析为 10 个单元


圆柱体的直径为 20 毫米???   源波形的宽度为 1.2 ns???
域大小应该足以包围感兴趣的体积  不懂?


Spatial discretisation: 0.002 x 0.002 x 0.002m  #dx_dy_dz: 0.002 0.002 0.002 距离分辨率
Domain size: 0.24 x 0.21 x 0.002m (120 x 105 x 1 = 12600 cells)  没懂?
Time step (at CFL limit): 4.71731e-12 secs
Time window: 3e-09 secs (637 iterations)
Waveform my_ricker of type ricker with maximum amplitude scaling 1, frequency 1.5e+09Hz created.
Hertzian dipole with polarity z at 0.1m, 0.17m, 0m, using waveform my_ricker created.
Receiver at 0.14m, 0.17m, 0m with output component(s) Ex, Ey, Ez, Hx, Hy, Hz created.
Material half_space with eps_r=6, sigma=0 S/m; mu_r=1, sigma*=0 Ohm/m created.




运行其中一个测试模型:
A扫描:
python3 -m gprMax user_models/cylinder_Ascan_2D.in
python3 -m gprMax user_models/cylinder_Ascan_2D.in -gpu 0
python3 -m tools.plot_Ascan user_models/cylinder_Ascan_2D.out


B 扫描由记录的多条轨迹(A 扫描)组成,因为源和接收器在目标上移动
#hertzian_dipole: z 0.040 0.170 0 my_ricker
#src_steps: 0.002 0 0
#rx_steps: 0.002 0 0
要运行模型以创建 B 扫描,您必须传递一个可选参数来指定模型应运行的次数
对于 120 毫米(在哪里啊?)距离的 B 扫描,步长为 2 毫米,即 60 次 A 扫描

  1. #title: B-scan from a metal cylinder buried in a dielectric half-space
  2. #domain: 0.240 0.210 0.002
  3. #dx_dy_dz: 0.002 0.002 0.002
  4. #time_window: 3e-9

  5. #material: 6 0 1 0 half_space

  6. #waveform: ricker 1 1.5e9 my_ricker
  7. #hertzian_dipole: z 0.040 0.170 0 my_ricker
  8. #rx: 0.080 0.170 0
  9. #src_steps: 0.002 0 0
  10. #rx_steps: 0.002 0 0

  11. #box: 0 0 0 0.240 0.170 0.002 half_space
  12. #cylinder: 0.120 0.080 0 0.120 0.080 0.002 0.010 pec
复制代码


python3 -m gprMax user_models/cylinder_Bscan_2D.in -gpu 0 -n 60
--remove-files如果要自动删除原始的单个 A 扫描输出文件,可以添加可选参数
python3 -m tools.outputfiles_merge user_models/cylinder_Bscan_2D --remove-files
展示结果:B 扫描(的Ez字段组件)
python3 -m tools.plot_Bscan user_models/cylinder_Bscan_2D_merged.out Ez




python3 -m gprMax user_models/cylinder_Ascan_2D.in --geometry-only
加上这个命令--geometry-only 只生成了*.vti几何视图文件 没有*.out文件
您可以使用--geometry-only命令行参数来构建模型并生成任何几何视图,但不运行模拟。
此选项可用于检查模型的几何形状是否正确
该#geometry_view:命令为每单元几何视图生成 ImageData (.vti)


查看的方法(点击gprMax_info, 之后,几何模型就可以显示出来啦):http://www.ai111.vip/thread-1204-1-1.html













A扫描.png (113.75 KB, 下载次数: 145)

A扫描.png

B扫描.png (70.14 KB, 下载次数: 143)

B扫描.png

gprMax的几何模型.png (2.89 KB, 下载次数: 143)

gprMax的几何模型.png
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
沙发
 楼主| 发表于 2021-6-4 14:35:20 | 只看该作者
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
板凳
 楼主| 发表于 2021-10-27 14:25:22 | 只看该作者
运行自己创建的模型(A扫):
python3 -m gprMax user_models/my_model_A.in
python3 -m gprMax user_models/my_model_A.in -gpu 0

会生成两个文件:
gprMax-master/user_models/my_model_A.out
gprMax-master/user_models/my_model_A.vti

还可以生成一系列中间文件: snapshotXXX.vti

可视化看输出文件:
python3 -m tools.plot_Ascan user_models/my_model_A.out
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
地板
 楼主| 发表于 2021-10-27 14:37:55 | 只看该作者
python3 -m gprMax user_models/my_model_A.in -gpu 0
执行py文件(ModuleNotFoundError: No module named 'gprMax._version'; 'gprMax' is not a package):
python3 gprMax/gprMax.py user_models/my_model_A.in -gpu 0


python3 -m tools.plot_Ascan user_models/my_model_A.out
执行py文件(这个可以)
python3 tools/plot_Ascan.py user_models/my_model_A.out
python3 tools/plot_Ascan.py user_models/my_model_A.out --outputs Ez
python3 tools/plot_Ascan.py user_models/my_model_A.out --outputs Ez -fft
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
5#
 楼主| 发表于 2021-10-28 10:55:41 | 只看该作者
信号的初始部分 (~0.5-1.5 ns) 代表从发射器到接收器的直接波。然后是来自金属圆柱体的反射小波 (~1.8-2.6 ns),它具有相反的极性
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-19 15:04 , Processed in 0.193067 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表