Beispiel #1
0
    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')
Beispiel #4
0
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')