本文主要是介绍使用python脚本批量对gprmax建模(用不同含水量、rebar半径、rebar深度),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、软件
1.spyder
2.Gprmax
2、代码及解释
1.首先在spyder中编辑好python部分代码,代码如下:主要是确定含水量、半径、深度三个部分,随机生成需要的范围内的数据;
import scipy.interpolate
import numpy as np
from random import random as rdm=np.array([12,9.3,6.2,5.5,2.8,0.2])
e_stat = np.array([12.84,11.19,9.14,8.63,6.75,4.814])
e_inf = np.array([7.42,7.2,5.93,6.023,5.503,4.507])
t = np.array([0.611,0.73,0.8,1,2.28,0.82])*10**-9
sigma = np.array([20.6,23,6.7,5.15,2.03,0.606])*10**-3es = scipy.interpolate.interp1d(m, e_stat)
ei = scipy.interpolate.interp1d(m, e_inf)
t0 = scipy.interpolate.interp1d(m, t)
si = scipy.interpolate.interp1d(m, sigma)mv=0.2+11.8*rd()print("#material:{} {} 1 0 concrete \n".format(ei(mv), si(mv)))
print("#add_dispersion_debye: 1 {} {} concrete \n".format(es(mv)-ei(mv), t0(mv)))print("#box: 0 0 0 0.5 0.3 0.3 concrete \n")r=0.005 + 0.0245*rd()
z=(0.3-r)*rd()
print("#cylinder: 0.25 0 {} 0.25 0.3 {} {} pec \n".format(z,z,r))
2.生成结果:每次都随机生成含水量、半径、深度,含水量有Debye模型来确定;
3.整合到gprmax中可批量生成,代码如下:
#domain: 0.5 0.3 0.4
#dx_dy_dz: 0.001 0.001 0.001
#time_window: 3000#python:
import scipy.interpolate
import numpy as np
from random import random as rdm=np.array([12,9.3,6.2,5.5,2.8,0.2])
e_stat = np.array([12.84,11.19,9.14,8.63,6.75,4.814])
e_inf = np.array([7.42,7.2,5.93,6.023,5.503,4.507])
t = np.array([0.611,0.73,0.8,1,2.28,0.82])*10**-9
sigma = np.array([20.6,23,6.7,5.15,2.03,0.606])*10**-3es = scipy.interpolate.interp1d(m, e_stat)
ei = scipy.interpolate.interp1d(m, e_inf)
t0 = scipy.interpolate.interp1d(m, t)
si = scipy.interpolate.interp1d(m, sigma)mv=0.2+11.8*rd()print("#material: {} {} 1 0 concrete \n".format(ei(mv), si(mv)))
print("#add_dispersion_debye: 1 {} {} concrete \n".format(es(mv)-ei(mv), t0(mv)))print("#box: 0 0 0 0.5 0.3 0.3 concrete \n")r=0.005 + 0.0245*rd()
z=(0.3-r)*rd()
print("#cylinder: 0.25 0 {} 0.25 0.3 {} {} pec \n".format(z,z,r))filename="concrete_labels"
f=open(filename,'a')
f.write("{}: {} {} {}".format(current_model_run, r,z,mv))#定义天线
from user_libs.antennas import GSSI
GSSI.antenna_like_GSSI_1500(0.25,0.15,0.3,resolution=0.001)#end_python:
#geometry_view: 0 0 0 0.5 0.3 0.4 0.002 0.002 0.002 geo n
4.输入指令在gprmax中执行改输入文件:
- python -m gprMax ×××(文件名)-n 2000 ,这个两千是指模型数量
4、结果
最后结果会生成你所定义的模型数量的out文件;
这篇关于使用python脚本批量对gprmax建模(用不同含水量、rebar半径、rebar深度)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!