你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 23:14:03 +08:00
Re-structuring package layout
这个提交包含在:
481
toolboxes/GPRAntennaModels/MALA.py
普通文件
481
toolboxes/GPRAntennaModels/MALA.py
普通文件
@@ -0,0 +1,481 @@
|
||||
# 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
|
在新工单中引用
屏蔽一个用户