From d7765cac282e1f056f5d6c58308a406a90757a83 Mon Sep 17 00:00:00 2001 From: nmannall Date: Fri, 17 May 2024 11:43:19 +0100 Subject: [PATCH] Refactor Materials UserObject build process --- gprMax/cmds_multiuse.py | 10 +++++----- gprMax/grid/fdtd_grid.py | 1 - gprMax/model.py | 2 ++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gprMax/cmds_multiuse.py b/gprMax/cmds_multiuse.py index 52672e67..3bb30f95 100644 --- a/gprMax/cmds_multiuse.py +++ b/gprMax/cmds_multiuse.py @@ -1256,7 +1256,7 @@ class Material(UserObjectMulti): self.order = 10 self.hash = "#material" - def build(self, grid, uip): + def build(self, model, uip): try: er = self.kwargs["er"] se = self.kwargs["se"] @@ -1289,13 +1289,13 @@ class Material(UserObjectMulti): if sm < 0: logger.exception(f"{self.params_str()} requires a positive value for magnetic loss.") raise ValueError - if any(x.ID == material_id for x in grid.materials): + if any(x.ID == material_id for x in model.materials): logger.exception(f"{self.params_str()} with ID {material_id} already exists") raise ValueError # Create a new instance of the Material class material # (start index after pec & free_space) - m = MaterialUser(len(grid.materials), material_id) + m = MaterialUser(len(model.materials), material_id) m.se = se m.mr = mr m.sm = sm @@ -1306,12 +1306,12 @@ class Material(UserObjectMulti): m.er = er logger.info( - f"{self.grid_name(grid)}Material {m.ID} with eps_r={m.er:g}, " + f"{[model.title]} Material {m.ID} with eps_r={m.er:g}, " f"sigma={m.se:g} S/m; mu_r={m.mr:g}, sigma*={m.sm:g} Ohm/m " f"created." ) - grid.materials.append(m) + model.materials.append(m) class AddDebyeDispersion(UserObjectMulti): diff --git a/gprMax/grid/fdtd_grid.py b/gprMax/grid/fdtd_grid.py index 2797a2c4..ec6bb363 100644 --- a/gprMax/grid/fdtd_grid.py +++ b/gprMax/grid/fdtd_grid.py @@ -76,7 +76,6 @@ class FDTDGrid: # TODO: Add type information. # Currently importing GeometryObjects, GeometryView, and # SubGridBaseGrid cause cyclic dependencies - self.materials: List[Material] = [] self.mixingmodels = [] self.averagevolumeobjects = True self.fractalvolumes = [] diff --git a/gprMax/model.py b/gprMax/model.py index a2abec3d..07f9f10e 100644 --- a/gprMax/model.py +++ b/gprMax/model.py @@ -28,6 +28,7 @@ from colorama import Fore, Style, init from gprMax.grid.cuda_grid import CUDAGrid from gprMax.grid.opencl_grid import OpenCLGrid +from gprMax.materials import Material from gprMax.subgrids.grid import SubGridBaseGrid init() @@ -64,6 +65,7 @@ class Model: self.G = self._create_grid() self.subgrids: List[SubGridBaseGrid] = [] + self.materials: List[Material] = [] # Monitor memory usage self.p = None