gprmax3.0安装与三维建模

        最近在学习gprmax的使用,国内网上有关gprmax的经验帖子有些陈旧,分享一些自己最新的软件安装配置以及实际三维建模的经验,希望能帮助到需要使用这款软件的朋友。

目录

一、gprmax3.0下载与安装

1. Anaconda&Miniconda下载与安装

2. gprmax下载

3.安装Microsoft Visual C++2019 Tools

4.gprmax安装

5.GPU配置

二、gprmax3.0建模

2.1 二维建模指令

2.2 查看vti模型

2.2 三维模型以及C-scan图绘制


一、gprmax3.0下载与安装

        软件包的下载地址:https://github.com/gprmax/gprMax

        该网址下拉也能看到gprmax的安装英文教程

1. Anaconda&Miniconda下载与安装

        可前往官网下载anaconda(https://www.anaconda.com/products/individual)或者miniconda(https://docs.conda.io/en/latest/miniconda.html),注意在安装的时候点击添加环境变量如下图红字部分需要勾选。

2. gprmax下载

        打开cmd命令提示符(win+R打开运行框输入cmd即可),依次输入如下

conda update conda  #更新conda到最新版本
conda install git   #安装git
git clone https://github.com/gprMax/gprMax.git  #下载gpmax包
cd gprMax  #目录导航到gprmax文件夹下
conda env create -f conda_env.yml  #在anaconda的env文件下加载gprmax模块

        其中git clone https://github.com/gprMax/gprMax.git 可能因为网络问题下载过程中链接中断,如果中断下载失败了的话再多试几次就行了,也可以直接从https://github.com/gprMax/gprMax上下载Zip压缩包(git命令一般默认下载到C:\Users\Administrator路径下),如下图所示。

3.安装Microsoft Visual C++2019 Tools

        可以前往官网直接下载VS2019,为精简可只下载VS2019的生成工具(下载地址:https://docs.microsoft.com/zh-cn/visualstudio/?view=vs-2022

*注:最好不要下载超过2019版本的VS或工具,后续GPU配置会失败

        官网下载的是VS的安装软件,注意勾选C++桌面开发作为工作负荷,以及勾选MSVC v142和Windows 10 SDK(默认是勾选上的),安装位置为了后续方便默认就好。

        安装完成后需添加以下环境变量到系统path(注意根据实际路径修改)

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.23.28105\bin\Hostx64\x64

4.gprmax安装

        打开cmd,激活gprmax环境并cd导航到gprmax目录(左边括号是conda的环境,不用输入)

(base)conda activte gprMax
(gprMax)python setup.py build
(gprMax)python setup.py install

        这里目前最新2022/1/9版本的gprmax3.15在build操作时可能会出现错误 “~/c1.exe” failed with exit code 2,解决方法有两种:

①安装旧版本gprmax

②删除目录文件gprMax\cython\fields_updates_dispersive.pyx

        成功安装完成后运行一个Ascan测试:

(base)conda activate gprMax
(gprMax)cd gprMax
(gprMax)python -m gprMax user_models/cylinder_Ascan_2D.in
(gprMax)python -m tools.plot_Ascan user_models/cylinder_Ascan_2D.out

        成功绘制图形说明安装完成。

5.GPU配置

        要进行GPU加速,首先电脑必须配置NVIDIA图形显卡。GPU加速可以提升运算速度2-5倍。

CUDA下载

        首先要查看电脑能支持的CUDA版本,这里贴一下其他博主介绍的方法:CUDA版本查看

        然后前往官网下载对应版本的CUDA tookit:官网链接

        下载完成后,默认路径安装,添加环境变量到系统path

C:\Program Files\NVIDIA GPU Computing Tookit\CUDA\vX.X\bin

        打开cmd,输入nvcc -V,正确显示如下说明安装成功。

pycuda安装

        打开cmd,用pip安装

conda activate gprMax
pip install pycuda

GPU加速 

        在in文件后加上-gpu即可,如

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

*注:此时运行结束可能出现错误如下:

         解决方式已有博主答出https://blog.csdn.net/weixin_44385758/article/details/101721599

这里另附一条:如果只下载了VS的工具,安装的MicroSoft VisualStudio/2019/VC下没有bin文件夹的话,可以参考VS2019配置MSVC环境变量的方法去解决。

链接:Visual Studio 2019 配置 MSVC 环境变量,使用命令行编译。_westinyang blog-CSDN博客
在cmd里输入cl正确显示编译器信息的话就说明配置成功了。

二、gprmax3.0建模

        gprmax的二维建模已有许多经验贴,在这里重点介绍一些其他博主可能没提到的细节以及三维建模。

2.1 二维建模指令

        #domain: x y z  表示模型空间大小,表示二维时z设置为网格dz的大小。

        #dx_dy_dz: 0.01 0.01 0.01 表示模型网格大小为1cm*1cm*1cm

        #time_window: 2e-8 设置时间窗口为20ns

*注:时间窗口至少需要包含电磁波在介质中的最大往返时间,同时时间窗口的大小会影响模型运行的速度,时间窗口越小运行计算量越少,程序跑的更快。

        #material: a b c d name 自定义材质参数分别表示相对介电常数,电导率(S/m),相对磁化率和磁损

*注: 

①如果想设置参数为无穷大可以使用inf

②软件正常运行必须保证电磁波在某材质运行时,波长能由十个以上的网格表示,所以这里相对介电常数和模型网格大小其实是有关联的,会影响到模型误差。否则可能会出现如下警告:

Numerical dispersion analysis: estimated largest physical phase-velocity error is -0.70% in material 'water' whose wavelength sampled by 12 cells. Maximum significant frequency estimated as 5.99141e+08Hz

        又因为模型电磁波频率会影响到波长,所以三者应综合考虑。

        #waveform: ricker 1 200e6 my_ricker 自定义电磁波类型参数分别表示波的类型(例子中定义的是ricker波),波的振幅(m),中心频率(Hz),波的名称

        #python:

        ...

        #end_python:

        表示调用python,里面可以根据python的语法输入代码,最常用的方式就是print(),可以根据这种方法定义环线勘测等。

举个例子:

#python:
import numpy as np
print('#hertzian_dipole: z {} {} 1.0 my_ricker'.format(2*np.sin(np.radians(90+(current_model_run)*0.1)),2*np.cos(np.radians(90+(current_model_run)*0.1))))
print('#rx: {} {} 1.0'.format(2*np.sin(np.radians(91+(current_model_run)*0.1)),2*np.cos(np.radians(91+(current_model_run)*0.1))))
#end_python:

        其中print括号中的{}由format()里的参数替代,以上代码表示的是发射点和接收点绕半径为2m,圆心在原点的圆旋转。

*注:current_model_run表示的是当前模型是Bscan运行的第几个模型

        #cylinder_sector: z 0 0 0 2.00 3 30 1 free_space 表示绘制圆柱体的部分扇形区域,其中参数z表示圆柱体上下底面垂直于Z轴,0 0 0 表示下底面圆圆心位置,2.00表示上底面圆圆心位置,3表示底面圆半径,30 1表示扇形区域为[30°,31°]。

       

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

        生成建立模型的VTK可视化文件,参数是可视化文件域左下坐标和右上坐标,各轴网格大小,model是模型文件名,n是可调参数表示正常输出,f表示细节输出,当你只想检查模型的几何模型的形状时,可以使用可选命令参数-geometry-only运行gprMax,这样不会运行正演模拟。

        #snapshot:0 0 0 0.240 0.170 0.002 0.002 0.002 0.002 1e-9 snap1

        生成波场快照VTK可视化文件,前9个参数同上,第10个参数是以秒为单位的时间(浮点数)或迭代次数(整数),表示将进行快照的时间点;第11个参数是存储快照文件的名称

2.2 查看vti模型

        下载paraview,官网链接:https://www.paraview.org/download/

*注:paraview2022/1/9的最新版本v5.10加载的vti图像材质全部统一在一起,建议下载使用v5.9版本

        添加gprmax插件,如下图。插件路径:gprmax\tools\Paraview macros

         加载模型只需要打开模型vti文件,并点击gprmax-info即可。

2.2 三维模型以及C-scan图绘制

        gprmax不专门提供C-scan图绘制的命令,所以需要提取出数据自己绘制,其中gprmax运行生成的out文件是h5文件。gprmax提供matlab的对应Bscan绘制函数接口,路径为:gprMax\tools\MATLAB_scripts\plot_Bscan.m,可通过修改该脚本绘制C-scan图。

        用matlab打开该脚本文件,可以看到绘制Bscan图的主要函数是imagesc,其中道数参数为traces,信号强度为field,时间为time,利用这三个参数绘制三维切片图,由于我没找到imagesc函数的三维图绘制方法,最后使用的是surf函数,具体实施方式只是matlab的可视化处理,这里只提供绘制C-scan图的思路。

        C-scan绘制部分matlab代码:

        

[x,y]=meshgrid(traces,time);
Z=ones(numel(time),numel(traces))*0.02;
C=field;
h1=surf(Z,x,y,C,'FaceAlpha',0.75);
hold on;
set(gca,'zdir','reverse');
h1.EdgeColor='none';

        以下是随意绘制的未处理信号的C-scan图

 

        

  • 20
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值