你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Refactor GeometryObjectsWrite UserObject build process
这个提交包含在:
@@ -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,
|
||||
|
在新工单中引用
屏蔽一个用户