def map_sum_of_inlinks_to_node(grid, var_name, out=None): """Map the sum of links entering a node to the node. map_sum_of_inlinks_to_node takes an array *at the links* and finds the inlink values for each node in the grid. it sums the inlinks and returns values at the nodes. .. note:: This considers all inactive links to have a value of 0. Construction:: map_sum_of_inlinks_to_node(grid, var_name, out=None) Parameters ---------- grid : ModelGrid A landlab ModelGrid. var_name : array or field name Values defined at links. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_sum_of_inlinks_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field('link', 'z', np.arange(17.)) >>> map_sum_of_inlinks_to_node(rmg, 'z') array([ 0., 0., 1., 2., 3., 11., 13., 15., 10., 25., 27., 29.]) LLCATS: NINF LINF MAP """ if out is None: out = grid.empty(centering='node') if type(var_name) is str: values_at_links = grid.at_link[var_name] else: values_at_links = var_name values_at_links = np.append(values_at_links, 0) south, west = links._node_in_link_ids(grid.shape) south, west = south.reshape(south.size), west.reshape(west.size) out[:] = values_at_links[south] + values_at_links[west] return out
def map_mean_of_links_to_node(mg, var_name, out=None): """Map the mean of links touching a node to the node. map_average_all_links_to_node takes a field *at the links* and finds the average of all ~existing~ link neighbor values for each node in the grid. it returns a field at the nodes with the same var_name as the link field. .. note:: This considers all inactive links to have a value of 0. Parameters ---------- mg : ModelGrid A landlab ModelGrid. var_name : str Name of variable field defined at nodes. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_mean_of_links_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field('link', 'z', np.arange(17.)) >>> map_mean_of_links_to_node(rmg, 'z') array([ 4. , 6. , 7. , 6.5 , 5. , 7.25 , 8.25 , 7.66666667, 9. , 11.33333333, 12.33333333, 11.5 ]) """ if out is None: out = mg.empty(centering='node') values_at_links = mg.at_link[var_name] values_at_links = np.append(values_at_links, 0) north, east = links._node_out_link_ids(mg.shape) north, east = north.reshape(north.size), east.reshape(east.size) south, west = links._node_in_link_ids(mg.shape) south, west = south.reshape(south.size), west.reshape(west.size) number_of_links = links.number_of_links_per_node(mg.shape) number_of_links = number_of_links.reshape(number_of_links.size) number_of_links.astype(float, copy=False) out[:] = (values_at_links[north] + values_at_links[east] + values_at_links[south] + values_at_links[west]) / number_of_links return out
def map_mean_of_inlinks_to_node(grid, var_name, out=None): """Map the mean of links entering a node to the node. map_mean_of_inlinks_to_node takes an array *at the links* and finds the inlink values for each node in the grid. It finds the average of the inlinks and returns values at the nodes. This considers all inactive links to have a value of 0. Parameters ---------- grid : ModelGrid A landlab ModelGrid. var_name : array or field name Values defined at links. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_mean_of_inlinks_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field("z", np.arange(17.), at="link") >>> map_mean_of_inlinks_to_node(rmg, 'z') array([ 0. , 0. , 0.5, 1. , 1.5, 5.5, 6.5, 7.5, 5. , 12.5, 13.5, 14.5]) LLCATS: NINF LINF MAP """ if out is None: out = grid.empty(centering="node") if type(var_name) is str: values_at_links = grid.at_link[var_name] else: values_at_links = var_name values_at_links = np.append(values_at_links, 0) south, west = links._node_in_link_ids(grid.shape) south, west = south.reshape(south.size), west.reshape(west.size) out[:] = 0.5 * (values_at_links[south] + values_at_links[west]) return out
def map_max_of_inlinks_to_node(grid, var_name, out=None): """Map the maximum of links entering a node to the node. map_max_of_inlinks_to_node takes a field *at the links* and finds the inlink values for each node in the grid. it finds the maximum value at the the inlinks and returns a field at the nodes with the same var_name as the link field. .. note:: This considers all inactive links to have a value of 0. Parameters ---------- grid : ModelGrid A landlab ModelGrid. var_name : str Name of variable field defined at nodes. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_max_of_inlinks_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field('link', 'z', np.arange(17.)) >>> map_max_of_inlinks_to_node(rmg, 'z') array([ 0., 0., 1., 2., 3., 7., 8., 9., 10., 14., 15., 16.]) """ if out is None: out = grid.empty(centering='node') values_at_links = grid.at_link[var_name] values_at_links = np.append(values_at_links, 0) south, west = links._node_in_link_ids(grid.shape) south, west = south.reshape(south.size), west.reshape(west.size) out[:] = np.maximum(values_at_links[south], values_at_links[west]) return out
def map_mean_of_links_to_node(grid, var_name, out=None): """Map the mean of links touching a node to the node. map_mean_all_links_to_node takes an array *at the links* and finds the average of all ~existing~ link neighbor values for each node in the grid. it returns values at the nodes. .. note:: This considers all inactive links to have a value of 0. Parameters ---------- grid : ModelGrid A landlab ModelGrid. var_name : array or field name Values defined at links. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_mean_of_links_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field('link', 'z', np.arange(17.)) >>> map_mean_of_links_to_node(rmg, 'z') array([ 1.5 , 1.66666667, 2.66666667, 4. , 6.66666667, 7.5 , 8.5 , 9.33333333, 12. , 13.33333333, 14.33333333, 14.5 ]) LLCATS: NINF LINF MAP """ if out is None: out = grid.empty(centering="node") if type(var_name) is str: values_at_links = grid.at_link[var_name] else: values_at_links = var_name values_at_links = np.append(values_at_links, 0) north, east = links._node_out_link_ids(grid.shape) north, east = north.reshape(north.size), east.reshape(east.size) south, west = links._node_in_link_ids(grid.shape) south, west = south.reshape(south.size), west.reshape(west.size) number_of_links = links.number_of_links_per_node(grid.shape) number_of_links = number_of_links.reshape(number_of_links.size) number_of_links.astype(float, copy=False) out[:] = (values_at_links[north] + values_at_links[east] + values_at_links[south] + values_at_links[west]) / number_of_links return out
def map_mean_of_links_to_node(grid, var_name, out=None): """Map the mean of links touching a node to the node. map_mean_all_links_to_node takes an array *at the links* and finds the average of all ~existing~ link neighbor values for each node in the grid. it returns values at the nodes. .. note:: This considers all inactive links to have a value of 0. Parameters ---------- grid : ModelGrid A landlab ModelGrid. var_name : array or field name Values defined at links. out : ndarray, optional Buffer to place mapped values into or `None` to create a new array. Returns ------- ndarray Mapped values at nodes. Examples -------- >>> import numpy as np >>> from landlab.grid.raster_mappers import map_mean_of_links_to_node >>> from landlab import RasterModelGrid >>> rmg = RasterModelGrid((3, 4)) >>> _ = rmg.add_field('link', 'z', np.arange(17.)) >>> map_mean_of_links_to_node(rmg, 'z') array([ 1.5 , 1.66666667, 2.66666667, 4. , 6.66666667, 7.5 , 8.5 , 9.33333333, 12. , 13.33333333, 14.33333333, 14.5 ]) LLCATS: NINF LINF MAP """ if out is None: out = grid.empty(centering='node') if type(var_name) is str: values_at_links = grid.at_link[var_name] else: values_at_links = var_name values_at_links = np.append(values_at_links, 0) north, east = links._node_out_link_ids(grid.shape) north, east = north.reshape(north.size), east.reshape(east.size) south, west = links._node_in_link_ids(grid.shape) south, west = south.reshape(south.size), west.reshape(west.size) number_of_links = links.number_of_links_per_node(grid.shape) number_of_links = number_of_links.reshape(number_of_links.size) number_of_links.astype(float, copy=False) out[:] = (values_at_links[north] + values_at_links[east] + values_at_links[south] + values_at_links[west]) / number_of_links return out