subgrid only fine geometry view

这个提交包含在:
jasminium
2021-01-04 17:57:45 +01:00
父节点 d6d171b276
当前提交 77631e405e
共有 4 个文件被更改,包括 40 次插入18 次删除

查看文件

@@ -1257,7 +1257,7 @@ class GeometryView(UserObjectMulti):
xs, ys, zs = p1 xs, ys, zs = p1
xf, yf, zf = p2 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: if dx < 0 or dy < 0 or dz < 0:
logger.exception(self.params_str() + ' the step size should not be less than zero') 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: if not (G.geometryviews or G.geometryobjectswrite) 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
if G.geometryviews:
def save_geometry_views(grid):
"""Create and save the geometryviews under given grid."""
if grid.geometryviews:
logger.info('') logger.info('')
# Write a Paraview data file (.pvd) if there is more than one GeometryView # Write a Paraview data file (.pvd) if there is more than one GeometryView
if len(G.geometryviews) > 1: if len(grid.geometryviews) > 1:
G.geometryviews[0].write_vtk_pvd(G.geometryviews) grid.geometryviews[0].write_vtk_pvd(grid.geometryviews)
logger.info(f'Written wrapper for geometry files: {G.geometryviews[0].pvdfile.name}') logger.info(f'Written wrapper for geometry files: {grid.geometryviews[0].pvdfile.name}')
for i, gv in enumerate(G.geometryviews): for i, gv in enumerate(grid.geometryviews):
gv.initialise() gv.initialise()
gv.set_filename() gv.set_filename()
pbar = tqdm(total=gv.datawritesize, unit='byte', unit_scale=True, 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, ncols=get_terminal_width() - 1, file=sys.stdout,
disable=not config.sim_config.general['progressbars']) disable=not config.sim_config.general['progressbars'])
gv.write_vtk(G, pbar) gv.write_vtk(grid, pbar)
pbar.close() pbar.close()
logger.info('') logger.info('')
save_geometry_views(G)
[save_geometry_views(sg) for sg in G.subgrids]
if G.geometryobjectswrite: if G.geometryobjectswrite:
logger.info('') logger.info('')
for i, go in enumerate(G.geometryobjectswrite): for i, go in enumerate(G.geometryobjectswrite):

查看文件

@@ -122,6 +122,9 @@ class MainGridUserInput(UserInput):
return p1, p2, p3 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 SubgridUserInput(MainGridUserInput):
"""Class to handle (x, y, z) points supplied by the user in the sub grid. """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()): np.greater(p_t, self.outer_bound).any()):
logger.warning(f"'{cmd_str}' this object traverses the Outer Surface. This is an advanced feature.") logger.warning(f"'{cmd_str}' this object traverses the Outer Surface. This is an advanced feature.")
return p_t 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', output_type='f',
multi_grid=True) 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 # create a geometry view of the main grid and the sub grid stitched together
gv_normal = gprMax.GeometryView(p1=(0, 0, 0), gv_normal = gprMax.GeometryView(p1=(0, 0, 0),
@@ -88,7 +94,8 @@ gv_normal = gprMax.GeometryView(p1=(0, 0, 0),
dl=dl, dl=dl,
filename=fn.with_suffix('').parts[-1] + '_voxels', filename=fn.with_suffix('').parts[-1] + '_voxels',
output_type='n') output_type='n')
scene.add(gv) #scene.add(gv)
sg.add(gv_sg)
#scene.add(gv_normal) #scene.add(gv_normal)
gprMax.run(scenes=[scene], n=1, geometry_only=False, outputfile=fn, subgrid=True, autotranslate=True) gprMax.run(scenes=[scene], n=1, geometry_only=False, outputfile=fn, subgrid=True, autotranslate=True)