你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 15:10:13 +08:00
482 行
28 KiB
Python
482 行
28 KiB
Python
# Copyright (C) 2015-2021, Craig Warren
|
|
#
|
|
# This module is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
|
|
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.
|
|
#
|
|
# Please use the attribution at http://dx.doi.org/10.1190/1.3548506
|
|
|
|
import logging
|
|
|
|
import gprMax
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def antenna_like_MALA_1200(x, y, z, resolution=0.001, **kwargs):
|
|
"""Inserts a description of an antenna similar to the MALA 1.2GHz antenna.
|
|
Can be used with 1mm (default) or 2mm spatial resolution.
|
|
The external dimensions of the antenna are 184x109x46mm.
|
|
One output point is defined between the arms of the receiver bowtie.
|
|
The bowties are aligned with the y axis so the output is the y component
|
|
of the electric field (x component if the antenna is rotated 90 degrees).
|
|
|
|
Args:
|
|
x, y, z (float): Coordinates of a location in the model to insert the
|
|
antenna. Coordinates are relative to the geometric
|
|
centre of the antenna in the x-y plane and the
|
|
bottom of the antenna skid in the z direction.
|
|
resolution (float): Spatial resolution for the antenna model.
|
|
kwargs (dict): Optional variables, e.g. can be fed from an optimisation
|
|
process.
|
|
|
|
Returns:
|
|
scene_objects (list): All model objects that will be part of a scene.
|
|
"""
|
|
|
|
# All model objects that will be returned by function
|
|
scene_objects = []
|
|
|
|
# Antenna geometry properties
|
|
casesize = (0.184, 0.109, 0.040)
|
|
casethickness = 0.002
|
|
cavitysize = (0.062, 0.062, 0.037)
|
|
cavitythickness = 0.001
|
|
pcbthickness = 0.002
|
|
polypropylenethickness = 0.003
|
|
hdpethickness = 0.003
|
|
skidthickness = 0.006
|
|
bowtieheight = 0.025
|
|
|
|
# If using parameters from an optimisation
|
|
try:
|
|
kwargs
|
|
excitationfreq = kwargs['excitationfreq']
|
|
sourceresistance = kwargs['sourceresistance']
|
|
absorberEr = kwargs['absorberEr']
|
|
absorbersig = kwargs['absorbersig']
|
|
|
|
# Otherwise choose pre-set optimised parameters
|
|
except:
|
|
# Original optimised values from http://hdl.handle.net/1842/4074
|
|
excitationfreq = 0.978e9
|
|
sourceresistance = 1000
|
|
absorberEr = 6.49
|
|
absorbersig = 0.252
|
|
|
|
x = x - (casesize[0] / 2)
|
|
y = y - (casesize[1] / 2)
|
|
|
|
# Coordinates of source excitation point in antenna
|
|
tx = x + 0.063, y + 0.052, z + skidthickness
|
|
|
|
if resolution == 0.001:
|
|
dx = 0.001
|
|
dy = 0.001
|
|
dz = 0.001
|
|
elif resolution == 0.002:
|
|
dx = 0.002
|
|
dy = 0.002
|
|
dz = 0.002
|
|
cavitysize = (0.062, 0.062, 0.036)
|
|
cavitythickness = 0.002
|
|
polypropylenethickness = 0.002
|
|
hdpethickness = 0.004
|
|
bowtieheight = 0.024
|
|
tx = x + 0.062, y + 0.052, z + skidthickness
|
|
else:
|
|
logger.exception('This antenna module can only be used with a spatial resolution of 1mm or 2mm')
|
|
raise ValueError
|
|
|
|
# SMD resistors - 3 on each Tx & Rx bowtie arm
|
|
txres = 470 # Ohms
|
|
txrescellupper = txres / 3 # Resistor over 3 cells
|
|
txsigupper = ((1 / txrescellupper) * (dy / (dx * dz))) / 2 # Divide by number of parallel edges per resistor
|
|
txrescelllower = txres / 4 # Resistor over 4 cells
|
|
txsiglower = ((1 / txrescelllower) * (dy / (dx * dz))) / 2 # Divide by number of parallel edges per resistor
|
|
rxres = 150 # Ohms
|
|
rxrescellupper = rxres / 3 # Resistor over 3 cells
|
|
rxsigupper = ((1 / rxrescellupper) * (dy / (dx * dz))) / 2 # Divide by number of parallel edges per resistor
|
|
rxrescelllower = rxres / 4 # Resistor over 4 cells
|
|
rxsiglower = ((1 / rxrescelllower) * (dy / (dx * dz))) / 2 # Divide by number of parallel edges per resistor
|
|
|
|
# Material definitions
|
|
absorber = gprMax.Material(er=absorberEr, se=absorbersig, mr=1, sm=0, id='absorber')
|
|
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')
|
|
polypropylene = gprMax.Material(er=2.26, se=0, mr=1, sm=0, id='polypropylene')
|
|
txreslower = gprMax.Material(er=3, se=txsiglower, mr=1, sm=0, id='txreslower')
|
|
txresupper = gprMax.Material(er=3, se=txsigupper, mr=1, sm=0, id='txresupper')
|
|
rxreslower = gprMax.Material(er=3, se=rxsiglower, mr=1, sm=0, id='rxreslower')
|
|
rxresupper = gprMax.Material(er=3, se=rxsigupper, mr=1, sm=0, id='rxresupper')
|
|
scene_objects.extend((absorber, pcb, hdpe, polypropylene, txreslower, txresupper,
|
|
rxreslower, rxresupper))
|
|
|
|
# Antenna geometry
|
|
# Shield - metallic enclosure
|
|
b1 = gprMax.Box(p1=(x, y, z + skidthickness),
|
|
p2=(x + casesize[0], y + casesize[1], z + skidthickness + casesize[2]),
|
|
material_id='pec')
|
|
b2 = gprMax.Box(p1=(x + 0.020, y + casethickness, z + skidthickness),
|
|
p2=(x + 0.100, y + casesize[1] - casethickness,
|
|
z + skidthickness + casethickness), material_id='free_space')
|
|
b3 = gprMax.Box(p1=(x + 0.100, y + casethickness, z + skidthickness),
|
|
p2=(x + casesize[0] - casethickness, y + casesize[1] - casethickness,
|
|
z + skidthickness + casethickness), material_id='free_space')
|
|
|
|
# Absorber material
|
|
b4 = gprMax.Box(p1=(x + 0.020, y + casethickness, z + skidthickness),
|
|
p2=(x + 0.100, y + casesize[1] - casethickness,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='absorber')
|
|
b5 = gprMax.Box(p1=(x + 0.100, y + casethickness, z + skidthickness),
|
|
p2=(x + casesize[0] - casethickness, y + casesize[1] - casethickness,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='absorber')
|
|
scene_objects.extend((b1, b2, b3, b4, b5))
|
|
|
|
# Shield - cylindrical sections
|
|
c1 = gprMax.Cylinder(p1=(x + 0.055, y + casesize[1] - 0.008, z + skidthickness),
|
|
p2=(x + 0.055, y + casesize[1] - 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.008, material_id='pec')
|
|
c2 = gprMax.Cylinder(p1=(x + 0.055, y + 0.008, z + skidthickness),
|
|
p2=(x + 0.055, y + 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.008, material_id='pec')
|
|
c3 = gprMax.Cylinder(p1=(x + 0.147, y + casesize[1] - 0.008, z + skidthickness),
|
|
p2=(x + 0.147, y + casesize[1] - 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.008, material_id='pec')
|
|
c4 = gprMax.Cylinder(p1=(x + 0.147, y + 0.008, z + skidthickness),
|
|
p2=(x + 0.147, y + 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.008, material_id='pec')
|
|
c5 = gprMax.Cylinder(p1=(x + 0.055, y + casesize[1] - 0.008, z + skidthickness),
|
|
p2=(x + 0.055, y + casesize[1] - 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.007, material_id='free_space')
|
|
c6 = gprMax.Cylinder(p1=(x + 0.055, y + 0.008, z + skidthickness),
|
|
p2=(x + 0.055, y + 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.007, material_id='free_space')
|
|
c7 = gprMax.Cylinder(p1=(x + 0.147, y + casesize[1] - 0.008, z + skidthickness),
|
|
p2=(x + 0.147, y + casesize[1] - 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.007, material_id='free_space')
|
|
c8 = gprMax.Cylinder(p1=(x + 0.147, y + 0.008, z + skidthickness),
|
|
p2=(x + 0.147, y + 0.008,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
r=0.007, material_id='free_space')
|
|
b6 = gprMax.Box(p1=(x + 0.054, y + casesize[1] - 0.016, z + skidthickness),
|
|
p2=(x + 0.056, y + casesize[1] - 0.014,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='free_space')
|
|
b7 = gprMax.Box(p1=(x + 0.054, y + 0.014, z + skidthickness),
|
|
p2=(x + 0.056, y + 0.016,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='free_space')
|
|
b8 = gprMax.Box(p1=(x + 0.146, y + casesize[1] - 0.016, z + skidthickness),
|
|
p2=(x + 0.148, y + casesize[1] - 0.014,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='free_space')
|
|
b9 = gprMax.Box(p1=(x + 0.146, y + 0.014, z + skidthickness),
|
|
p2=(x + 0.148, y + 0.016,
|
|
z + skidthickness + casesize[2] - casethickness),
|
|
material_id='free_space')
|
|
scene_objects.extend((c1, c2, c3, c4, c5, c6, c7, c8, b6, b7, b8, b9))
|
|
|
|
# PCB
|
|
b10 = gprMax.Box(p1=(x + 0.020, y + 0.018, z + skidthickness),
|
|
p2=(x + casesize[0] - casethickness, y + casesize[1] - 0.018,
|
|
z + skidthickness + pcbthickness), material_id='pcb')
|
|
|
|
# Shield - Tx & Rx cavities
|
|
b11 = gprMax.Box(p1=(x + 0.032, y + 0.022, z + skidthickness),
|
|
p2=(x + 0.032 + cavitysize[0], y + 0.022 + cavitysize[1],
|
|
z + skidthickness + cavitysize[2]), material_id='pec')
|
|
b12 = gprMax.Box(p1=(x + 0.032 + cavitythickness, y + 0.022 + cavitythickness,
|
|
z + skidthickness), p2=(x + 0.032 + cavitysize[0] - cavitythickness,
|
|
y + 0.022 + cavitysize[1] - cavitythickness,
|
|
z + skidthickness + cavitysize[2]), material_id='absorber')
|
|
b13 = gprMax.Box(p1=(x + 0.108, y + 0.022, z + skidthickness),
|
|
p2=(x + 0.108 + cavitysize[0], y + 0.022 + cavitysize[1],
|
|
z + skidthickness + cavitysize[2]), material_id='pec')
|
|
b14 = gprMax.Box(p1=(x + 0.108 + cavitythickness, y + 0.022 + cavitythickness,
|
|
z + skidthickness), p2=(x + 0.108 + cavitysize[0] - cavitythickness,
|
|
y + 0.022 + cavitysize[1] - cavitythickness,
|
|
z + skidthickness + cavitysize[2]), material_id='free_space')
|
|
|
|
# Shield - Tx & Rx cavities - joining strips
|
|
b15 = gprMax.Box(p1=(x + 0.032 + cavitysize[0], y + 0.022 + cavitysize[1] - 0.006,
|
|
z + skidthickness + cavitysize[2] - casethickness),
|
|
p2=(x + 0.108, y + 0.022 + cavitysize[1],
|
|
z + skidthickness + cavitysize[2]), material_id='pec')
|
|
b16 = gprMax.Box(p1=(x + 0.032 + cavitysize[0], y + 0.022,
|
|
z + skidthickness + cavitysize[2] - casethickness),
|
|
p2=(x + 0.108, y + 0.022 + 0.006,
|
|
z + skidthickness + cavitysize[2]), material_id='pec')
|
|
|
|
# PCB - replace bits chopped by TX & Rx cavities
|
|
b17 = gprMax.Box(p1=(x + 0.032 + cavitythickness, y + 0.022 + cavitythickness,
|
|
z + skidthickness), p2=(x + 0.032 + cavitysize[0] - cavitythickness,
|
|
y + 0.022 + cavitysize[1] - cavitythickness,
|
|
z + skidthickness + pcbthickness), material_id='pcb')
|
|
b18 = gprMax.Box(p1=(x + 0.108 + cavitythickness, y + 0.022 + cavitythickness,
|
|
z + skidthickness), p2=(x + 0.108 + cavitysize[0] - cavitythickness,
|
|
y + 0.022 + cavitysize[1] - cavitythickness,
|
|
z + skidthickness + pcbthickness), material_id='pcb')
|
|
scene_objects.extend((b10, b11, b12, b13, b14, b15, b16, b17, b18))
|
|
|
|
# PCB components
|
|
# Tx bowtie
|
|
if resolution == 0.001:
|
|
t1 = gprMax.Triangle(p1=(tx[0], tx[1] - 0.001, tx[2]),
|
|
p2=(tx[0] - 0.026, tx[1] - bowtieheight - 0.001, tx[2]),
|
|
p3=(tx[0] + 0.026, tx[1] - bowtieheight - 0.001, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
e1 = gprMax.Edge(p1=(tx[0], tx[1] - 0.001, tx[2]),
|
|
p2=(tx[0], tx[1], tx[2]), material_id='pec')
|
|
t2 = gprMax.Triangle(p1=(tx[0], tx[1] + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p3=(tx[0] + 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
e2 = gprMax.Edge(p1=(tx[0], tx[1] + 0.001, tx[2]),
|
|
p2=(tx[0], tx[1] + 0.002, tx[2]), material_id='pec')
|
|
scene_objects.extend((t1, t2, e1, e2))
|
|
elif resolution == 0.002:
|
|
t1 = gprMax.Triangle(p1=(tx[0], tx[1], tx[2]),
|
|
p2=(tx[0] - 0.026, tx[1] - bowtieheight, tx[2]),
|
|
p3=(tx[0] + 0.026, tx[1] - bowtieheight, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
t2 = gprMax.Triangle(p1=(tx[0], tx[1] + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p3=(tx[0] + 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
scene_objects.extend((t1, t2))
|
|
|
|
# Rx bowtie
|
|
if resolution == 0.001:
|
|
t3 = gprMax.Triangle(p1=(tx[0] + 0.076, tx[1] - 0.001, tx[2]),
|
|
p2=(tx[0] + 0.076 - 0.026, tx[1] - bowtieheight - 0.001, tx[2]),
|
|
p3=(tx[0] + 0.076 + 0.026, tx[1] - bowtieheight - 0.001, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
e3 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] - 0.001, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1], tx[2]), material_id='pec')
|
|
t4 = gprMax.Triangle(p1=(tx[0] + 0.076, tx[1] + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.076 - 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p3=(tx[0] + 0.076 + 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
e4 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] + 0.001, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1] + 0.002, tx[2]), material_id='pec')
|
|
scene_objects.extend((t3, e3, t4, e4))
|
|
elif resolution == 0.002:
|
|
t3 = gprMax.Triangle(p1=(tx[0] + 0.076, tx[1], tx[2]),
|
|
p2=(tx[0] + 0.076 - 0.026, tx[1] - bowtieheight, tx[2]),
|
|
p3=(tx[0] + 0.076 + 0.026, tx[1] - bowtieheight, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
t4 = gprMax.Triangle(p1=(tx[0] + 0.076, tx[1] + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.076 - 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p3=(tx[0] + 0.076 + 0.026, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
thickness=0, material_id='pec')
|
|
scene_objects.extend((t3, t4))
|
|
|
|
# Tx surface mount resistors (lower y coordinate)
|
|
if resolution == 0.001:
|
|
e5 = gprMax.Edge(p1=(tx[0] - 0.023, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
e6 = gprMax.Edge(p1=(tx[0] - 0.023 + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
e7 = gprMax.Edge(p1=(tx[0], tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0], tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
e8 = gprMax.Edge(p1=(tx[0] + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + dx, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
e9 = gprMax.Edge(p1=(tx[0] + 0.022, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.022, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
e10 = gprMax.Edge(p1=(tx[0] + 0.022 + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.022 + dx, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='txreslower')
|
|
scene_objects.extend((e5, e6, e7, e8, e9, e10))
|
|
elif resolution == 0.002:
|
|
e5 = gprMax.Edge(p1=(tx[0] - 0.023, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023, tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
e6 = gprMax.Edge(p1=(tx[0] - 0.023 + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx, tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
e7 = gprMax.Edge(p1=(tx[0], tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0], tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
e8 = gprMax.Edge(p1=(tx[0] + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + dx, tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
e9 = gprMax.Edge(p1=(tx[0] + 0.020, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.020, tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
e10 = gprMax.Edge(p1=(tx[0] + 0.020 + dx, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.020 + dx, tx[1] - bowtieheight, tx[2]),
|
|
material_id='txreslower')
|
|
scene_objects.extend((e5, e6, e7, e8, e9, e10))
|
|
|
|
# Tx surface mount resistors (upper y coordinate)
|
|
if resolution == 0.001:
|
|
e11 = gprMax.Edge(p1=(tx[0] - 0.023, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e12 = gprMax.Edge(p1=(tx[0] - 0.023 + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e13 = gprMax.Edge(p1=(tx[0], tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0], tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e14 = gprMax.Edge(p1=(tx[0] + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e15 = gprMax.Edge(p1=(tx[0] + 0.022, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.022, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e16 = gprMax.Edge(p1=(tx[0] + 0.022 + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.022 + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
scene_objects.extend((e11, e12, e13, e14, e15, e16))
|
|
elif resolution == 0.002:
|
|
e11 = gprMax.Edge(p1=(tx[0] - 0.023, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e12 = gprMax.Edge(p1=(tx[0] - 0.023 + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e13 = gprMax.Edge(p1=(tx[0], tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0], tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e14 = gprMax.Edge(p1=(tx[0] + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e15 = gprMax.Edge(p1=(tx[0] + 0.020, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.020, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
e16 = gprMax.Edge(p1=(tx[0] + 0.020 + dx, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.020 + dx, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='txresupper')
|
|
scene_objects.extend((e11, e12, e13, e14, e15, e16))
|
|
|
|
# Rx surface mount resistors (lower y coordinate)
|
|
if resolution == 0.001:
|
|
e17 = gprMax.Edge(p1=(tx[0] - 0.023 + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
e18 = gprMax.Edge(p1=(tx[0] - 0.023 + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
e19 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
e20 = gprMax.Edge(p1=(tx[0] + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + dx + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
e21 = gprMax.Edge(p1=(tx[0] + 0.022 + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.022 + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
e22 = gprMax.Edge(p1=(tx[0] + 0.022 + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.022 + dx + 0.076, tx[1] - bowtieheight - dy, tx[2]),
|
|
material_id='rxreslower')
|
|
scene_objects.extend((e17, e18, e19, e20, e21, e22))
|
|
elif resolution == 0.002:
|
|
e17 = gprMax.Edge(p1=(tx[0] - 0.023 + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
e18 = gprMax.Edge(p1=(tx[0] - 0.023 + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
e19 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
e20 = gprMax.Edge(p1=(tx[0] + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + dx + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
e21 = gprMax.Edge(p1=(tx[0] + 0.020 + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.020 + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
e22 = gprMax.Edge(p1=(tx[0] + 0.020 + dx + 0.076, tx[1] - bowtieheight - 0.004, tx[2]),
|
|
p2=(tx[0] + 0.020 + dx + 0.076, tx[1] - bowtieheight, tx[2]),
|
|
material_id='rxreslower')
|
|
scene_objects.extend((e17, e18, e19, e20, e21, e22))
|
|
|
|
# Rx surface mount resistors (upper y coordinate)
|
|
if resolution == 0.001:
|
|
e23 = gprMax.Edge(p1=(tx[0] - 0.023 + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e24 = gprMax.Edge(p1=(tx[0] - 0.023 + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e25 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e26 = gprMax.Edge(p1=(tx[0] + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e27 = gprMax.Edge(p1=(tx[0] + 0.022 + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.022 + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e28 = gprMax.Edge(p1=(tx[0] + 0.022 + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.022 + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
scene_objects.extend((e23, e24, e25, e26, e27, e28))
|
|
elif resolution == 0.002:
|
|
e23 = gprMax.Edge(p1=(tx[0] - 0.023 + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e24 = gprMax.Edge(p1=(tx[0] - 0.023 + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] - 0.023 + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e25 = gprMax.Edge(p1=(tx[0] + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e26 = gprMax.Edge(p1=(tx[0] + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e27 = gprMax.Edge(p1=(tx[0] + 0.020 + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.020 + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
e28 = gprMax.Edge(p1=(tx[0] + 0.020 + dx + 0.076, tx[1] + bowtieheight + 0.002, tx[2]),
|
|
p2=(tx[0] + 0.020 + dx + 0.076, tx[1] + bowtieheight + 0.006, tx[2]),
|
|
material_id='rxresupper')
|
|
scene_objects.extend((e23, e24, e25, e26, e27, e28))
|
|
|
|
# Skid
|
|
b19 = gprMax.Box(p1=(x, y, z), p2=(x + casesize[0], y + casesize[1],
|
|
z + polypropylenethickness), material_id='polypropylene')
|
|
b20 = gprMax.Box(p1=(x, y, z + polypropylenethickness),
|
|
p2=(x + casesize[0], y + casesize[1],
|
|
z + polypropylenethickness + hdpethickness),
|
|
material_id='hdpe')
|
|
scene_objects.extend((b19, b20))
|
|
|
|
# Excitation
|
|
w2 = gprMax.Waveform(wave_type='gaussian', amp=1, freq=excitationfreq, id='my_gaussian')
|
|
scene_objects.append(w2)
|
|
vs1 = gprMax.VoltageSource(polarisation='y', p1=(tx[0], tx[1], tx[2]),
|
|
resistance=sourceresistance, waveform_id='my_gaussian')
|
|
scene_objects.append(vs1)
|
|
|
|
# Output point - receiver bowtie
|
|
r1 = gprMax.Rx(p1=(tx[0] + 0.076, tx[1], tx[2]), id='rxbowtie', outputs='Ey')
|
|
scene_objects.append(r1)
|
|
|
|
# Geometry views
|
|
gv1 = gprMax.GeometryView(p1=(x - dx, y - dy, z - dz), p2=(x + casesize[0] + dx,
|
|
y + casesize[1] + dy, z + skidthickness + casesize[2] + dz),
|
|
dl=(dx, dy, dz), filename='antenna_like_MALA_1200',
|
|
output_type='n')
|
|
gv2 = gprMax.GeometryView(p1=(x, y, z), p2=(x + casesize[0], y + casesize[1], z + 0.010),
|
|
dl=(dx, dy, dz), filename='antenna_like_MALA_1200_pcb',
|
|
output_type='f')
|
|
# scene_objects.extend((gv1, gv2))
|
|
|
|
return scene_objects
|