你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 23:14:03 +08:00
subgrid only fine geometry view
这个提交包含在:
@@ -1257,7 +1257,7 @@ class GeometryView(UserObjectMulti):
|
||||
xs, ys, zs = p1
|
||||
xf, yf, zf = p2
|
||||
|
||||
dx, dy, dz = uip.discretise_point(dl)
|
||||
dx, dy, dz = uip.discretise_static_point(dl)
|
||||
|
||||
if dx < 0 or dy < 0 or dz < 0:
|
||||
logger.exception(self.params_str() + ' the step size should not be less than zero')
|
||||
|
@@ -107,22 +107,29 @@ class ModelBuildRun:
|
||||
if not (G.geometryviews or G.geometryobjectswrite) and config.sim_config.args.geometry_only:
|
||||
logger.exception('\nNo geometry views or geometry objects found.')
|
||||
raise ValueError
|
||||
if G.geometryviews:
|
||||
|
||||
def save_geometry_views(grid):
|
||||
"""Create and save the geometryviews under given grid."""
|
||||
if grid.geometryviews:
|
||||
logger.info('')
|
||||
# Write a Paraview data file (.pvd) if there is more than one GeometryView
|
||||
if len(G.geometryviews) > 1:
|
||||
G.geometryviews[0].write_vtk_pvd(G.geometryviews)
|
||||
logger.info(f'Written wrapper for geometry files: {G.geometryviews[0].pvdfile.name}')
|
||||
for i, gv in enumerate(G.geometryviews):
|
||||
if len(grid.geometryviews) > 1:
|
||||
grid.geometryviews[0].write_vtk_pvd(grid.geometryviews)
|
||||
logger.info(f'Written wrapper for geometry files: {grid.geometryviews[0].pvdfile.name}')
|
||||
for i, gv in enumerate(grid.geometryviews):
|
||||
gv.initialise()
|
||||
gv.set_filename()
|
||||
pbar = tqdm(total=gv.datawritesize, unit='byte', unit_scale=True,
|
||||
desc=f'Writing geometry view file {i + 1}/{len(G.geometryviews)}, {gv.filename.name}',
|
||||
desc=f'Writing geometry view file {i + 1}/{len(grid.geometryviews)}, {gv.filename.name}',
|
||||
ncols=get_terminal_width() - 1, file=sys.stdout,
|
||||
disable=not config.sim_config.general['progressbars'])
|
||||
gv.write_vtk(G, pbar)
|
||||
gv.write_vtk(grid, pbar)
|
||||
pbar.close()
|
||||
logger.info('')
|
||||
|
||||
save_geometry_views(G)
|
||||
[save_geometry_views(sg) for sg in G.subgrids]
|
||||
|
||||
if G.geometryobjectswrite:
|
||||
logger.info('')
|
||||
for i, go in enumerate(G.geometryobjectswrite):
|
||||
|
@@ -122,6 +122,9 @@ class MainGridUserInput(UserInput):
|
||||
|
||||
return p1, p2, p3
|
||||
|
||||
def discretise_static_point(self, p):
|
||||
"""Function to get the index of a continuous point regardless of the point of origin of the grid."""
|
||||
return super().discretise_point(p)
|
||||
|
||||
class SubgridUserInput(MainGridUserInput):
|
||||
"""Class to handle (x, y, z) points supplied by the user in the sub grid.
|
||||
@@ -175,3 +178,8 @@ class SubgridUserInput(MainGridUserInput):
|
||||
np.greater(p_t, self.outer_bound).any()):
|
||||
logger.warning(f"'{cmd_str}' this object traverses the Outer Surface. This is an advanced feature.")
|
||||
return p_t
|
||||
|
||||
def discretise_static_point(self, p):
|
||||
"""Function to get the index of a continuous point regardless of the point of origin of the grid."""
|
||||
return super().discretise_point(p)
|
||||
|
||||
|
@@ -81,6 +81,12 @@ gv = gprMax.GeometryView(p1=(0, 0, 0),
|
||||
output_type='f',
|
||||
multi_grid=True)
|
||||
|
||||
# create a geometry view of the sub grid
|
||||
gv_sg = gprMax.GeometryView(p1=sg_p0,
|
||||
p2=sg_p1,
|
||||
dl=(1e-3, 1e-3, 1e-3),
|
||||
filename=fn.with_suffix('').parts[-1] + '_only',
|
||||
output_type='f')
|
||||
|
||||
# create a geometry view of the main grid and the sub grid stitched together
|
||||
gv_normal = gprMax.GeometryView(p1=(0, 0, 0),
|
||||
@@ -88,7 +94,8 @@ gv_normal = gprMax.GeometryView(p1=(0, 0, 0),
|
||||
dl=dl,
|
||||
filename=fn.with_suffix('').parts[-1] + '_voxels',
|
||||
output_type='n')
|
||||
scene.add(gv)
|
||||
#scene.add(gv)
|
||||
sg.add(gv_sg)
|
||||
#scene.add(gv_normal)
|
||||
|
||||
gprMax.run(scenes=[scene], n=1, geometry_only=False, outputfile=fn, subgrid=True, autotranslate=True)
|
||||
|
在新工单中引用
屏蔽一个用户