-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple_SP_steepness.py
61 lines (51 loc) · 2.03 KB
/
simple_SP_steepness.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from __future__ import print_function
from landlab.components import FlowRouter, FastscapeEroder, SteepnessFinder
import numpy as np
from landlab import RasterModelGrid, CLOSED_BOUNDARY
from landlab.plot.imshow import imshow_grid_at_node
import matplotlib.pyplot as plt
mg = RasterModelGrid((200, 200), 100.)
z = mg.add_zeros('node', 'topographic__elevation')
z += np.random.rand(mg.number_of_nodes)
mg.status_at_node[mg.nodes_at_left_edge] = CLOSED_BOUNDARY
mg.status_at_node[mg.nodes_at_right_edge] = CLOSED_BOUNDARY
fr = FlowRouter(mg)
sp = FastscapeEroder(mg, K_sp=1.e-5)
sf = SteepnessFinder(mg, min_drainage_area=1.e5)
dt = 20000.
for i in xrange(100):
print(i)
fr.route_flow()
sp.run_one_timestep(dt)
mg.at_node['topographic__elevation'][mg.core_nodes] += 1.
sf.calculate_steepnesses()
edges = mg.ones('node', dtype=bool)
edges.reshape(mg.shape)[2:-2, 2:-2] = False
steepness_mask = np.logical_or(sf.hillslope_mask, edges)
steepnesses = np.ma.array(mg.at_node['channel__steepness_index'],
mask=steepness_mask)
imshow_grid_at_node(mg, 'topographic__elevation')
imshow_grid_at_node(mg, steepnesses, color_for_closed=None,
cmap='winter')
plt.show()
dt=10000.
for i in xrange(100):
print(i)
fr.route_flow()
sp.run_one_timestep(dt)
mg.at_node['topographic__elevation'][mg.core_nodes] += 10.
if i%5 == 0:
sf.calculate_steepnesses()
edges = mg.ones('node', dtype=bool)
edges.reshape(mg.shape)[2:-2, 2:-2] = False
steepness_mask = np.logical_or(sf.hillslope_mask, edges)
steepnesses = np.ma.array(mg.at_node['channel__steepness_index'],
mask=steepness_mask)
imshow_grid_at_node(mg, 'topographic__elevation')
imshow_grid_at_node(mg, steepnesses, color_for_closed=None,
cmap='winter', limits=(0., 50.))
if i < 10:
plt.savefig('frame_0' + str(i) + '.jpeg')
else:
plt.savefig('frame_' + str(i) + '.jpeg')
plt.close('all')