python运行gprMax3.0

最近尝试用深度学习算法做点探地雷达的研究,发现缺点数据,之前用gprMax模拟都是cmd中手动输入命令运行,对于批量处理显然不合理,还是使用代码管理运行比较靠谱!

参考链接:Pycharm运行gprmax3.0具体步骤_行同陌路619的博客-CSDN博客_gprmax python

设置按照该链接中的设置进行,只是运行路径出现问题,进行小修后即可。

gprMax3.0关于api函数说明的官方链接:Code Overview — gprMax User Guide

里面用到的gprMax关于api函数的定义:

def api(
    inputfile,
    n=1,
    task=None,
    restart=None,
    mpi=False,
    mpi_no_spawn=False,
    mpicomm=None,
    gpu=None,
    benchmark=False,
    geometry_only=False,
    geometry_fixed=False,
    write_processed=False,
    opt_taguchi=False
):
#必须输入的是inputfile和n
# inputfile--文件名称,如果文件与代码不在同一位置,要带路径
# n--扫描次数(道数),Ascan时n=1,Bscan时,n根据需要设置

Ascan实现代码:

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



#文件路径+文件名
dmax=os.getcwd() #项目目录
filename = os.path.join(dmax,'Ascan.in')
print(filename)
#正演  n:仿真次数(A扫描次数)->B扫描
api(filename, n=1) 


# 获取回波数据
# A B扫描时out文件名不一样
filename = os.path.join(dmax,"Ascan.out")
rxnumber = 1
rxcomponent = 'Ez'
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)
print(outputdata)
# 保存回波数据
np.savetxt('Ascan.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()

Ascan.in文件内容

#domain: 10.2 4.2 0.01
#dx_dy_dz: 0.01 0.01 0.01
#time_window: 50e-9

#material: 4 0.001 1 0 car
#material: 8 0.01 1 0 shale

#waveform: ricker 1 300e6 my_ricker
#hertzian_dipole: z 0.7 0.2 0 my_ricker
#rx: 0.2 0.2 0


#box: 0 0 0 10.2 4.2 0.01 shale
#box: 0 0 0 10.2 0.7 0.01 car


##geometry_view: 0 0 0 10.2 4.2 0.01 0.01 0.01 0.01 A1 n
##模型显示注释掉,运行就不会输出vti文件了

Ascan运行结果

Bscan实现代码

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



#文件路径+文件名
dmax=os.getcwd() #项目目录
filename = os.path.join(dmax,'Bscan.in')
print(filename)
#正演  n:仿真次数(A扫描次数)->B扫描,
api(filename, n=5)  
merge_files("Bscan", removefiles=True)

# 获取回波数据
# A B扫描时out文件名不一样
filename = os.path.join(dmax,"Bscan_merged.out")
rxnumber = 1
rxcomponent = 'Ez'
outputdata, dt = get_output_data(filename, rxnumber, rxcomponent)
print(outputdata)
# 保存回波数据
np.savetxt('Bscan_merged.txt',outputdata,delimiter=' ')

## B扫描绘图
from tools.plot_Bscan import mpl_plot
plt = mpl_plot(filename,outputdata, dt*1e9, rxnumber, rxcomponent)
plt.ylabel('Time [ns]')
plt.show()

Bscan.in文件内容

#domain: 8.4 14.4 0.02
#dx_dy_dz: 0.02 0.02 0.02
#time_window: 50e-9
#material: 6 0.01 1 0 car
#waveform: ricker 1 100e6 my_ricker
#hertzian_dipole: z 4.2 0.2 0 my_ricker
#rx: 4.2 0.75 0
##比Ascan多的内容为源以及接收的步长
#src_steps: 0 0.02 0 
#rx_steps: 0 0.02 0 

#box: 0 0 0 8.4 14.4 0.02 car
#box: 4.7 11 0 6.7 12 0.02 free_space
#box: 4.7 6.5 0 5.7 7.5 0.02 free_space
#box: 4.7 2.5 0 5.2 3.5 0.02 free_space
##geometry_view: 0 0 0 8.4 14.4 0.02 0.02 0.02 0.02 Bscan n

Bscan运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值