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_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