forked from joferkington/oost_paper_code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
basic.py
57 lines (40 loc) · 1.34 KB
/
basic.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
import numpy as np
import matplotlib.pyplot as plt
import geoprobe
from fault_kinematics.homogeneous_simple_shear import invert_slip
import utilities
import data
def forced_direction_inversion(fault, xyz, alpha, azimuth, **kwargs):
azimuth = np.radians(90 - azimuth)
dx, dy = np.cos(azimuth), np.sin(azimuth)
direc = [[dx, dy], [dx, dy]]
return invert_slip(fault, xyz, alpha, direc=direc, **kwargs)
def planar_variance(xyz):
vecs, vals = geoprobe.utilities.principal_axes(*xyz.T, return_eigvals=True)
return vals[-1]
fault = data.to_world(data.to_xyz(data.fault))
slips = [(0,0)]
guess = (0,0)
heaves = [(0,0,0)]
planar_variances = []
variances = []
for i, hor in enumerate(data.horizons[::-1]):
print hor.name
xyz = data.to_xyz(hor)[::50]
xyz = data.to_world(xyz)
slip, metric = invert_slip(fault, xyz, alpha=data.alpha, guess=guess,
overlap_thresh=1, return_metric=True)
heave = utilities.calculate_heave(slip, hor)
variances.append(metric)
planar_var = planar_variance(xyz)
planar_variances.append(planar_var)
print metric / planar_var
slips.append(slip)
heaves.append(heave)
x, y = np.array(slips).T
plt.plot(x, y, 'bo-')
x, y, z = np.array(heaves).T
plt.plot(x, y, 'go-')
utilities.plot_plate_motion(time=2e5, xy=slips[3])
plt.axis('equal')
plt.show()