Refactor GeometryObjectsWrite UserObject build process

这个提交包含在:
nmannall
2024-05-17 12:23:19 +01:00
父节点 fe87ec29a9
当前提交 567f567891
共有 3 个文件被更改,包括 12 次插入10 次删除

查看文件

@@ -1896,7 +1896,11 @@ class GeometryObjectsWrite(UserObjectMulti):
self.order = 18
self.hash = "#geometry_objects_write"
def build(self, grid, uip):
def build(self, model, uip):
grid = uip.grid
if isinstance(grid, SubGridBaseGrid):
logger.exception(f"{self.params_str()} do not add geometry objects to subgrids.")
raise ValueError
try:
p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"]
@@ -1920,7 +1924,7 @@ class GeometryObjectsWrite(UserObjectMulti):
f"{g.filename_materials}"
)
grid.geometryobjectswrite.append(g)
model.geometryobjects.append(g)
class PMLCFS(UserObjectMulti):

查看文件

@@ -74,11 +74,8 @@ class FDTDGrid:
self.pmls["thickness"] = OrderedDict((key, 10) for key in PML.boundaryIDs)
# TODO: Add type information.
# Currently importing GeometryObjects, GeometryView, and
# SubGridBaseGrid cause cyclic dependencies
self.averagevolumeobjects = True
self.fractalvolumes = []
self.geometryobjectswrite = []
self.waveforms: List[Waveform] = []
self.voltagesources: List[VoltageSource] = []
self.hertziandipoles: List[HertzianDipole] = []

查看文件

@@ -38,7 +38,7 @@ from tqdm import tqdm
import gprMax.config as config
from .fields_outputs import write_hdf5_outputfile
from .geometry_outputs import GeometryView, save_geometry_views
from .geometry_outputs import GeometryObjects, GeometryView, save_geometry_views
from .grid.fdtd_grid import FDTDGrid
from .snapshots import save_snapshots
from .utilities.host_info import set_omp_threads
@@ -69,6 +69,7 @@ class Model:
self.mixingmodels: List[Union[PeplinskiSoil, RangeMaterial, ListMaterial]] = []
self.geometryviews: List[GeometryView] = []
self.geometryobjects: List[GeometryObjects] = []
# Monitor memory usage
self.p = None
@@ -181,21 +182,21 @@ class Model:
# Write files for any geometry views and geometry object outputs
if (
not self.geometryviews
and not G.geometryobjectswrite
and not self.geometryobjects
and config.sim_config.args.geometry_only
):
logger.exception("\nNo geometry views or geometry objects found.")
raise ValueError
save_geometry_views(self.geometryviews)
if G.geometryobjectswrite:
if self.geometryobjects:
logger.info("")
for i, go in enumerate(G.geometryobjectswrite):
for i, go in enumerate(self.geometryobjects):
pbar = tqdm(
total=go.datawritesize,
unit="byte",
unit_scale=True,
desc=f"Writing geometry object file {i + 1}/{len(G.geometryobjectswrite)}, "
desc=f"Writing geometry object file {i + 1}/{len(self.geometryobjects)}, "
+ f"{go.filename_hdf5.name}",
ncols=get_terminal_width() - 1,
file=sys.stdout,