gprmax3.0安装与三维建模

2023-11-09

        最近在学习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图

 

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gprmax3.0安装与三维建模 的相关文章

  • Bootstrap 4 移动导航栏消失

    我刚刚从 Bootstrap 3 转换为 Bootstrap 4 但我的移动导航栏出现问题 使用切换按钮展开导航栏时 导航消失 我不明白为什么会发生这种情况 导航栏下方有一个大屏幕 但整个移动导航向上移动 如下面的 gif 所示 以下是导航
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • HTML5 文件 API 和 AJAX 上传分块问题

    我编写了一个带有单独进度的拖放多个文件上传等 除了一件事之外 它工作得非常好 上传较大文件时 有时浏览器会锁定 直到上传完成 我认为这是因为该文件存储在浏览器的内存中并占用了浏览器可用的所有资源 我想知道 是否可以逐段读取文件并在读取时通过
  • 如何使用 bootstrap-select 在每个选择选项上添加工具提示

    我正在尝试使用 bootstrap select 将工具提示添加到每个选择选项 当我检查时 似乎 select js 将 select 标签转换为 ul 我不知道这是我的代码不起作用的原因 html div class form group
  • CSS3 - 性能最佳实践是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 仅在 Safari 中位于 div 外部的文本

    我有这个错误 让一些文本出现在右侧 div 之外的几个像素处 奇怪的是 这种情况只发生在 Safari 中 我以前从未见过它 它只是我使用过的常规 HTML CSS 我在互联网上环顾四周 但找不到完全相同的问题 由于高度固定 只有一些内容在
  • QtWebEngine Quicknano 在嵌入式 Linux 中没有声音

    我已将 QtWebEngine 编译到我的 i MX6 嵌入式设备中 当我尝试使用 Quicknanobrowser 播放 YouTube 视频时 视频会播放 但没有声音 事实上 当我尝试播放音频文件时没有声音hpr dogphilosop
  • 单独的数据间隔 bootstrap 轮播 4

    我想为 Bootstrap 4 轮播上的每张幻灯片设置单独的数据间隔 我尝试了一些其他的 javascript 片段 但是它们似乎不适用于我的代码 例如Bootstrap 4 轮播堆栈溢出 https stackoverflow com q
  • 在phonegap中的两个html页面之间传递数据

    我正在使用phonegap 来创建移动应用程序 我不想将所有内容都放在一个 html 页面中 因此我创建了其中的一些内容 每一个都附有 js 文件 如何在这些 html 页面之间发送数据 最便携和最简单的方法是使用本地存储 http doc
  • 重置 div 内容的 css 样式

    有一个用 css 样式定制的 html 页面 我无法更改此 css 该页面的一个标签被设计为动态 html 数据的容器 我怎样才能 重置 这个div的css设置 页面中定义的css样式对此div的内容没有影响 我只能访问动态 html 并且
  • 保存下拉列表中的值

    这是我的情况 我有 2 页 一页用于选择值 一页用于编辑与该值关联的数据库相关内容 现在 我对如何将从下拉列表中选择的值保存到 PHP 的变量中一无所知 并且已经进行了相当多的研究 有任何想法吗 HTML
  • 如何获取 Spotify API 的访问令牌?

    我已经研究 Spotify api 和示例源代码几天了 但我仍然不知道如何获取访问令牌来访问用户的播放列表数据 我已经到达了拉起登录窗口 用户登录 然后收到授权码的地步 此时 我尝试做这样的事情 window open https acco
  • 输入字段名称以数字开头

    我有一个输入字段 其名称是 MD5 字符串 例如
  • 二维数组的列求和

    我有一个IEnumerable
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • 构建两列 html 表单的最佳方法?

    对齐以下内容的最佳方法是什么 我想要 inputTitle左边和右边inputInput在右边 两者之间有错误 CSS crud form width 430px margin 10px solid font family Verdana
  • HTML/CSS:页面左侧的导航栏

    我发现创建这样具有良好语义的布局很尴尬 左侧是大约 150 像素宽的列 其中包含导航元素 我想将网站这部分的 HTML 放在 HTML 代码的开头 然后有一个简单的方法来强制页面的其余部分不侵占左侧的区域 150 像素列 我考虑过一些选择
  • 电子邮件模板中的剪贴板功能

    我想在电子邮件模板中发送优惠券代码 一个小按钮 用于复制剪贴板上输入元素的内容 通过电子邮件模板 我的意思是我想发送一封电子邮件 其中包含优惠券代码 并且电子邮件模板中会有一个按钮 允许我将其复制到剪贴板 这可以做到吗 任何帮助将不胜感激
  • 将 div 附加到另一个 div 的右侧

    我有一个 div 它就像一个容器 里面有 2 个图像 一张图像位于 div 的左侧 另一张图像位于右侧 我的容器是Bootstrap的容器 它们都用 div 包裹 并且div s position is fixed 我的问题是我无法找到要附
  • 如何在 Safari 和 Native App 之间共享上下文?

    我有需要通过 Safari 设置一些上下文 上下文标记 然后从本机 iOS 应用程序读取该上下文 这样做的最佳实践是什么 到目前为止的一些想法 在 HTML 5 数据库中设置上下文 但我不确定这是否有效 因为该数据库可能只能从 Safari

随机推荐

  • JS面试题

    1 es6新特性 let和const关键字 箭头函数 多行字符串 解构赋值 Promises let声明变量和const声明常量 变量不能重复声明 都是块级作用域 不存在变量提升 箭头函数 es6提供了简洁的箭头函数语法 可以更简单的定义函
  • python与爬虫的关系_python为什么叫爬虫?有什么关系?

    今天 小编听到有人问 Python为什么叫爬虫 我想很多人对于这个问题都很好奇 甚至对于Python和爬虫的概念模糊 今天小编通过这篇文章为大家详细解答一下 Python与爬虫有什么关系 爬虫一般是指网络资源的抓取 因为Python的脚本特
  • 误删li64.so.6,如何恢复

    遇到下面这种情况 误删li64 so 6还原方案 第一步 先关掉虚拟机 右键找到电源后选择打开电源时进入固件 进入Boot界面 第二步 使用shift 将光盘启动优先 然后切至exit保存退出 第三步 来到重启界面后 选择Troublesh
  • 微信小程序的五种传值方式

    1 使用全局变量传递数据 利用app js 中的 globalData 将数据存储为全局变量 在需要使用的页面通过getApp globalData获取数据 app js App globalData data name demo 使用组件
  • < Linux >:Linux 进程概念 (4)

    目录 五 孤儿进程 六 进程优先级 6 1 基本概念 6 2 查看时实系统进程 6 3 PRI and NI 七 其他概念 四 X 状态 死亡状态 对应于各个操作系统下的进程状态中的进程终止 退出 态 所谓进程处于 X 状态 死亡状态 代表
  • 【HTML】讲讲HTML5视频播放的方式

    HTML 讲讲HTML5视频播放的方式 引言 github HTML 讲讲HTML5视频播放的方式 内容速递 看了本文您能了解到的知识 想要网页播放视频再也不需要使用插件了 HTML本身就支持 而且更加稳定 上节讲了HTML5的音频播放 和
  • 7.14资产收集-灯塔

    sql注入 xss 源码泄露 redis未授权访问 逻辑漏洞 支付漏洞 GitHub TophantTechnology ARL ARL Asset Reconnaissance Lighthouse 资产侦察灯塔系统旨在快速侦察与目标关联
  • 在matlab中如何使用SVM工具箱

    一 SVM下载 http see xidian edu cn faculty chzheng bishe indexfiles indexl htm 二 在MATLAB中添加svm工具箱 参考 http jingyan baidu com
  • 银行业法律法规与综合能力 第五章 银行监管与自律 10%

    第五章 银行监管与自律 考点1 银行监管体制 考点2 银行自律与市场约束 考点3 职业操守与行为准则 考点4 清廉金融 考点5 银行业消费者杈益保护 考点1 银行监管体制 一 银行监管起源与演变 1 英国颁布的 反泡沫公司法 标志着世界金融
  • 小程序---云函数npm install报错

    问题 云函数右键菜单 在外部终端窗口中打开 npm install报错 解决方法 使用cnpm install 安装依赖
  • error:03000086:digital envelope routines::initialization error

    项目背景 前端vue项目启动突然报错error 03000086 digital envelope routines initialization error 我用的开发工具是vscode node版本是v18 17 0 前端项目版本如下
  • redis安装、配置、启动

    一 redis默认安装位置 usr local bin redis benchmark 性能测试工具 可以在自己本子运行 看看自己本子性能如何 服务启动起来后执行redis check aof 修复有问题的AOF文件redis check
  • mac安装VMware Fusion及虚拟Windows注意事项

    mac安装VMware Fusion及虚拟Windows注意事项 文章目录 mac安装VMware Fusion及虚拟Windows注意事项 1 前言及注意事项 2 VMWare Fusion下载及安装 3 安装虚拟Windows 4 Vi
  • 代码覆盖率

    在做单元测试时 代码覆盖率常常被拿来作为衡量测试好坏的指标 甚至 用代码覆盖率来考核测试任务完成情况 比如 代码覆盖率必须达到80 或 90 于是乎 测试人员费尽心思设计案例覆盖代码 用代码覆盖率来衡量 有利也有有弊 本文我们就代码覆盖率展
  • viewPager + ConstraintLayout 自适应高度

    在 ConstraintLayout 约束布局 中 我们发现viewPager除了设置固定的尺寸外 要不就是全屏 这很不符合我们的需求 改造下 layout中
  • Pandas常用统计数据方法

    import pandas as pd 1 准备数据 假设有 5 个人 分别参加了 4 门课程 获得了对应的分数 同时这个 5 个人分别负责的项目个数 在 Project num 列中显示 data name pd Series Alice
  • Linux 用户管理与文件权限

    Linux 是一个多用户系统 它允许多个用户同时登陆主机 并为他们分配不同的资源和工作环境进行使用 当然 不同的用户都有文件的私有需求 所以设置不同用户文件的权限管理十分重要 01 用户与用户组 Linux 中一般将文件访问权限的身份分为三
  • 深度神经网络(使用CNN,NN,RNN,与KNN,SVM)

    深度神经网络 实验目的 了解神经网络结构 NN CNN RNN 使用框架运行神经网络 查看并对比神经网络学习的效果 不断调整神经网络的参数 逐步提升学习效果 以CNN为例 对比神经网络与一般机器算法的区别 目录 pytorch的安装 数据预
  • 李宏毅 机器学习 2016 秋:5、Classification:Probabilistic Generative Model

    文章目录 五 Classification Probabilistic Generative Model 五 Classification Probabilistic Generative Model 接下来我们要来进入新的主题 我们要来讲
  • gprmax3.0安装与三维建模

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