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.order = 18
self.hash = "#geometry_objects_write" 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: try:
p1 = self.kwargs["p1"] p1 = self.kwargs["p1"]
p2 = self.kwargs["p2"] p2 = self.kwargs["p2"]
@@ -1920,7 +1924,7 @@ class GeometryObjectsWrite(UserObjectMulti):
f"{g.filename_materials}" f"{g.filename_materials}"
) )
grid.geometryobjectswrite.append(g) model.geometryobjects.append(g)
class PMLCFS(UserObjectMulti): class PMLCFS(UserObjectMulti):

查看文件

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

查看文件

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