def test_max(self): rmg = RasterModelGrid(4, 5) rmg.add_empty('node', 'values') node_values = rmg.at_node['values'] node_values[:] = np.arange(rmg.number_of_nodes) maps.map_link_end_node_max_value_to_link(rmg, 'values') assert_array_equal( rmg.at_link['values'], np.array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]))
#store profiles here section_downfan = [] # do the loop for i in range(3000): #mg.at_node['topographic__elevation'][inlet_node] = 1. #maintain flux like this now instead: mg.at_node['topographic__elevation'][section_col] = mg.at_node['topographic__elevation'][inlet_node]+1. pfr.route_flow(route_on_diagonals=True) #imshow(mg, 'water__volume_flux_magnitude') #show() kd = mg.at_node['water__volume_flux_magnitude'] # 0.01 m2 per year # dt = np.nanmin(0.2*mg.dx*mg.dx/kd) # CFL condition dt = 0.5 g = mg.calculate_gradients_at_active_links(mg.at_node['topographic__elevation']) map_link_end_node_max_value_to_link(mg, 'water__volume_flux_magnitude') kd_link = 1.e6*mg.at_link['water__volume_flux_magnitude'][mg.active_links] qs = -kd_link*g dqsdx = mg.calculate_flux_divergence_at_nodes(qs) dzdt = -dqsdx mg.at_node['topographic__elevation'][interior_nodes] += dzdt[interior_nodes]*dt if i%50==0: print('loop '+str(i)) section_downfan.append(mg.node_vector_to_raster(mg.at_node['topographic__elevation'])[1:,section_col].copy()) for i in range(3000): mg.at_node['topographic__elevation'][section_col] = mg.at_node['topographic__elevation'][inlet_node]+1. #now pull down hard on the BL: mg.at_node['topographic__elevation'][mg.nodes_at_top_edge[mg.number_of_node_columns // 2]] =- 10. pfr.route_flow(route_on_diagonals=True) kd = mg.at_node['water__volume_flux_magnitude'] # 0.01 m2 per year
mg.at_node['water__unit_flux_in'][inlet_node] = 1. pfr = PotentialityFlowRouter(mg, 'pot_fr_params.txt') interior_nodes = mg.core_nodes # do the loop for i in range(2000): if i%50==0: print('loop '+str(i)) mg.at_node['topographic__elevation'][inlet_node] = 1. pfr.route_flow(route_on_diagonals=True) #imshow(mg, 'water__discharge') #show() kd = mg.at_node['water__discharge'] # 0.01 m2 per year # dt = np.nanmin(0.2*mg.dx*mg.dx/kd) # CFL condition dt = 0.5 g = mg.calc_grad_of_active_link(mg.at_node['topographic__elevation']) map_link_end_node_max_value_to_link(mg, 'water__discharge') kd_link = 1.e6*mg.at_link['water__discharge'][mg.active_links] qs = -kd_link*g dqsdx = mg.calculate_flux_divergence_at_nodes(qs) dzdt = -dqsdx mg.at_node['topographic__elevation'][interior_nodes] += dzdt[interior_nodes]*dt figure(1) imshow_node_grid(mg, 'topographic__elevation') figure(2) imshow_node_grid(mg, 'water__depth') figure(3) imshow_node_grid(mg, 'water__discharge')
interior_nodes = mg.core_nodes # do the loop for i in range(2000): if i % 50 == 0: print('loop ' + str(i)) mg.at_node['topographic__elevation'][inlet_node] = 1. pfr.route_flow(route_on_diagonals=True) #imshow(mg, 'water__volume_flux_magnitude') #show() kd = mg.at_node['water__volume_flux_magnitude'] # 0.01 m2 per year # dt = np.nanmin(0.2*mg.dx*mg.dx/kd) # CFL condition dt = 0.5 g = mg.calculate_gradients_at_active_links( mg.at_node['topographic__elevation']) map_link_end_node_max_value_to_link(mg, 'water__volume_flux_magnitude') kd_link = 1.e6 * mg.at_link['water__volume_flux_magnitude'][ mg.active_links] qs = -kd_link * g dqsdx = mg.calculate_flux_divergence_at_nodes(qs) dzdt = -dqsdx mg.at_node['topographic__elevation'][ interior_nodes] += dzdt[interior_nodes] * dt figure(1) imshow_node_grid(mg, 'topographic__elevation') figure(2) imshow_node_grid(mg, 'water__depth') figure(3) imshow_node_grid(mg, 'water__volume_flux_magnitude')