Fix file not found when not run from repo root

这个提交包含在:
nmannall
2024-04-17 12:06:10 +01:00
父节点 eb8d2602cf
当前提交 a4dcb46c12

查看文件

@@ -6,6 +6,7 @@
# Please use the attribution at http://dx.doi.org/10.1190/1.3548506
import logging
from pathlib import Path
import gprMax
@@ -64,7 +65,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
patchheight = 0.016
tx = x + 0.114, y + 0.052, z + skidthickness
else:
logger.exception("This antenna module can only be used with a spatial discretisation of 1mm or 2mm")
logger.exception(
"This antenna module can only be used with a spatial discretisation of 1mm or 2mm"
)
raise ValueError
# If using parameters from an optimisation
@@ -98,7 +101,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
sourceresistance = 230 # Correction for old (< 123) GprMax3D bug (optimised to 4)
rxres = 925 # Resistance at Rx bowtie
absorber1 = gprMax.Material(er=1.58, se=0.428, mr=1, sm=0, id="absorber1")
absorber2 = gprMax.Material(er=3, se=0, mr=1, sm=0, id="absorber2") # Foam modelled as PCB material
absorber2 = gprMax.Material(
er=3, se=0, mr=1, sm=0, id="absorber2"
) # Foam modelled as PCB material
pcb = gprMax.Material(er=3, se=0, mr=1, sm=0, id="pcb")
hdpe = gprMax.Material(er=2.35, se=0, mr=1, sm=0, id="hdpe")
rxres = gprMax.Material(er=3, se=(1 / rxres) * (dy / (dx * dz)), mr=1, sm=0, id="rxres")
@@ -117,7 +122,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
tau=[1.00723e-11, 1.55686e-10, 3.44129e-10],
material_ids=["absorber1"],
)
absorber2 = gprMax.Material(er=3, se=0, mr=1, sm=0, id="absorber2") # Foam modelled as PCB material
absorber2 = gprMax.Material(
er=3, se=0, mr=1, sm=0, id="absorber2"
) # Foam modelled as PCB material
pcb = gprMax.Material(er=3, se=0, mr=1, sm=0, id="pcb")
hdpe = gprMax.Material(er=2.35, se=0, mr=1, sm=0, id="hdpe")
rxres = gprMax.Material(er=3, se=(1 / rxres) * (dy / (dx * dz)), mr=1, sm=0, id="rxres")
@@ -299,12 +306,20 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
scene_objects.extend((p9, p10))
# Edges that represent wire between bowtie halves in 1mm model
e1 = gprMax.Edge(p1=(tx[0] - 0.059, tx[1] - dy, tx[2]), p2=(tx[0] - 0.059, tx[1], tx[2]), material_id="pec")
e1 = gprMax.Edge(
p1=(tx[0] - 0.059, tx[1] - dy, tx[2]),
p2=(tx[0] - 0.059, tx[1], tx[2]),
material_id="pec",
)
e2 = gprMax.Edge(
p1=(tx[0] - 0.059, tx[1] + dy, tx[2]), p2=(tx[0] - 0.059, tx[1] + 0.002, tx[2]), material_id="pec"
p1=(tx[0] - 0.059, tx[1] + dy, tx[2]),
p2=(tx[0] - 0.059, tx[1] + 0.002, tx[2]),
material_id="pec",
)
e3 = gprMax.Edge(p1=(tx[0], tx[1] - dy, tx[2]), p2=(tx[0], tx[1], tx[2]), material_id="pec")
e4 = gprMax.Edge(p1=(tx[0], tx[1] + dz, tx[2]), p2=(tx[0], tx[1] + 0.002, tx[2]), material_id="pec")
e4 = gprMax.Edge(
p1=(tx[0], tx[1] + dz, tx[2]), p2=(tx[0], tx[1] + 0.002, tx[2]), material_id="pec"
)
scene_objects.extend((e1, e2, e3, e4))
elif resolution == 0.002:
@@ -359,7 +374,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
scene_objects.extend((p11, p12))
# Skid
b10 = gprMax.Box(p1=(x, y, z), p2=(x + casesize[0], y + casesize[1], z + skidthickness), material_id="hdpe")
b10 = gprMax.Box(
p1=(x, y, z), p2=(x + casesize[0], y + casesize[1], z + skidthickness), material_id="hdpe"
)
scene_objects.append(b10)
# Geometry views
@@ -384,17 +401,25 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
# Gaussian pulse
w1 = gprMax.Waveform(wave_type="gaussian", amp=1, freq=excitationfreq, id="my_gaussian")
vs1 = gprMax.VoltageSource(
polarisation="y", p1=(tx[0], tx[1], tx[2]), resistance=sourceresistance, waveform_id="my_gaussian"
polarisation="y",
p1=(tx[0], tx[1], tx[2]),
resistance=sourceresistance,
waveform_id="my_gaussian",
)
scene_objects.extend((w1, vs1))
elif optstate == "GiannakisPaper":
# Optimised custom pulse
exc1 = gprMax.ExcitationFile(
filepath="toolboxes/GPRAntennaModels/GSSI_1500MHz_pulse.txt", kind="linear", fill_value="extrapolate"
filepath=Path(__file__).with_name("GSSI_1500MHz_pulse.txt"),
kind="linear",
fill_value="extrapolate",
)
vs1 = gprMax.VoltageSource(
polarisation="y", p1=(tx[0], tx[1], tx[2]), resistance=sourceresistance, waveform_id="my_pulse"
polarisation="y",
p1=(tx[0], tx[1], tx[2]),
resistance=sourceresistance,
waveform_id="my_pulse",
)
scene_objects.extend((exc1, vs1))
@@ -402,7 +427,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
if resolution == 0.001:
if optstate == "WarrenThesis" or optstate == "DebyeAbsorber":
e1 = gprMax.Edge(
p1=(tx[0] - 0.059, tx[1], tx[2]), p2=(tx[0] - 0.059, tx[1] + dy, tx[2]), material_id="rxres"
p1=(tx[0] - 0.059, tx[1], tx[2]),
p2=(tx[0] - 0.059, tx[1] + dy, tx[2]),
material_id="rxres",
)
scene_objects.append(e1)
r1 = gprMax.Rx(p1=(tx[0] - 0.059, tx[1], tx[2]), id="rxbowtie", outputs="Ey")
@@ -411,7 +438,9 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs):
elif resolution == 0.002:
if optstate == "WarrenThesis" or optstate == "DebyeAbsorber":
e1 = gprMax.Edge(
p1=(tx[0] - 0.060, tx[1], tx[2]), p2=(tx[0] - 0.060, tx[1] + dy, tx[2]), material_id="rxres"
p1=(tx[0] - 0.060, tx[1], tx[2]),
p2=(tx[0] - 0.060, tx[1] + dy, tx[2]),
material_id="rxres",
)
scene_objects.append(e1)
r1 = gprMax.Rx(p1=(tx[0] - 0.060, tx[1], tx[2]), id="rxbowtie", outputs="Ey")
@@ -492,7 +521,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
dz = 0.002
foamsurroundthickness = 0.002
metalboxheight = 0.088
tx = x + 0.01 + 0.004 + 0.056, y + casethickness + 0.005 + 0.143 - 0.002, z + skidthickness - 0.002
tx = (
x + 0.01 + 0.004 + 0.056,
y + casethickness + 0.005 + 0.143 - 0.002,
z + skidthickness - 0.002,
)
# Material definitions
absorber = gprMax.Material(er=absorberEr, se=absorbersig, mr=1, sm=0, id="absorber")
@@ -510,13 +543,21 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
)
b2 = gprMax.Box(
p1=(x + casethickness, y + casethickness, z + skidthickness - 0.002),
p2=(x + casesize[0] - casethickness, y + casesize[1] - casethickness, z + casesize[2] - casethickness),
p2=(
x + casesize[0] - casethickness,
y + casesize[1] - casethickness,
z + casesize[2] - casethickness,
),
material_id="free_space",
)
# Metallic enclosure
b3 = gprMax.Box(
p1=(x + casethickness, y + casethickness, z + skidthickness + (metalmiddleplateheight - metalboxheight)),
p1=(
x + casethickness,
y + casethickness,
z + skidthickness + (metalmiddleplateheight - metalboxheight),
),
p2=(
x + casesize[0] - casethickness,
y + casesize[1] - casethickness,
@@ -552,7 +593,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
# PCB
b6 = gprMax.Box(
p1=(x + 0.01 + 0.005 + 0.017, y + casethickness + 0.005 + 0.021, z + skidthickness - 0.002),
p1=(
x + 0.01 + 0.005 + 0.017,
y + casethickness + 0.005 + 0.021,
z + skidthickness - 0.002,
),
p2=(
x + 0.01 + 0.005 + 0.033 + bowtiebase,
y + casethickness + 0.006 + 0.202 + patchheight,
@@ -561,7 +606,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
material_id="pcb",
)
b7 = gprMax.Box(
p1=(x + 0.01 + 0.005 + 0.179, y + casethickness + 0.005 + 0.021, z + skidthickness - 0.002),
p1=(
x + 0.01 + 0.005 + 0.179,
y + casethickness + 0.005 + 0.021,
z + skidthickness - 0.002,
),
p2=(
x + 0.01 + 0.005 + 0.195 + bowtiebase,
y + casethickness + 0.006 + 0.202 + patchheight,
@@ -581,14 +630,22 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
)
b9 = gprMax.Box(
p1=(x + casethickness, y + casethickness, z + skidthickness - 0.002),
p2=(x + casesize[0] - casethickness, y + casesize[1] - casethickness, z + casesize[2] - casethickness),
p2=(
x + casesize[0] - casethickness,
y + casesize[1] - casethickness,
z + casesize[2] - casethickness,
),
material_id="free_space",
averaging="n",
)
# Metallic enclosure
b10 = gprMax.Box(
p1=(x + casethickness, y + casethickness, z + skidthickness + (metalmiddleplateheight - metalboxheight)),
p1=(
x + casethickness,
y + casethickness,
z + skidthickness + (metalmiddleplateheight - metalboxheight),
),
p2=(
x + casesize[0] - casethickness,
y + casesize[1] - casethickness,
@@ -626,7 +683,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
# PCB
b13 = gprMax.Box(
p1=(x + 0.01 + 0.005 + 0.017, y + casethickness + 0.005 + 0.021, z + skidthickness - 0.002),
p1=(
x + 0.01 + 0.005 + 0.017,
y + casethickness + 0.005 + 0.021,
z + skidthickness - 0.002,
),
p2=(
x + 0.01 + 0.005 + 0.033 + bowtiebase,
y + casethickness + 0.006 + 0.202 + patchheight,
@@ -672,7 +733,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
# triangles
t1 = gprMax.Triangle(
p1=(x + 0.01 + 0.005 + 0.025, y + casethickness + 0.005 + 0.081, z + skidthickness - 0.002),
p2=(x + 0.01 + 0.005 + 0.025 + bowtiebase, y + casethickness + 0.005 + 0.081, z + skidthickness - 0.002),
p2=(
x + 0.01 + 0.005 + 0.025 + bowtiebase,
y + casethickness + 0.005 + 0.081,
z + skidthickness - 0.002,
),
p3=(
x + 0.01 + 0.005 + 0.025 + (bowtiebase / 2),
y + casethickness + 0.005 + 0.081 + bowtieheight,
@@ -683,7 +748,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
)
t2 = gprMax.Triangle(
p1=(x + 0.01 + 0.005 + 0.025, y + casethickness + 0.005 + 0.203, z + skidthickness - 0.002),
p2=(x + 0.01 + 0.005 + 0.025 + bowtiebase, y + casethickness + 0.005 + 0.203, z + skidthickness - 0.002),
p2=(
x + 0.01 + 0.005 + 0.025 + bowtiebase,
y + casethickness + 0.005 + 0.203,
z + skidthickness - 0.002,
),
p3=(
x + 0.01 + 0.005 + 0.025 + (bowtiebase / 2),
y + casethickness + 0.005 + 0.203 - bowtieheight,
@@ -714,7 +783,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
# triangles
t3 = gprMax.Triangle(
p1=(x + 0.01 + 0.005 + 0.187, y + casethickness + 0.005 + 0.081, z + skidthickness - 0.002),
p2=(x + 0.01 + 0.005 + 0.187 + bowtiebase, y + casethickness + 0.005 + 0.081, z + skidthickness - 0.002),
p2=(
x + 0.01 + 0.005 + 0.187 + bowtiebase,
y + casethickness + 0.005 + 0.081,
z + skidthickness - 0.002,
),
p3=(
x + 0.01 + 0.005 + 0.187 + (bowtiebase / 2),
y + casethickness + 0.005 + 0.081 + bowtieheight,
@@ -725,7 +798,11 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
)
t4 = gprMax.Triangle(
p1=(x + 0.01 + 0.005 + 0.187, y + casethickness + 0.005 + 0.203, z + skidthickness - 0.002),
p2=(x + 0.01 + 0.005 + 0.187 + bowtiebase, y + casethickness + 0.005 + 0.203, z + skidthickness - 0.002),
p2=(
x + 0.01 + 0.005 + 0.187 + bowtiebase,
y + casethickness + 0.005 + 0.203,
z + skidthickness - 0.002,
),
p3=(
x + 0.01 + 0.005 + 0.187 + (bowtiebase / 2),
y + casethickness + 0.005 + 0.203 - bowtieheight,
@@ -736,12 +813,18 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
)
# Edges that represent wire between bowtie halves in 2mm model
e1 = gprMax.Edge(p1=(tx[0] + 0.162, tx[1] - dy, tx[2]), p2=(tx[0] + 0.162, tx[1], tx[2]), material_id="pec")
e1 = gprMax.Edge(
p1=(tx[0] + 0.162, tx[1] - dy, tx[2]), p2=(tx[0] + 0.162, tx[1], tx[2]), material_id="pec"
)
e2 = gprMax.Edge(
p1=(tx[0] + 0.162, tx[1] + dy, tx[2]), p2=(tx[0] + 0.162, tx[1] + 2 * dy, tx[2]), material_id="pec"
p1=(tx[0] + 0.162, tx[1] + dy, tx[2]),
p2=(tx[0] + 0.162, tx[1] + 2 * dy, tx[2]),
material_id="pec",
)
e3 = gprMax.Edge(p1=(tx[0], tx[1] - dy, tx[2]), p2=(tx[0], tx[1], tx[2]), material_id="pec")
e4 = gprMax.Edge(p1=(tx[0], tx[1] + dy, tx[2]), p2=(tx[0], tx[1] + 2 * dy, tx[2]), material_id="pec")
e4 = gprMax.Edge(
p1=(tx[0], tx[1] + dy, tx[2]), p2=(tx[0], tx[1] + 2 * dy, tx[2]), material_id="pec"
)
scene_objects.extend((p1, p2, t1, t2, p3, p4, t3, t4, e1, e2, e3, e4))
# Metallic plate extension
@@ -758,7 +841,9 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
# Skid
if smooth_dec == "yes":
b16 = gprMax.Box(
p1=(x, y, z), p2=(x + casesize[0], y + casesize[1], z + skidthickness - 0.002), material_id="hdpe"
p1=(x, y, z),
p2=(x + casesize[0], y + casesize[1], z + skidthickness - 0.002),
material_id="hdpe",
)
elif smooth_dec == "no":
b16 = gprMax.Box(
@@ -773,22 +858,33 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs):
if src_type == "voltage_source":
w1 = gprMax.Waveform(wave_type="gaussian", amp=1, freq=excitationfreq, id="my_gaussian")
vs1 = gprMax.VoltageSource(
polarisation="y", p1=(tx[0], tx[1], tx[2]), resistance=sourceresistance, waveform_id="my_gaussian"
polarisation="y",
p1=(tx[0], tx[1], tx[2]),
resistance=sourceresistance,
waveform_id="my_gaussian",
)
scene_objects.extend((w1, vs1))
elif src_type == "transmission_line":
w1 = gprMax.Waveform(wave_type="gaussian", amp=1, freq=excitationfreq, id="my_gaussian")
tl1 = gprMax.TransmissionLine(
polarisation="y", p1=(tx[0], tx[1], tx[2]), resistance=sourceresistance, waveform_id="my_gaussian"
polarisation="y",
p1=(tx[0], tx[1], tx[2]),
resistance=sourceresistance,
waveform_id="my_gaussian",
)
scene_objects.extend((w1, tl1))
else:
# Optimised custom pulse
exc1 = gprMax.ExcitationFile(
filepath="toolboxes/GPRAntennaModels/GSSI_400MHz_pulse.txt", kind="linear", fill_value="extrapolate"
filepath=Path(__file__).with_name("GSSI_400MHz_pulse.txt"),
kind="linear",
fill_value="extrapolate",
)
vs1 = gprMax.VoltageSource(
polarisation="y", p1=(tx[0], tx[1], tx[2]), resistance=sourceresistance, waveform_id="my_pulse"
polarisation="y",
p1=(tx[0], tx[1], tx[2]),
resistance=sourceresistance,
waveform_id="my_pulse",
)
scene_objects.extend((exc1, vs1))