From fe87ec29a9c4889d00612ce8c9f81e5568377be4 Mon Sep 17 00:00:00 2001 From: nmannall Date: Fri, 17 May 2024 12:12:17 +0100 Subject: [PATCH] Refactor GeometryViews UserObject build process --- gprMax/cmds_multiuse.py | 5 +++-- gprMax/grid/fdtd_grid.py | 1 - gprMax/model.py | 13 +++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gprMax/cmds_multiuse.py b/gprMax/cmds_multiuse.py index 728cbf47..1aca50f8 100644 --- a/gprMax/cmds_multiuse.py +++ b/gprMax/cmds_multiuse.py @@ -1810,7 +1810,7 @@ class GeometryView(UserObjectMulti): return GeometryViewUser - def build(self, grid, uip): + def build(self, model, uip): try: p1 = self.kwargs["p1"] p2 = self.kwargs["p2"] @@ -1833,6 +1833,7 @@ class GeometryView(UserObjectMulti): xs, ys, zs = p1 xf, yf, zf = p2 + grid = uip.grid dx, dy, dz = uip.discretise_static_point(dl) if dx < 0 or dy < 0 or dz < 0: @@ -1874,7 +1875,7 @@ class GeometryView(UserObjectMulti): f"base {g.filename} created." ) - grid.geometryviews.append(g) + model.geometryviews.append(g) class GeometryObjectsWrite(UserObjectMulti): diff --git a/gprMax/grid/fdtd_grid.py b/gprMax/grid/fdtd_grid.py index 6084f33b..98fa9739 100644 --- a/gprMax/grid/fdtd_grid.py +++ b/gprMax/grid/fdtd_grid.py @@ -78,7 +78,6 @@ class FDTDGrid: # SubGridBaseGrid cause cyclic dependencies self.averagevolumeobjects = True self.fractalvolumes = [] - self.geometryviews = [] self.geometryobjectswrite = [] self.waveforms: List[Waveform] = [] self.voltagesources: List[VoltageSource] = [] diff --git a/gprMax/model.py b/gprMax/model.py index 37000f9a..8e537a7b 100644 --- a/gprMax/model.py +++ b/gprMax/model.py @@ -38,7 +38,7 @@ from tqdm import tqdm import gprMax.config as config from .fields_outputs import write_hdf5_outputfile -from .geometry_outputs import save_geometry_views +from .geometry_outputs import GeometryView, save_geometry_views from .grid.fdtd_grid import FDTDGrid from .snapshots import save_snapshots from .utilities.host_info import set_omp_threads @@ -68,6 +68,8 @@ class Model: self.materials: List[Material] = [] self.mixingmodels: List[Union[PeplinskiSoil, RangeMaterial, ListMaterial]] = [] + self.geometryviews: List[GeometryView] = [] + # Monitor memory usage self.p = None @@ -177,11 +179,14 @@ class Model: G.update_receiver_positions(step=model_num) # Write files for any geometry views and geometry object outputs - gvs = G.geometryviews + [gv for sg in self.subgrids for gv in sg.geometryviews] - if not gvs and not G.geometryobjectswrite and config.sim_config.args.geometry_only: + if ( + not self.geometryviews + and not G.geometryobjectswrite + and config.sim_config.args.geometry_only + ): logger.exception("\nNo geometry views or geometry objects found.") raise ValueError - save_geometry_views(gvs) + save_geometry_views(self.geometryviews) if G.geometryobjectswrite: logger.info("")