diff --git a/data/tools/main.py b/data/tools/main.py index a3f8c770225e33ca9a27a1ad4f66914ea7372e0d..1ba1c049a3a9fd1bc125f1a06658b15b6a0bf001 100644 --- a/data/tools/main.py +++ b/data/tools/main.py @@ -21,6 +21,7 @@ from support.io import read_h5file from support.iterations import iterations from support.friction_stats import friction_stats +from support.slip_rates import slip_rates def build_patch(coords, percentage): x_coords = coords[:, 0] @@ -53,7 +54,7 @@ params = { h5file = read_h5file() print(list(h5file.keys())) -interval = [0.75*FINAL_TIME, FINAL_TIME] +interval = [10, 13] #[0.75*FINAL_TIME, FINAL_TIME] iterations(h5file, FINAL_TIME, interval) @@ -67,7 +68,8 @@ for body_ID in range(NBODIES): patch = build_patch(coords, 1.0) friction_stats(h5file, body_ID, FINAL_TIME, patch, interval) - + slip_rates(h5file, body_ID, FINAL_TIME, patch, interval, 0) + plt.show() h5file.close() \ No newline at end of file diff --git a/data/tools/support/friction_stats.py b/data/tools/support/friction_stats.py index 9651d299460bdf9a92895aa24563100bffa8547d..8495a073b8d3fe84e39ce42defa71f01b0aa5857 100644 --- a/data/tools/support/friction_stats.py +++ b/data/tools/support/friction_stats.py @@ -31,7 +31,7 @@ def friction_stats(h5file, body_ID, FINAL_TIME, patch=[], interval=[], TANGENTIA #ax_slip.plot(time, min_v, color='gray', linestyle='--') ax_slip.plot(time, avg_v, color='black', linestyle='-') #ax_slip.plot(time, max_v, color='gray', linestyle='--') - ax_slip.set_ylabel('slip rate V') + ax_slip.set_ylabel('slip rate V [m/s]') ax_slip.set_yscale('log') ax_slip.set_ylim([1e-6,1e-2]) #------------------------- @@ -54,7 +54,7 @@ def friction_stats(h5file, body_ID, FINAL_TIME, patch=[], interval=[], TANGENTIA ax_state.plot(time, avg_states, color='black', linestyle='-') #ax_state.plot(time, max_states, color='gray', linestyle='--') ax_state.set_ylabel('state') - ax_state.set_xlabel('time in s') + ax_state.set_xlabel('time [s]') #------------------------- # friction coefficient diff --git a/data/tools/support/iterations.py b/data/tools/support/iterations.py index 08279780acc59ce587509c66c732b62aec49c239..1e231bb9c762bf692555f0a2a714e1f28426e365 100644 --- a/data/tools/support/iterations.py +++ b/data/tools/support/iterations.py @@ -35,7 +35,7 @@ def iterations(h5file, FINAL_TIME, interval = []): ax_mg = fig.add_subplot(2, 1, 2) ax_mg.plot(time, multigrid_final[t], color='black', linestyle='-') ax_mg.set_ylabel('multigrid iter.') - ax_mg.set_xlabel('time in s') + ax_mg.set_xlabel('time [s]') #------------------------- #ax_tau = fig.add_subplot(3, 1, 3) diff --git a/data/tools/support/slip_rates.py b/data/tools/support/slip_rates.py new file mode 100644 index 0000000000000000000000000000000000000000..d122199d9fca65e20b5bbe44cb4cec613f2027e8 --- /dev/null +++ b/data/tools/support/slip_rates.py @@ -0,0 +1,48 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.cm as cm + +TANGENTIAL_COORDS = 1 + +def local_to_global(coords, SORT_COORD=0): + return coords[:, SORT_COORD].argsort() + +def slip_rates(h5file, body_ID, FINAL_TIME, patch=[], interval=[], SORT_COORD=0): + body = 'body' + str(body_ID) # 'frictionalBoundary' 'body' + str(body_ID) + + coords = np.array(h5file[body + '/coordinates']) + if len(patch) == 0: + patch = np.linspace(0, len(coords)-1, len(coords), endpoint=True, dtype='int8') + + # local to global + local_global = local_to_global(coords, SORT_COORD) + local_global = local_global[patch] + + patch_size = coords[local_global[-1], SORT_COORD] - coords[local_global[0], SORT_COORD] + + # read time + time = np.array(h5file['relativeTime']) * FINAL_TIME + time = np.delete(time, 0) + if len(interval) == 0: + interval = [0, FINAL_TIME] + t = [i for i in range(len(time)) if time[i]>=interval[0] and time[i]<=interval[1]] + time = time[t] + + fig = plt.figure() + + # velocity data + v = abs(np.array(h5file[body + '/velocity'])) + v_t = v[t,:,TANGENTIAL_COORDS] + v_tx = v_t[:,local_global] + + # plot + ax_slip = fig.add_subplot(1, 1, 1) + ax_slip.imshow(v_tx, interpolation='nearest', cmap=cm.Greys_r, aspect='auto', origin='lower', extent=[0, patch_size, time[0], time[-1]]) + #ax_slip.set_ylim([time[-1], time[0]]) + ax_slip.set_ylabel('time [s]') + ax_slip.set_xlabel('horizontal coordinate [m]') + #ax_slip.set_yscale('log') + # ax_slip.set_ylim([1e-6,1e-2]) + #------------------------- + + fig.canvas.draw() \ No newline at end of file