Source code for landlab.grid.unstructured.nodes

import numpy as np


[docs] class NodeGrid: """__init__((coord0, coord1)) Create a grid of nodes. Parameters ---------- coord0, coord1 : sequence of array-like Coordinates of grid nodes Returns ------- NodeGrid : A newly-created NodeGrid Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1, 1], [0, 1, 0, 1])) >>> ngrid.ndim == 2 True >>> ngrid.number_of_nodes == 4 True >>> ngrid.x array([0., 1., 0., 1.]) >>> ngrid.y array([0., 0., 1., 1.]) Create a 1D grid. >>> ngrid = NodeGrid(((0, 1, 3),)) >>> ngrid.ndim == 1 True >>> ngrid.number_of_nodes 3 >>> ngrid.x array([0., 1., 3.]) >>> ngrid.y Traceback (most recent call last): AttributeError: Grid has no y-coordinate """
[docs] def __init__(self, nodes): """__init__((coord0, coord1)) Create a grid of nodes. Parameters ---------- coord0, coord1 : sequence of array-like Coordinates of grid nodes Returns ------- NodeGrid : A newly-created NodeGrid Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1, 1], [0, 1, 0, 1])) >>> ngrid.ndim == 2 True >>> ngrid.number_of_nodes == 4 True >>> ngrid.x array([0., 1., 0., 1.]) >>> ngrid.y array([0., 0., 1., 1.]) Create a 1D grid. >>> ngrid = NodeGrid(((0, 1, 3),)) >>> ngrid.ndim == 1 True >>> ngrid.number_of_nodes 3 >>> ngrid.x array([0., 1., 3.]) >>> ngrid.y Traceback (most recent call last): AttributeError: Grid has no y-coordinate """ self._coords = np.vstack([np.array(coord, dtype=float) for coord in nodes]) self._coords.flags["WRITEABLE"] = False self._number_of_nodes = len(nodes[0])
@property def ndim(self): return self._coords.shape[0] @property def number_of_nodes(self): """ Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.number_of_nodes 3 """ return self._number_of_nodes @property def x(self): """Node coordinates of the "fast" dimension. Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.x array([0., 1., 0.]) """ return self._coords[-1] @property def y(self): """Node y-coordinates. Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.y array([0., 0., 1.]) """ try: return self._coords[-2] except IndexError as exc: raise AttributeError("Grid has no y-coordinate") from exc @property def z(self): """Node z-coordinates. Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.y array([0., 0., 1.]) """ try: return self._coords[-2] except IndexError as exc: raise AttributeError("Grid has no z-coordinate") from exc @property def coord(self): """ Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.coord[0] array([0., 0., 1.]) >>> ngrid.coord[1] array([0., 1., 0.]) """ return self._coords @property def point(self): """ Examples -------- >>> from landlab.grid.unstructured.nodes import NodeGrid >>> ngrid = NodeGrid(([0, 0, 1], [0, 1, 0])) >>> ngrid.point array([[0., 0.], [0., 1.], [1., 0.]]) >>> ngrid.point[1] array([0., 1.]) """ return self._coords.T