コード例 #1
0
ファイル: drive_pot_fr.py プロジェクト: RondaStrauch/landlab
# z = np.sqrt(mg.node_x**2 + mg.node_y**2)
# z = mg.node_x + mg.node_y
# val_to_replace_with = z.reshape((nrows,ncols))[3,3]
# z.reshape((nrows,ncols))[2:5,:] = val_to_replace_with
mg.at_node["topographic__elevation"] = z

# mg.set_fixed_value_boundaries_at_grid_edges(True, True, True, True)
mg.set_closed_boundaries_at_grid_edges(False, True, True, True)
figure(3)
imshow_node_grid(mg, mg.status_at_node)

mg.at_node["water__unit_flux_in"] = np.ones_like(z)

pfr = PotentialityFlowRouter(mg, "pot_fr_params.txt")

pfr.route_flow(route_on_diagonals=True)

figure(1)
imshow_node_grid(mg, "water__discharge")
figure(2)
imshow_node_grid(mg, "topographic__elevation")

out_sum = np.sum(mg.at_node["water__discharge"].reshape((nrows, ncols))[-3, :])
print(out_sum)
print(np.sum(mg.at_node["water__unit_flux_in"]), np.sum(mg.at_node["water__discharge"][mg.boundary_nodes]))
print(out_sum - np.sum(mg.at_node["water__unit_flux_in"]))

show()

print(mg.at_node["water__discharge"].reshape((nrows, ncols)))
print(np.sum(mg.at_node["water__discharge"].reshape((nrows, ncols)), axis=0) / 3.0)
コード例 #2
0
mg.update_links_nodes_cells_to_new_BCs()
mg.at_node['water__unit_flux_in'].fill(0.)
mg.at_node['water__unit_flux_in'][inlet_node] = 1.
pfr = PotentialityFlowRouter(mg, 'pot_fr_params.txt')

interior_nodes = mg.core_nodes

#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'])
    mg.map_max_of_link_nodes_to_link('water__volume_flux_magnitude',
                                     out=mg.at_link[
                                        'water__volume_flux_magnitude'])
    # 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
コード例 #3
0
mg.at_node['water__unit_flux_in'].fill(0.)
mg.at_node['water__unit_flux_in'][inlet_node] = 1.
pfr = PotentialityFlowRouter(mg, 'pot_fr_params.txt')

interior_nodes = mg.core_nodes

#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__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'])
    mg.map_max_of_link_nodes_to_link('water__discharge',
                                     out=mg.at_link['water__discharge'])
    # 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
コード例 #4
0
#z = np.sqrt(mg.node_x**2 + mg.node_y**2)
#z = mg.node_x + mg.node_y
#val_to_replace_with = z.reshape((nrows,ncols))[3,3]
#z.reshape((nrows,ncols))[2:5,:] = val_to_replace_with
mg.at_node['topographic__elevation'] = z

#mg.set_fixed_value_boundaries_at_grid_edges(True, True, True, True)
mg.set_closed_boundaries_at_grid_edges(False, True, True, True)
figure(3)
imshow_node_grid(mg, mg.status_at_node)

mg.at_node['water__unit_flux_in'] = np.ones_like(z)

pfr = PotentialityFlowRouter(mg, 'pot_fr_params.txt')

pfr.route_flow(route_on_diagonals=True)

figure(1)
imshow_node_grid(mg, 'surface_water__discharge')
figure(2)
imshow_node_grid(mg, 'topographic__elevation')

out_sum = np.sum(mg.at_node['surface_water__discharge'].reshape((nrows,ncols))[-3,:])
print(out_sum)
print(np.sum(mg.at_node['water__unit_flux_in']), np.sum(mg.at_node['surface_water__discharge'][mg.boundary_nodes]))
print(out_sum - np.sum(mg.at_node['water__unit_flux_in']))

show()

print(mg.at_node['surface_water__discharge'].reshape((nrows,ncols)))
print(np.sum(mg.at_node['surface_water__discharge'].reshape((nrows,ncols)),axis=0)/3.)