你已经派生过 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.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,
|
||||||
|
在新工单中引用
屏蔽一个用户