你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 04:56:51 +08:00
118 行
4.1 KiB
Python
可执行文件
118 行
4.1 KiB
Python
可执行文件
from pathlib import Path
|
|
|
|
import gprMax
|
|
|
|
# File path for output
|
|
fn = Path(__file__)
|
|
|
|
# Discretisation
|
|
dl = 0.001
|
|
|
|
# Domain
|
|
x = 0.100
|
|
y = 0.100
|
|
z = 0.100
|
|
|
|
domain = gprMax.Domain(p1=(x, y, z))
|
|
dxdydz = gprMax.Discretisation(p1=(dl, dl, dl))
|
|
time_window = gprMax.TimeWindow(time=3e-9)
|
|
|
|
waveform = gprMax.Waveform(wave_type="gaussian", amp=1, freq=1e9, id="mypulse")
|
|
hertzian_dipole = gprMax.HertzianDipole(polarisation="z", p1=(0.050, 0.050, 0.050), waveform_id="mypulse")
|
|
rx = gprMax.Rx(p1=(0.070, 0.070, 0.070))
|
|
|
|
# PML cases
|
|
thick = 10 # thickness
|
|
cases = {
|
|
"off": {"x0": 0, "y0": 0, "z0": 0, "xmax": 0, "ymax": 0, "zmax": 0},
|
|
"x0": {"x0": thick, "y0": 0, "z0": 0, "xmax": 0, "ymax": 0, "zmax": 0},
|
|
"y0": {"x0": 0, "y0": thick, "z0": 0, "xmax": 0, "ymax": 0, "zmax": 0},
|
|
"z0": {"x0": 0, "y0": 0, "z0": thick, "xmax": 0, "ymax": 0, "zmax": 0},
|
|
"xmax": {"x0": 0, "y0": 0, "z0": 0, "xmax": thick, "ymax": 0, "zmax": 0},
|
|
"ymax": {"x0": 0, "y0": 0, "z0": 0, "xmax": 0, "ymax": thick, "zmax": 0},
|
|
"zmax": {"x0": 0, "y0": 0, "z0": 0, "xmax": 0, "ymax": 0, "zmax": thick},
|
|
}
|
|
|
|
# PML formulation
|
|
pml_type = gprMax.PMLProps(formulation="HORIPML")
|
|
|
|
## Built-in 1st order PML
|
|
pml_cfs = gprMax.PMLCFS(
|
|
alphascalingprofile="constant",
|
|
alphascalingdirection="forward",
|
|
alphamin=0,
|
|
alphamax=0,
|
|
kappascalingprofile="constant",
|
|
kappascalingdirection="forward",
|
|
kappamin=1,
|
|
kappamax=1,
|
|
sigmascalingprofile="quartic",
|
|
sigmascalingdirection="forward",
|
|
sigmamin=0,
|
|
sigmamax=None,
|
|
)
|
|
|
|
## PMLs from http://dx.doi.org/10.1109/TAP.2011.2180344
|
|
## Standard PML
|
|
# pml_cfs = gprMax.PMLCFS(alphascalingprofile='constant',
|
|
# alphascalingdirection='forward',
|
|
# alphamin=0, alphamax=0,
|
|
# kappascalingprofile='quartic',
|
|
# kappascalingdirection='forward',
|
|
# kappamin=1, kappamax=11,
|
|
# sigmascalingprofile='quartic',
|
|
# sigmascalingdirection='forward',
|
|
# sigmamin=0, sigmamax=7.427)
|
|
|
|
## CFS PML
|
|
# pml_cfs = gprMax.PMLCFS(alphascalingprofile='constant',
|
|
# alphascalingdirection='forward',
|
|
# alphamin=0.05, alphamax=0.05,
|
|
# kappascalingprofile='quartic',
|
|
# kappascalingdirection='forward',
|
|
# kappamin=1, kappamax=7,
|
|
# sigmascalingprofile='quartic',
|
|
# sigmascalingdirection='forward',
|
|
# sigmamin=0, sigmamax=11.671)
|
|
|
|
## 2nd order RIPML
|
|
# pml_cfs1 = gprMax.PMLCFS(alphascalingprofile='constant',
|
|
# alphascalingdirection='forward',
|
|
# alphamin=0, alphamax=0,
|
|
# kappascalingprofile='constant',
|
|
# kappascalingdirection='forward',
|
|
# kappamin=1, kappamax=1,
|
|
# sigmascalingprofile='sextic',
|
|
# sigmascalingdirection='forward',
|
|
# sigmamin=0, sigmamax=0.5836)
|
|
# pml_cfs2 = gprMax.PMLCFS(alphascalingprofile='constant',
|
|
# alphascalingdirection='forward',
|
|
# alphamin=0.05, alphamax=0.05,
|
|
# kappascalingprofile='cubic',
|
|
# kappascalingdirection='forward',
|
|
# kappamin=1, kappamax=8,
|
|
# sigmascalingprofile='quadratic',
|
|
# sigmascalingdirection='forward',
|
|
# sigmamin=0, sigmamax=5.8357)
|
|
|
|
scenes = []
|
|
for k, v in cases.items():
|
|
scene = gprMax.Scene()
|
|
title = gprMax.Title(name=fn.with_suffix("").name + "_" + k)
|
|
scene.add(title)
|
|
scene.add(domain)
|
|
scene.add(dxdydz)
|
|
scene.add(time_window)
|
|
scene.add(waveform)
|
|
scene.add(hertzian_dipole)
|
|
scene.add(rx)
|
|
|
|
pml = gprMax.PMLProps(formulation="HORIPML", **v)
|
|
scene.add(pml)
|
|
scene.add(pml_cfs)
|
|
|
|
scenes.append(scene)
|
|
|
|
# Run model
|
|
gprMax.run(scenes=scenes, n=len(cases), geometry_only=False, outputfile=fn)
|