Revert "Refactor remaining UserObjectGeometry build processes"

This reverts commit 444f2a6a7f.
这个提交包含在:
nmannall
2024-05-20 15:20:20 +01:00
父节点 c63b8f3229
当前提交 388e025aed
共有 15 个文件被更改,包括 72 次插入86 次删除

查看文件

@@ -65,7 +65,7 @@ class AddSurfaceRoughness(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -91,7 +91,7 @@ class AddSurfaceRoughness(UserObjectGeometry):
self._do_rotate()
# Get the correct fractal volume
volumes = [volume for volume in model.fractalvolumes if volume.ID == fractal_box_id]
volumes = [volume for volume in grid.fractalvolumes if volume.ID == fractal_box_id]
if volumes:
volume = volumes[0]
else:
@@ -121,7 +121,6 @@ class AddSurfaceRoughness(UserObjectGeometry):
raise ValueError
# Check for valid orientations
grid = uip.grid
if xs == xf:
if ys == yf or zs == zf:
logger.exception(f"{self.__str__()} dimensions are not specified correctly")

查看文件

@@ -60,7 +60,7 @@ class AddSurfaceWater(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def build(self, model, uip):
def build(self, grid, uip):
""" "Create surface water on fractal box."""
try:
p1 = self.kwargs["p1"]
@@ -74,7 +74,7 @@ class AddSurfaceWater(UserObjectGeometry):
if self.do_rotate:
self._do_rotate()
if volumes := [volume for volume in model.fractalvolumes if volume.ID == fractal_box_id]:
if volumes := [volume for volume in grid.fractalvolumes if volume.ID == fractal_box_id]:
volume = volumes[0]
else:
logger.exception(f"{self.__str__()} cannot find FractalBox {fractal_box_id}")
@@ -89,7 +89,6 @@ class AddSurfaceWater(UserObjectGeometry):
raise ValueError
# Check for valid orientations
grid = uip.grid
if xs == xf:
if ys == yf or zs == zf:
logger.exception(f"{self.__str__()} dimensions are not specified correctly")
@@ -166,11 +165,11 @@ class AddSurfaceWater(UserObjectGeometry):
raise ValueError
# Check to see if water has been already defined as a material
if not any(x.ID == "water" for x in model.materials):
create_water(model)
if not any(x.ID == "water" for x in grid.materials):
create_water(grid)
# Check if time step for model is suitable for using water
water = next((x for x in model.materials if x.ID == "water"))
water = next((x for x in grid.materials if x.ID == "water"))
if testwater := next((x for x in water.tau if x < grid.dt), None):
logger.exception(
f"{self.__str__()} requires the time step for the model "

查看文件

@@ -60,7 +60,7 @@ class Box(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -89,7 +89,7 @@ class Box(UserObjectGeometry):
averagebox = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagebox = model.averagevolumeobjects
averagebox = grid.averagevolumeobjects
p3, p4 = uip.check_box_points(p1, p2, self.__str__())
# Find nearest point on grid without translation
@@ -99,7 +99,7 @@ class Box(UserObjectGeometry):
xf, yf, zf = p4
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -118,11 +118,11 @@ class Box(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -132,9 +132,8 @@ class Box(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
grid = uip.grid
build_box(
xs,
xf,

查看文件

@@ -48,7 +48,7 @@ class Cone(UserObjectGeometry):
super().__init__(**kwargs)
self.hash = "#cone"
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -64,7 +64,7 @@ class Cone(UserObjectGeometry):
averagecylinder = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagecylinder = model.averagevolumeobjects
averagecylinder = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -101,7 +101,7 @@ class Cone(UserObjectGeometry):
raise ValueError
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -120,11 +120,11 @@ class Cone(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -134,9 +134,8 @@ class Cone(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
grid = uip.grid
build_cone(
x1,
y1,

查看文件

@@ -46,7 +46,7 @@ class Cylinder(UserObjectGeometry):
super().__init__(**kwargs)
self.hash = "#cylinder"
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -61,7 +61,7 @@ class Cylinder(UserObjectGeometry):
averagecylinder = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagecylinder = model.averagevolumeobjects
averagecylinder = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -86,7 +86,7 @@ class Cylinder(UserObjectGeometry):
raise ValueError
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -105,11 +105,11 @@ class Cylinder(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -119,9 +119,8 @@ class Cylinder(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
grid = uip.grid
build_cylinder(
x1,
y1,

查看文件

@@ -55,7 +55,7 @@ class CylindricalSector(UserObjectGeometry):
super().__init__(**kwargs)
self.hash = "#cylindrical_sector"
def build(self, model, uip):
def build(self, grid, uip):
try:
normal = self.kwargs["normal"].lower()
ctr1 = self.kwargs["ctr1"]
@@ -76,7 +76,7 @@ class CylindricalSector(UserObjectGeometry):
averagecylindricalsector = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagecylindricalsector = model.averagevolumeobjects
averagecylindricalsector = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -110,7 +110,7 @@ class CylindricalSector(UserObjectGeometry):
raise ValueError
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -129,11 +129,11 @@ class CylindricalSector(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = f"{materials[0].ID}+{materials[1].ID}+{materials[2].ID}"
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -143,7 +143,7 @@ class CylindricalSector(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
else:
averaging = False
# Isotropic case
@@ -170,7 +170,6 @@ class CylindricalSector(UserObjectGeometry):
elif normal == "z":
ctr1, ctr2, level = uip.round_to_grid((ctr1, ctr2, extent1))
grid = uip.grid
build_cylindrical_sector(
ctr1,
ctr2,

查看文件

@@ -54,7 +54,7 @@ class Edge(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def build(self, model, uip):
def build(self, grid, uip):
"""Creates edge and adds it to the grid."""
try:
p1 = self.kwargs["p1"]
@@ -74,13 +74,12 @@ class Edge(UserObjectGeometry):
xs, ys, zs = p1
xf, yf, zf = p2
material = next((x for x in model.materials if x.ID == material_id), None)
material = next((x for x in grid.materials if x.ID == material_id), None)
if not material:
logger.exception(f"Material with ID {material_id} does not exist")
raise ValueError
grid = uip.grid
# Check for valid orientations
# x-orientated edge
if (

查看文件

@@ -45,7 +45,7 @@ class Ellipsoid(UserObjectGeometry):
super().__init__(**kwargs)
self.hash = "#ellipsoid"
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
xr = self.kwargs["xr"]
@@ -62,7 +62,7 @@ class Ellipsoid(UserObjectGeometry):
averageellipsoid = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averageellipsoid = model.averagevolumeobjects
averageellipsoid = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -81,7 +81,7 @@ class Ellipsoid(UserObjectGeometry):
xc, yc, zc = uip.discretise_point(p1)
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -100,11 +100,11 @@ class Ellipsoid(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -114,9 +114,8 @@ class Ellipsoid(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
grid = uip.grid
build_ellipsoid(
xc,
yc,

查看文件

@@ -24,8 +24,6 @@ import gprMax.config as config
from gprMax.cmds_geometry.cmds_geometry import UserObjectGeometry, rotate_2point_object
from gprMax.fractals import FractalVolume
from gprMax.materials import ListMaterial
from gprMax.model import Model
from gprMax.user_inputs import MainGridUserInput
from ..cython.geometry_primitives import build_voxels_from_array, build_voxels_from_array_mask
@@ -75,7 +73,7 @@ class FractalBox(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def pre_build(self, model: Model, uip: MainGridUserInput):
def pre_build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -142,8 +140,8 @@ class FractalBox(UserObjectGeometry):
# Find materials to use to build fractal volume, either from mixing
# models or normal materials.
mixingmodel = next((x for x in model.mixingmodels if x.ID == mixing_model_id), None)
material = next((x for x in model.materials if x.ID == mixing_model_id), None)
mixingmodel = next((x for x in grid.mixingmodels if x.ID == mixing_model_id), None)
material = next((x for x in grid.materials if x.ID == mixing_model_id), None)
nbins = n_materials
if mixingmodel:
@@ -161,7 +159,7 @@ class FractalBox(UserObjectGeometry):
raise ValueError
# Create materials from mixing model as number of bins now known
# from fractal_box command.
mixingmodel.calculate_properties(nbins, model)
mixingmodel.calculate_properties(nbins, grid)
elif not material:
logger.exception(
f"{self.__str__()} mixing model or material with "
@@ -179,7 +177,7 @@ class FractalBox(UserObjectGeometry):
dielectricsmoothing = "on" if self.volume.averaging else "off"
logger.info(
f"{self.grid_name(uip.grid)}Fractal box {self.volume.ID} from "
f"{self.grid_name(grid)}Fractal box {self.volume.ID} from "
f"{p3[0]:g}m, {p3[1]:g}m, {p3[2]:g}m, to {p4[0]:g}m, "
f"{p4[1]:g}m, {p4[2]:g}m with {self.volume.operatingonID}, "
f"fractal dimension {self.volume.dimension:g}, fractal weightings "
@@ -188,14 +186,13 @@ class FractalBox(UserObjectGeometry):
f"with {self.volume.nbins} material(s) created, dielectric smoothing "
f"is {dielectricsmoothing}."
)
model.fractalvolumes.append(self.volume)
grid.fractalvolumes.append(self.volume)
def build(self, model, uip):
def build(self, grid, uip):
if self.do_pre_build:
self.pre_build(model, uip)
self.pre_build(grid, uip)
self.do_pre_build = False
else:
grid = uip.grid
if self.volume.fractalsurfaces:
self.volume.originalxs = self.volume.xs
self.volume.originalxf = self.volume.xf
@@ -240,7 +237,7 @@ class FractalBox(UserObjectGeometry):
dtype=config.sim_config.dtypes["float_or_double"],
)
materialnumID = next(
x.numID for x in model.materials if x.ID == self.volume.operatingonID
x.numID for x in grid.materials if x.ID == self.volume.operatingonID
)
self.volume.fractalvolume *= materialnumID
else:
@@ -655,8 +652,8 @@ class FractalBox(UserObjectGeometry):
root += 1
# Build voxels from any true values of the 3D mask array
waternumID = next((x.numID for x in model.materials if x.ID == "water"), 0)
grassnumID = next((x.numID for x in model.materials if x.ID == "grass"), 0)
waternumID = next((x.numID for x in grid.materials if x.ID == "water"), 0)
grassnumID = next((x.numID for x in grid.materials if x.ID == "grass"), 0)
data = self.volume.fractalvolume.astype("int16", order="C")
mask = self.volume.mask.copy(order="C")
build_voxels_from_array_mask(

查看文件

@@ -39,7 +39,7 @@ class GeometryObjectsRead(UserObjectGeometry):
def rotate(self, axis, angle, origin=None):
pass
def build(self, model, uip):
def build(self, grid, uip):
"""Creates the object and adds it to the grid."""
try:
p1 = self.kwargs["p1"]
@@ -62,7 +62,7 @@ class GeometryObjectsRead(UserObjectGeometry):
matfile = Path(config.sim_config.input_file_path.parent, matfile)
matstr = matfile.with_suffix("").name
numexistmaterials = len(model.materials)
numexistmaterials = len(grid.materials)
# Read materials from file
with open(matfile, "r") as f:
@@ -82,10 +82,10 @@ class GeometryObjectsRead(UserObjectGeometry):
scene.add(material_obj)
# Creates the internal simulation objects
scene.process_cmds(material_objs, model)
scene.process_cmds(material_objs, grid)
# Update material type
for material in model.materials:
for material in grid.materials:
if material.numID >= numexistmaterials:
if material.type:
material.type += ",\nimported"
@@ -101,7 +101,6 @@ class GeometryObjectsRead(UserObjectGeometry):
# Open geometry object file and read/check spatial resolution attribute
f = h5py.File(geofile, "r")
dx_dy_dz = f.attrs["dx_dy_dz"]
grid = uip.grid
if round_value(
(dx_dy_dz[0] / grid.dx) != 1
or round_value(dx_dy_dz[1] / grid.dy) != 1

查看文件

@@ -55,7 +55,7 @@ class Plate(UserObjectGeometry):
self.kwargs["p1"] = tuple(rot_pts[0, :])
self.kwargs["p2"] = tuple(rot_pts[1, :])
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -94,14 +94,13 @@ class Plate(UserObjectGeometry):
raise ValueError
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
logger.exception(f"{self.__str__()} material(s) {notfound} do not exist")
raise ValueError
grid = uip.grid
# yz-plane plate
if xs == xf:
# Isotropic case

查看文件

@@ -43,7 +43,7 @@ class Sphere(UserObjectGeometry):
super().__init__(**kwargs)
self.hash = "#sphere"
def build(self, model, uip):
def build(self, grid, uip):
try:
p1 = self.kwargs["p1"]
r = self.kwargs["r"]
@@ -57,7 +57,7 @@ class Sphere(UserObjectGeometry):
averagesphere = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagesphere = model.averagevolumeobjects
averagesphere = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -76,7 +76,7 @@ class Sphere(UserObjectGeometry):
xc, yc, zc = uip.discretise_point(p1)
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -95,11 +95,11 @@ class Sphere(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -109,9 +109,8 @@ class Sphere(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
grid = uip.grid
build_sphere(
xc,
yc,

查看文件

@@ -63,7 +63,7 @@ class Triangle(UserObjectGeometry):
self.kwargs["p2"] = tuple(p2)
self.kwargs["p3"] = tuple(p3)
def build(self, model, uip):
def build(self, grid, uip):
try:
up1 = self.kwargs["p1"]
up2 = self.kwargs["p2"]
@@ -82,7 +82,7 @@ class Triangle(UserObjectGeometry):
averagetriangularprism = self.kwargs["averaging"]
except KeyError:
# Otherwise go with the grid default
averagetriangularprism = model.averagevolumeobjects
averagetriangularprism = grid.averagevolumeobjects
# Check materials have been specified
# Isotropic case
@@ -126,7 +126,7 @@ class Triangle(UserObjectGeometry):
raise ValueError
# Look up requested materials in existing list of material instances
materials = [y for x in materialsrequested for y in model.materials if y.ID == x]
materials = [y for x in materialsrequested for y in grid.materials if y.ID == x]
if len(materials) != len(materialsrequested):
notfound = [x for x in materialsrequested if x not in materials]
@@ -146,11 +146,11 @@ class Triangle(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
requiredID = materials[0].ID + "+" + materials[1].ID + "+" + materials[2].ID
averagedmaterial = [x for x in model.materials if x.ID == requiredID]
averagedmaterial = [x for x in grid.materials if x.ID == requiredID]
if averagedmaterial:
numID = averagedmaterial.numID
else:
numID = len(model.materials)
numID = len(grid.materials)
m = Material(numID, requiredID)
m.type = "dielectric-smoothed"
# Create dielectric-smoothed constituents for material
@@ -160,7 +160,7 @@ class Triangle(UserObjectGeometry):
m.sm = np.mean((materials[0].sm, materials[1].sm, materials[2].sm), axis=0)
# Append the new material object to the materials list
model.materials.append(m)
grid.materials.append(m)
else:
averaging = False
# Isotropic case
@@ -175,7 +175,6 @@ class Triangle(UserObjectGeometry):
numIDy = materials[1].numID
numIDz = materials[2].numID
grid = uip.grid
build_triangle(
x1,
y1,

查看文件

@@ -32,7 +32,8 @@ from gprMax import config
from gprMax.cython.yee_cell_build import build_electric_components, build_magnetic_components
# from gprMax.geometry_outputs import GeometryObjects, GeometryView
from gprMax.materials import Material, process_materials
from gprMax.fractals import FractalVolume
from gprMax.materials import ListMaterial, Material, PeplinskiSoil, RangeMaterial, process_materials
from gprMax.pml import CFS, PML, build_pml, print_pml_info
from gprMax.receivers import Rx
from gprMax.snapshots import Snapshot
@@ -95,6 +96,8 @@ class FDTDGrid:
self.pmls["thickness"] = OrderedDict((key, 10) for key in PML.boundaryIDs)
self.materials: List[Material] = []
self.mixingmodels: List[Union[PeplinskiSoil, RangeMaterial, ListMaterial]] = []
self.fractalvolumes: List[FractalVolume] = []
self.waveforms: List[Waveform] = []
self.voltagesources: List[VoltageSource] = []
self.hertziandipoles: List[HertzianDipole] = []

查看文件

@@ -66,8 +66,6 @@ class Model:
self.G = self._create_grid()
self.subgrids: List[SubGridBaseGrid] = []
self.mixingmodels: List[Union[PeplinskiSoil, RangeMaterial, ListMaterial]] = []
self.geometryviews: List[GeometryView] = []
self.geometryobjects: List[GeometryObjects] = []