discretize.TreeMesh.refine_line#
- TreeMesh.refine_line(self, path, levels, finalize=True, diagonal_balance=None)#
Refine the
TreeMesh
along the line segment to the desired level.Refines the TreeMesh by determining if a cell intersects the given line segment(s) to the prescribed level(s).
- Parameters:
- path(N+1,
dim
) array_like The nodes of the line segment(s). i.e. [[x0, y0, z0], [x1, y1, z1], [x2, y2, z2]] would be two segments.
- levels
int
or
(N
) array_likeof
int
The level to refine intersecting cells to.
- finalizebool,
optional
Whether to finalize after refining
- diagonal_balancebool or
None
,optional
Whether to balance cells diagonally in the refinement, None implies using the same setting used to instantiate the TreeMesh`.
- path(N+1,
Examples
We create a simple mesh and refine the TreeMesh such that all cells that intersect the line segment path are at the given levels.
>>> import discretize >>> import matplotlib.pyplot as plt >>> import matplotlib.patches as patches >>> tree_mesh = discretize.TreeMesh([32, 32]) >>> tree_mesh.max_level 5
Next we define the points along the line and the level we want to refine to, and refine the mesh.
>>> segments = np.array([[0.1, 0.3], [0.3, 0.9], [0.8, 0.9]]) >>> levels = 5 >>> tree_mesh.refine_line(segments, levels)
Now lets look at the mesh, and overlay the line on it to ensure it refined where we wanted it to.
>>> ax = tree_mesh.plot_grid() >>> ax.plot(*segments.T, color='C1') >>> plt.show()
(
Source code
,png
,pdf
)