pycharm上运行gprmax

参考:Pycharm运行gprmax3.0具体步骤-CSDN博客

1、配置环境

新建项目,位置自定义,解释器类型:自定义环境——>选择现有环境——>选择安装gprmax时安装的anaconda3中的envs/gprMax中的python.exe路径,点击向下角箭头选择该环境

2、创建.in文件

该输入文件是之前写的编写in文件并使用cmd命令窗口运行gprmax仿真(零基础)-CSDN博客文章中的,这里不过多解释。

#title: Scan
#domain: 1.6 1.1 0.003
#dx_dy_dz: 0.003 0.003 0.003
#time_window: 2.5e-8

#material: 20 0 1 0 rongdong
#material: 1 0 1 0 kongdong
#material: 2.7 0 1 0 meiceng
#material: 7 0 1 0 xianluozhu

#waveform: ricker 1 6e8 my_ricker
#hertzian_dipole: z 0.1 1 0 my_ricker
#rx: 0.15 1 0
#src_steps: 0.02 0 0
#rx_steps: 0.02 0 0

#box: 0 0 0 1.6 1 0.003 meiceng
#box: 0.3 0.6 0 0.5 0.7 0.003 rongdong
#box: 0.8 0.4 0 0.95 0.55 0.003 kongdong
#cylinder: 1.4 0.2 0 1.4 0.2 0.003 0.075 xianluozhu

geometry_view: 0 0 0 1.6 1.1 0.003 0.003 0.003 0.003 moni n

此时我的项目目录为

3、创建编写A扫python脚本

import os
import numpy as np
from gprMax.gprMax import api
from tools.outputfiles_merge import get_output_data

dmax = r".\gprmax"       #项目目录
filename = os.path.join(dmax, "gpr.in")   #组合得到gprmax位置下的输入文件gpr.in
#正演
#输入文件(filename),生成扫描次数(n),使用第0块GPU加速(gpu={0})
api(filename, n=3, gpu={0})

#获取回波数据
filename = os.path.join(dmax, "gpr1.out")  #获取当前目录下第一次扫描输出的文件(获取哪一次A扫数据后面就是画哪一次图像)
rxnumber = 1      #发射天线数量
rxcomponent = 'Ez'   #接收Ez向数据
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)   #获得回波数据(outputdata)和时间分辨率(dt)

#保存为.txt类型数据
np.savetxt("gpr_Ascan1.txt", outputdata, delimiter=' ')

#画A扫波形图
from tools.plot_Ascan import mpl_plot
from gprMax.receivers import Rx

outputs = Rx.defaultoutputs
outputs = ['Ez']
print(outputs)
plt = mpl_plot(filename, outputs)
plt.show()

图像为

此时我的项目目录为

其中.out文件和.txt文件是运行Ascan.py文件后生成的文件

4、创建编写B扫python脚本

import os
import numpy as np
from gprMax.gprMax import api
from tools.outputfiles_merge import get_output_data, merge_files

dmax = r".\gprmax"   #项目目录
filename = os.path.join(dmax, 'gpr.in')    #获得输入文件

#正演获得3次A扫
api(filename, n=3, gpu={0})
merge_files(r".\gprmax\gpr", removefiles=False)   #将A扫合成B扫,在合成后不删除原文件(removefiles=False)
#r".\gprmax\gpr"代表该位置中的以gpr.in为输入文件的输出的一系列A扫文件(如gpr1.out、gpr2.out…)

#获取B扫数据
filename = os.path.join(dmax, "gpr_merged.out")    #获取生成的B扫文件
rxnumber = 1    #1个发射天线
rxcomponent = 'Ez'    #获得Ez向数据
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)   #B扫数据传给outputdata,时间分辨率传给dt

#保存为.txt文件
np.savetxt('Bscan.txt', outputdata, delimiter=' ')

#画出B扫图像
from tools.plot_Bscan import mpl_plot
plt = mpl_plot(filename, outputdata, dt*1e9, rxnumber, rxcomponent)  #时间转换为ns
plt.ylabel('Time [ns]')
plt.show()

图像

运行之后的项目目录

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值