rock-physics-open 0.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rock_physics_open/__init__.py +0 -0
- rock_physics_open/equinor_utilities/__init__.py +0 -0
- rock_physics_open/equinor_utilities/anisotropy.py +211 -0
- rock_physics_open/equinor_utilities/classification_functions/__init__.py +17 -0
- rock_physics_open/equinor_utilities/classification_functions/class_stats.py +68 -0
- rock_physics_open/equinor_utilities/classification_functions/lin_class.py +53 -0
- rock_physics_open/equinor_utilities/classification_functions/mahal_class.py +63 -0
- rock_physics_open/equinor_utilities/classification_functions/norm_class.py +73 -0
- rock_physics_open/equinor_utilities/classification_functions/poly_class.py +45 -0
- rock_physics_open/equinor_utilities/classification_functions/post_prob.py +27 -0
- rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py +60 -0
- rock_physics_open/equinor_utilities/conversions.py +10 -0
- rock_physics_open/equinor_utilities/gen_utilities/__init__.py +11 -0
- rock_physics_open/equinor_utilities/gen_utilities/dict_to_float.py +38 -0
- rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py +113 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_input.py +131 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_output.py +88 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py +15 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/base_pressure_model.py +170 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py +53 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py +137 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py +77 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/polynomial_model.py +132 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py +209 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py +241 -0
- rock_physics_open/equinor_utilities/optimisation_utilities/__init__.py +19 -0
- rock_physics_open/equinor_utilities/optimisation_utilities/opt_subst_utilities.py +455 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py +10 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py +184 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py +97 -0
- rock_physics_open/equinor_utilities/std_functions/__init__.py +43 -0
- rock_physics_open/equinor_utilities/std_functions/backus_ave.py +68 -0
- rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py +77 -0
- rock_physics_open/equinor_utilities/std_functions/gassmann.py +165 -0
- rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py +224 -0
- rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py +51 -0
- rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py +67 -0
- rock_physics_open/equinor_utilities/std_functions/reflection_eq.py +120 -0
- rock_physics_open/equinor_utilities/std_functions/rho.py +69 -0
- rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py +149 -0
- rock_physics_open/equinor_utilities/std_functions/walton.py +45 -0
- rock_physics_open/equinor_utilities/std_functions/wood_brie.py +94 -0
- rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif +0 -0
- rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico +0 -0
- rock_physics_open/equinor_utilities/various_utilities/__init__.py +24 -0
- rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py +90 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py +56 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py +56 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py +64 -0
- rock_physics_open/equinor_utilities/various_utilities/hs_average.py +59 -0
- rock_physics_open/equinor_utilities/various_utilities/pressure.py +96 -0
- rock_physics_open/equinor_utilities/various_utilities/reflectivity.py +101 -0
- rock_physics_open/equinor_utilities/various_utilities/timeshift.py +104 -0
- rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py +170 -0
- rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py +83 -0
- rock_physics_open/fluid_models/__init__.py +9 -0
- rock_physics_open/fluid_models/brine_model/__init__.py +5 -0
- rock_physics_open/fluid_models/brine_model/brine_properties.py +178 -0
- rock_physics_open/fluid_models/gas_model/__init__.py +5 -0
- rock_physics_open/fluid_models/gas_model/gas_properties.py +319 -0
- rock_physics_open/fluid_models/oil_model/__init__.py +5 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_density.py +65 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py +30 -0
- rock_physics_open/fluid_models/oil_model/live_oil_density.py +82 -0
- rock_physics_open/fluid_models/oil_model/live_oil_velocity.py +24 -0
- rock_physics_open/fluid_models/oil_model/oil_bubble_point.py +69 -0
- rock_physics_open/fluid_models/oil_model/oil_properties.py +146 -0
- rock_physics_open/sandstone_models/__init__.py +59 -0
- rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py +304 -0
- rock_physics_open/sandstone_models/constant_cement_models.py +204 -0
- rock_physics_open/sandstone_models/constant_cement_optimisation.py +125 -0
- rock_physics_open/sandstone_models/contact_cement_model.py +138 -0
- rock_physics_open/sandstone_models/curvefit_sandstone_models.py +143 -0
- rock_physics_open/sandstone_models/friable_models.py +177 -0
- rock_physics_open/sandstone_models/friable_optimisation.py +115 -0
- rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py +235 -0
- rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py +477 -0
- rock_physics_open/sandstone_models/patchy_cement_model.py +384 -0
- rock_physics_open/sandstone_models/patchy_cement_optimisation.py +254 -0
- rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py +134 -0
- rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py +126 -0
- rock_physics_open/shale_models/__init__.py +19 -0
- rock_physics_open/shale_models/dem.py +174 -0
- rock_physics_open/shale_models/dem_dual_por.py +61 -0
- rock_physics_open/shale_models/kus_tok.py +59 -0
- rock_physics_open/shale_models/multi_sca.py +133 -0
- rock_physics_open/shale_models/pq.py +102 -0
- rock_physics_open/shale_models/sca.py +90 -0
- rock_physics_open/shale_models/shale4_mineral.py +147 -0
- rock_physics_open/shale_models/shale4_mineral_dem_overlay.py +92 -0
- rock_physics_open/span_wagner/__init__.py +5 -0
- rock_physics_open/span_wagner/co2_properties.py +444 -0
- rock_physics_open/span_wagner/coefficients.py +165 -0
- rock_physics_open/span_wagner/equations.py +104 -0
- rock_physics_open/span_wagner/tables/__init__.py +0 -0
- rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz +0 -0
- rock_physics_open/span_wagner/tables/lookup_table.py +33 -0
- rock_physics_open/t_matrix_models/Equinor_logo.ico +0 -0
- rock_physics_open/t_matrix_models/__init__.py +35 -0
- rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py +124 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py +123 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py +86 -0
- rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py +297 -0
- rock_physics_open/t_matrix_models/run_t_matrix.py +243 -0
- rock_physics_open/t_matrix_models/t_matrix_C.py +210 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py +137 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py +167 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py +76 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py +89 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py +176 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py +162 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py +12 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py +75 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py +163 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py +95 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py +40 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py +116 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py +18 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py +140 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py +71 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py +42 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py +43 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py +33 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py +50 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py +43 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py +140 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py +60 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py +55 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py +44 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py +278 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py +81 -0
- rock_physics_open/t_matrix_models/tmatrix_python.dll +0 -0
- rock_physics_open/t_matrix_models/tmatrix_python.so +0 -0
- rock_physics_open/ternary_plots/__init__.py +3 -0
- rock_physics_open/ternary_plots/gen_ternary_plot.py +73 -0
- rock_physics_open/ternary_plots/shale_prop_ternary.py +337 -0
- rock_physics_open/ternary_plots/ternary_patches.py +277 -0
- rock_physics_open/ternary_plots/ternary_plot_utilities.py +197 -0
- rock_physics_open/ternary_plots/unconventionals_ternary.py +75 -0
- rock_physics_open/version.py +34 -0
- rock_physics_open-0.3.2.dist-info/METADATA +90 -0
- rock_physics_open-0.3.2.dist-info/RECORD +145 -0
- rock_physics_open-0.3.2.dist-info/WHEEL +5 -0
- rock_physics_open-0.3.2.dist-info/licenses/LICENSE +165 -0
- rock_physics_open-0.3.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import ctypes
|
|
2
|
+
import os
|
|
3
|
+
import platform
|
|
4
|
+
import re
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
from matplotlib import pyplot as plt
|
|
8
|
+
|
|
9
|
+
HORZRES = 8
|
|
10
|
+
VERTRES = 10
|
|
11
|
+
|
|
12
|
+
# The following code is only needed if the figure size is given in inches
|
|
13
|
+
# LOGPIXELSX = 88
|
|
14
|
+
# LOGPIXELSY = 90
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _set_ternary_figure(delta_x, delta_y, title, well_name):
|
|
18
|
+
"""Find screen sixe, and make a suitable figure size and position, shift window with
|
|
19
|
+
number of steps given by deltaX and deltaY.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
if platform.system() == "Windows":
|
|
23
|
+
dc = ctypes.windll.user32.GetDC(0)
|
|
24
|
+
pix_x = ctypes.windll.gdi32.GetDeviceCaps(dc, HORZRES)
|
|
25
|
+
pix_y = ctypes.windll.gdi32.GetDeviceCaps(dc, VERTRES)
|
|
26
|
+
elif platform.system() == "Linux":
|
|
27
|
+
f = os.popen("xrandr | grep '*'")
|
|
28
|
+
pix_x, pix_y = np.array(re.findall(r"\d+", f.read()), dtype=int)[0:2]
|
|
29
|
+
elif platform.system() == "Darwin":
|
|
30
|
+
f = os.popen("system_profiler SPDisplaysDataType | grep Resolution")
|
|
31
|
+
pix_x, pix_y = np.array(re.findall(r"\d+", f.read()), dtype=int)[0:2]
|
|
32
|
+
else:
|
|
33
|
+
raise ValueError("Unrecognised operating system")
|
|
34
|
+
|
|
35
|
+
# Add figure
|
|
36
|
+
fig = plt.figure(title, facecolor=[0.9, 0.9, 0.9])
|
|
37
|
+
# Set figure size and position
|
|
38
|
+
mngr = plt.get_current_fig_manager()
|
|
39
|
+
if platform.system() == "Windows":
|
|
40
|
+
wid = int(pix_x * 0.4)
|
|
41
|
+
hei = int(pix_y * 0.6)
|
|
42
|
+
start_x = int(pix_x * (0.1 + delta_x / 5))
|
|
43
|
+
start_y = int(pix_y * (0.1 + delta_y / 10))
|
|
44
|
+
|
|
45
|
+
mngr.window.wm_geometry("{}x{}+{}+{}".format(wid, hei, start_x, start_y))
|
|
46
|
+
else:
|
|
47
|
+
wid = int(pix_x * 0.2)
|
|
48
|
+
hei = int(pix_y * 0.6)
|
|
49
|
+
start_x = int(pix_x * (0.1 + delta_x / 5))
|
|
50
|
+
start_y = int(pix_y * (0.1 + delta_y / 10))
|
|
51
|
+
mngr.window.wm_geometry("{}x{}+{}+{}".format(wid, hei, start_x, start_y))
|
|
52
|
+
|
|
53
|
+
# Set default colour map
|
|
54
|
+
plt.jet()
|
|
55
|
+
|
|
56
|
+
ax = plt.axes(frameon=False, aspect="equal")
|
|
57
|
+
ax.set_title(well_name)
|
|
58
|
+
plt.ylim([-0.02, 1])
|
|
59
|
+
plt.xlim([0, 1])
|
|
60
|
+
ax.set_axis_off()
|
|
61
|
+
|
|
62
|
+
return fig, ax
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _ternary_coord_trans(*args):
|
|
66
|
+
"""Routine to transform ternary coordinates to xy coordinates.
|
|
67
|
+
Inputs can either be 3 separate coordinate arrays or a nX3 array
|
|
68
|
+
The sum of the input coordinates should be one - the routine will normalise the inputs
|
|
69
|
+
|
|
70
|
+
Returns
|
|
71
|
+
-------
|
|
72
|
+
np.ndarray
|
|
73
|
+
Coordinates in nx2 numpy array.
|
|
74
|
+
"""
|
|
75
|
+
trans_mat = np.array(
|
|
76
|
+
[
|
|
77
|
+
[0.0, 0.0],
|
|
78
|
+
[1.0, 0.0],
|
|
79
|
+
[0.5, 0.5 * np.sqrt(3)],
|
|
80
|
+
]
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
tern_coord = None
|
|
84
|
+
if len(args) == 3:
|
|
85
|
+
try:
|
|
86
|
+
tern_coord = np.array(np.column_stack(args[:]))
|
|
87
|
+
except ValueError:
|
|
88
|
+
print(
|
|
89
|
+
f"{__file__}: Could not combine inputs to _ternary_coord_trans routine"
|
|
90
|
+
)
|
|
91
|
+
elif len(args) == 1:
|
|
92
|
+
tern_coord = np.array(args[0])
|
|
93
|
+
else:
|
|
94
|
+
raise ValueError(f"{__file__}: Unexpected input to TernaryCoordTrans routine")
|
|
95
|
+
|
|
96
|
+
# Normalise inputs
|
|
97
|
+
tot = tern_coord.sum(axis=1).reshape(tern_coord.shape[0], 1)
|
|
98
|
+
tern_coord = tern_coord / tot
|
|
99
|
+
|
|
100
|
+
return np.array(tern_coord @ trans_mat)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _triangle_transform(xy1):
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
Parameters
|
|
107
|
+
----------
|
|
108
|
+
xy1 : np.ndarray
|
|
109
|
+
Input coordinates.
|
|
110
|
+
|
|
111
|
+
Returns
|
|
112
|
+
-------
|
|
113
|
+
np.ndarray
|
|
114
|
+
Transformed input.
|
|
115
|
+
"""
|
|
116
|
+
xy = np.ones_like(xy1, dtype=float)
|
|
117
|
+
xy[:, 0] = 0.5 + (xy1[:, 0] - 0.5) * (1 - xy1[:, 1])
|
|
118
|
+
xy[:, 1] = xy1[:, 1] * np.sqrt(3) / 2
|
|
119
|
+
|
|
120
|
+
return xy
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def _make_mesh(ax):
|
|
124
|
+
"""Make coordinate mesh."""
|
|
125
|
+
# Make coordinate mesh
|
|
126
|
+
i = np.linspace(0, 1, 11).reshape(11, 1)
|
|
127
|
+
text_handles = []
|
|
128
|
+
line_handles = []
|
|
129
|
+
# 1
|
|
130
|
+
xy1 = _ternary_coord_trans(i, np.zeros(len(i)), 1 - i)
|
|
131
|
+
xy2 = _ternary_coord_trans(i, 1 - i, np.zeros(len(i)))
|
|
132
|
+
for j in range(len(i)):
|
|
133
|
+
line_handles.append(
|
|
134
|
+
ax.plot(
|
|
135
|
+
[
|
|
136
|
+
xy1[j, 0],
|
|
137
|
+
xy2[j, 0],
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
xy1[j, 1],
|
|
141
|
+
xy2[j, 1],
|
|
142
|
+
],
|
|
143
|
+
":k",
|
|
144
|
+
linewidth=0.25,
|
|
145
|
+
)
|
|
146
|
+
)
|
|
147
|
+
# 2
|
|
148
|
+
xy1 = _ternary_coord_trans(np.zeros(len(i)), i, 1 - i)
|
|
149
|
+
xy2 = _ternary_coord_trans(1 - i, i, np.zeros(len(i)))
|
|
150
|
+
for j in range(len(i)):
|
|
151
|
+
line_handles.append(
|
|
152
|
+
ax.plot(
|
|
153
|
+
[
|
|
154
|
+
xy1[j, 0],
|
|
155
|
+
xy2[j, 0],
|
|
156
|
+
],
|
|
157
|
+
[
|
|
158
|
+
xy1[j, 1],
|
|
159
|
+
xy2[j, 1],
|
|
160
|
+
],
|
|
161
|
+
":k",
|
|
162
|
+
linewidth=0.25,
|
|
163
|
+
)
|
|
164
|
+
)
|
|
165
|
+
# 3
|
|
166
|
+
xy1 = _ternary_coord_trans(1 - i, np.zeros(len(i)), i)
|
|
167
|
+
xy2 = _ternary_coord_trans(np.zeros(len(i)), 1 - i, i)
|
|
168
|
+
for j in range(len(i)):
|
|
169
|
+
line_handles.append(
|
|
170
|
+
ax.plot(
|
|
171
|
+
[
|
|
172
|
+
xy1[j, 0],
|
|
173
|
+
xy2[j, 0],
|
|
174
|
+
],
|
|
175
|
+
[
|
|
176
|
+
xy1[j, 1],
|
|
177
|
+
xy2[j, 1],
|
|
178
|
+
],
|
|
179
|
+
":k",
|
|
180
|
+
linewidth=0.25,
|
|
181
|
+
)
|
|
182
|
+
)
|
|
183
|
+
# Tick mark text
|
|
184
|
+
xy1 = _ternary_coord_trans(1 - i, i, np.zeros(len(i)))
|
|
185
|
+
for j in range(len(i)):
|
|
186
|
+
text_handles.append(ax.text(xy1[j, 0], xy1[j, 1] - 0.025, "%.1f" % (i[j, 0])))
|
|
187
|
+
xy1 = _ternary_coord_trans(i, np.zeros(len(i)), 1 - i)
|
|
188
|
+
for j in range(len(i)):
|
|
189
|
+
text_handles.append(
|
|
190
|
+
ax.text(xy1[j, 0] - 0.05, xy1[j, 1] + 0.025, "%.1f" % (i[j, 0]))
|
|
191
|
+
)
|
|
192
|
+
xy1 = _ternary_coord_trans(np.zeros(len(i)), 1 - i, i)
|
|
193
|
+
for j in range(len(i)):
|
|
194
|
+
text_handles.append(ax.text(xy1[j, 0], xy1[j, 1] + 0.025, "%.1f" % (i[j, 0])))
|
|
195
|
+
plt.setp(text_handles, fontsize=10)
|
|
196
|
+
|
|
197
|
+
return text_handles, line_handles
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import matplotlib
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
|
|
4
|
+
from .gen_ternary_plot import _ternary_plot
|
|
5
|
+
from .shale_prop_ternary import _shale_prop_ternary
|
|
6
|
+
from .ternary_patches import _ternary_patches
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run_ternary(
|
|
10
|
+
quartz, carb, clay, kero, phi, misc, misc_log_type, well_name, draw_figures=True
|
|
11
|
+
):
|
|
12
|
+
"""Combined call to three different ternary plots used to describe unconventionals (shale) models.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
quartz : np.ndarray
|
|
17
|
+
Quartz volume fraction [fraction].
|
|
18
|
+
carb : np.ndarray
|
|
19
|
+
Carbonate volume fraction [fraction].
|
|
20
|
+
clay : np.ndarray
|
|
21
|
+
Clay volume fraction [fraction].
|
|
22
|
+
kero : np.ndarray
|
|
23
|
+
Kerogen volume fraction [fraction].
|
|
24
|
+
phi : np.ndarray
|
|
25
|
+
Porosity [fraction].
|
|
26
|
+
misc : np.ndarray
|
|
27
|
+
Property used for colour coding [unknown].
|
|
28
|
+
misc_log_type : str
|
|
29
|
+
Plot annotation of log used for colour coding.
|
|
30
|
+
well_name : str
|
|
31
|
+
Plot heading with well name.
|
|
32
|
+
draw_figures : bool
|
|
33
|
+
Decide if figures are drawn or not, default is True.
|
|
34
|
+
|
|
35
|
+
Returns
|
|
36
|
+
-------
|
|
37
|
+
tuple
|
|
38
|
+
lith_class, hard : (np.ndarray, np.ndarray).
|
|
39
|
+
lith_class: lithology class [int], hardness [float].
|
|
40
|
+
"""
|
|
41
|
+
matplotlib.use("TkAgg")
|
|
42
|
+
|
|
43
|
+
lith_class = _ternary_patches(
|
|
44
|
+
quartz, carb, clay, kero, well_name, draw_figures=draw_figures
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
hard = _shale_prop_ternary(
|
|
48
|
+
quartz,
|
|
49
|
+
carb,
|
|
50
|
+
clay,
|
|
51
|
+
kero,
|
|
52
|
+
phi,
|
|
53
|
+
misc,
|
|
54
|
+
misc_log_type,
|
|
55
|
+
well_name,
|
|
56
|
+
draw_figures=draw_figures,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
_ternary_plot(
|
|
60
|
+
quartz,
|
|
61
|
+
carb,
|
|
62
|
+
clay,
|
|
63
|
+
kero,
|
|
64
|
+
well_name,
|
|
65
|
+
"Quartz",
|
|
66
|
+
"Carbonate",
|
|
67
|
+
"Clay",
|
|
68
|
+
"Kerogen",
|
|
69
|
+
draw_figures=draw_figures,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
if draw_figures:
|
|
73
|
+
plt.show()
|
|
74
|
+
|
|
75
|
+
return lith_class, hard
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
TYPE_CHECKING = False
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from typing import Tuple
|
|
16
|
+
from typing import Union
|
|
17
|
+
|
|
18
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
20
|
+
else:
|
|
21
|
+
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
23
|
+
|
|
24
|
+
version: str
|
|
25
|
+
__version__: str
|
|
26
|
+
__version_tuple__: VERSION_TUPLE
|
|
27
|
+
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
30
|
+
|
|
31
|
+
__version__ = version = '0.3.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 2)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = None
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rock_physics_open
|
|
3
|
+
Version: 0.3.2
|
|
4
|
+
Summary: Equinor Rock Physics Module
|
|
5
|
+
Author-email: Harald Flesche <hfle@equinor.com>, Eivind Jahren <ejah@equinor.com>, Jimmy Zurcher <jiz@equinor.com>
|
|
6
|
+
Maintainer-email: Harald Flesche <hfle@equinor.com>, Eirik Ola Aksnes <eoaksnes@equinor.com>, Sivert Utne <sutn@equinor.com>, Einar Wigum Arbo <earb@equinor.com>
|
|
7
|
+
Project-URL: Repository, https://github.com/equinor/rock-physics-open
|
|
8
|
+
Project-URL: Homepage, https://github.com/equinor/rock-physics-open
|
|
9
|
+
Project-URL: Changelog, https://github.com/equinor/rock-physics-open/blob/main/CHANGELOG.md
|
|
10
|
+
Keywords: energy,subsurface,seismic,rock physics,scientific,engineering
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
15
|
+
Classifier: Topic :: Utilities
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Natural Language :: English
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: numpy>=1.26.4
|
|
25
|
+
Requires-Dist: pandas>=2.0.2
|
|
26
|
+
Requires-Dist: matplotlib>=3.7.1
|
|
27
|
+
Requires-Dist: scipy<2,>=1.10.1
|
|
28
|
+
Requires-Dist: scikit-learn>=1.2.2
|
|
29
|
+
Requires-Dist: sympy>=1.13.3
|
|
30
|
+
Requires-Dist: tmatrix>=1.0.0
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
<div align="center">
|
|
34
|
+
|
|
35
|
+
# rock-physics-open
|
|
36
|
+
|
|
37
|
+
[![License: LGPL v3][license-badge]][license]
|
|
38
|
+
[![SCM Compliance][scm-compliance-badge]][scm-compliance]
|
|
39
|
+
[![on push main action status][on-push-main-action-badge]][on-push-main-action]
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
This repository contains Python code for rock physics modules created in Equinor by
|
|
44
|
+
Harald Flesche 2010 - ... Batzle-Wang and Span-Wagner fluid equations are implemented
|
|
45
|
+
by Eivind Jahren and Jimmy Zurcher. Some models are based on original Matlab code
|
|
46
|
+
by Tapan Mukerji at Stanford University and ported to Python by Harald Flesche.
|
|
47
|
+
|
|
48
|
+
The modules in this repository are implementations of rock physics models
|
|
49
|
+
used in quantitative seismic analysis, in addition to some utilities for handling
|
|
50
|
+
of seismic and well data. The repository started as internal Equinor plugins, and was
|
|
51
|
+
extracted as a separate repository that could be used within other internal applications
|
|
52
|
+
in 2023. In 2025 it was released under LGPL license.
|
|
53
|
+
|
|
54
|
+
The content of the library can be described as follows:
|
|
55
|
+
|
|
56
|
+
Functions with inputs and outputs consisting of numpy arrays or in some
|
|
57
|
+
cases pandas dataframes. Data frames are used in the cases where there are
|
|
58
|
+
many inputs and/or there is a need for checking the name of inputs, such
|
|
59
|
+
as when there are multiple inputs of the same type which will have
|
|
60
|
+
different purpose. It should be made clear in which cases data dataframes
|
|
61
|
+
are expected.
|
|
62
|
+
There is normally not any check on inputs, it is just the minimum
|
|
63
|
+
definition of equations and other utilities.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## Installation
|
|
67
|
+
|
|
68
|
+
This module can be installed through [PyPI](https://pypi.org/project/rock-physics-open/) with:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
pip install rock-physics-open
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Alternatively, you can update the dependencies in your `pyproject.toml` file:
|
|
75
|
+
|
|
76
|
+
<!-- x-release-please-start-version -->
|
|
77
|
+
```toml
|
|
78
|
+
dependencies = [
|
|
79
|
+
"rock-physics-open == 0.3.2",
|
|
80
|
+
]
|
|
81
|
+
```
|
|
82
|
+
<!-- x-release-please-end-version -->
|
|
83
|
+
|
|
84
|
+
<!-- External Links -->
|
|
85
|
+
[scm-compliance]: https://developer.equinor.com/governance/scm-policy/
|
|
86
|
+
[scm-compliance-badge]: https://scm-compliance-api.radix.equinor.com/repos/equinor/rock-physics-open/badge
|
|
87
|
+
[license]: https://www.gnu.org/licenses/lgpl-3.0
|
|
88
|
+
[license-badge]: https://img.shields.io/badge/License-LGPL_v3-blue.svg
|
|
89
|
+
[on-push-main-action]: https://github.com/equinor/rock-physics-open/actions/workflows/on-push-main.yaml
|
|
90
|
+
[on-push-main-action-badge]: https://github.com/equinor/rock-physics-open/actions/workflows/on-push-main.yaml/badge.svg
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
rock_physics_open/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
rock_physics_open/version.py,sha256=e8NqPtZ8fggRgk3GPrqZ_U_BDV8aSULw1u_Gn9NNbnk,704
|
|
3
|
+
rock_physics_open/equinor_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
rock_physics_open/equinor_utilities/anisotropy.py,sha256=U7REZRZoexkbGYEJ8xF8Qk3CInFTPjO--M5d2XbMYj0,6026
|
|
5
|
+
rock_physics_open/equinor_utilities/conversions.py,sha256=PUwir8UNSMlZE1DAM6zVxijjcHiSdLS6VevWInjnV0I,210
|
|
6
|
+
rock_physics_open/equinor_utilities/classification_functions/__init__.py,sha256=3_pg0sd0ENOeOQ7z0ft9DsFJVij6VralpguDVXGh0Es,459
|
|
7
|
+
rock_physics_open/equinor_utilities/classification_functions/class_stats.py,sha256=_4tXB0bh9SSX7JshoVv-FkWrx_ff5xuuQ3kip5m9x3Q,2456
|
|
8
|
+
rock_physics_open/equinor_utilities/classification_functions/lin_class.py,sha256=zRbmxQNaBDSXFUpDLRTUakuz8CgYmjniA7hkI5NvPhk,1759
|
|
9
|
+
rock_physics_open/equinor_utilities/classification_functions/mahal_class.py,sha256=c-dQoIosj4UUwPqsgxNLZTFVB33PONYFs6a2DJnl3i4,2238
|
|
10
|
+
rock_physics_open/equinor_utilities/classification_functions/norm_class.py,sha256=gvAynMfuIW9HtSu3q8EgUO_HSe_aE-hJ79bzPlgmZV8,2840
|
|
11
|
+
rock_physics_open/equinor_utilities/classification_functions/poly_class.py,sha256=qmtVVPwT-SM7TuJg1L5zp-sjvk1w-A8vDMIxWrwMvcw,1361
|
|
12
|
+
rock_physics_open/equinor_utilities/classification_functions/post_prob.py,sha256=M4bDtSaRqtg4z8bXZNUGULB6WeZT63hnj4Mhmyr6YXM,746
|
|
13
|
+
rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py,sha256=TNOYTcB8pVJao00_T-MoPERJpKGSFSA55GYzoGLQ130,2163
|
|
14
|
+
rock_physics_open/equinor_utilities/gen_utilities/__init__.py,sha256=MKdiFkfPkNIMsVwJpst5PLnW3RjFz43k5-yt4_WhW3o,289
|
|
15
|
+
rock_physics_open/equinor_utilities/gen_utilities/dict_to_float.py,sha256=-fiOsNuR044t5MWSrdF3kaM_8WFkyq2pxgt5_SeeaaQ,1018
|
|
16
|
+
rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py,sha256=2ebRxWL4XFpnLsbi0j43KQff9ydRyR8hOB1KSqQY8JI,3964
|
|
17
|
+
rock_physics_open/equinor_utilities/gen_utilities/filter_input.py,sha256=K-DUsS8nVOWick6CsnsWrUWnOtzPq5ofc_Z8kPBU_hs,5419
|
|
18
|
+
rock_physics_open/equinor_utilities/gen_utilities/filter_output.py,sha256=iwoHuyzJtksEJKjuLwScd96Bov6SyifU-AqvosZ9VD0,3528
|
|
19
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py,sha256=tXpPTpkviwEbok3Ff8R7m4Og8d97fjdsZaaM599jjEA,469
|
|
20
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/base_pressure_model.py,sha256=9znZYQxKowkwbJ53ojoYobc1uKelPucFBjh154gmj5E,4705
|
|
21
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py,sha256=R3f_-e9asv8WinXaVwDb_JYMoXa4sgCAddcWbwsnsD4,1843
|
|
22
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py,sha256=5Riy-ZnfmyyEj9fzlBrSRwNxQ1sj-Rql7V0dbh982vA,3949
|
|
23
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py,sha256=L9730bY4rtW9sem35rJzxI9PQMHSPAiAmQcWIs2rf4Q,2684
|
|
24
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/polynomial_model.py,sha256=1Y6uhrQ6dAT93b4YKhIzjfOIlqSP3lCYnM8QDGDXAoc,3885
|
|
25
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py,sha256=6dW8znIkIC0D_-akKH_niewo9M9g5QjaBDRjYkvGgI8,6513
|
|
26
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py,sha256=w-a6MJviiJA-FagiFVSfbzMIYolL3s0XZzpwUIqXjCU,7528
|
|
27
|
+
rock_physics_open/equinor_utilities/optimisation_utilities/__init__.py,sha256=8IZ_5Yq83YUB7_cxTkC8WeMkQGUHt83IHzA6GJ4rxDc,364
|
|
28
|
+
rock_physics_open/equinor_utilities/optimisation_utilities/opt_subst_utilities.py,sha256=pVYoVp_wmdQzcGpmIWmKgL4x2_n8kGatEQ0BGjo2f64,15451
|
|
29
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py,sha256=lcbI80ZH6JQS0jI-eUITFBafHVRdhQ5VwttPolHnJyI,255
|
|
30
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py,sha256=hwCPtcUtXO5RTeJSp37rHMAk6MXFhPHKUGKPaeSyceM,7078
|
|
31
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py,sha256=5BVz-MRScETsfhq00a6PFkLO8EGU7QihKdXDih-YRX0,2772
|
|
32
|
+
rock_physics_open/equinor_utilities/std_functions/__init__.py,sha256=MLOfMxRazS9tGOVvuLkUp-E4b6jRWOP4YCLf8si624c,1121
|
|
33
|
+
rock_physics_open/equinor_utilities/std_functions/backus_ave.py,sha256=KPkQrDcUL9DU4BnzcIMvgI61sJcU5aVoT62ZMnbfEpw,1997
|
|
34
|
+
rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py,sha256=KgKe_xHHFRq-eWWBn_506ubGD0O_RmbF2NApWYXNqUM,2435
|
|
35
|
+
rock_physics_open/equinor_utilities/std_functions/gassmann.py,sha256=oLWnGThD55z3nm4wyRDySeIdpTwRtRR-_kGmb5_cI4Q,4325
|
|
36
|
+
rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py,sha256=il6UbxmIskK_cObkTLSma2VPFqswPTLGI1kO8e6x-l4,6856
|
|
37
|
+
rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py,sha256=c1G7gM3LR_HvyaYC7wNULQ9N6eNEi5AUiSz2MZo_470,1683
|
|
38
|
+
rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py,sha256=Tbmw_OSQaefQoRqOCW1MIjWRlZZVMqSi9UhkYgmwDx8,1521
|
|
39
|
+
rock_physics_open/equinor_utilities/std_functions/reflection_eq.py,sha256=iXuWMGghwhUhyCQgGRm7xS_rhN4k6N042o3nDfgQzl8,3237
|
|
40
|
+
rock_physics_open/equinor_utilities/std_functions/rho.py,sha256=xDIa2x82w2XtkxrgwYYeRnqzT8zWlsfWlp5ntVQpQDs,1696
|
|
41
|
+
rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py,sha256=v1tRVYsH102rE504qJOdkjC2HCrL4FVlU4TI0X0yqKU,3803
|
|
42
|
+
rock_physics_open/equinor_utilities/std_functions/walton.py,sha256=p97TGeHGgEQrrc-c21cb7__0rmlKYgBb82GE1thuwDM,1501
|
|
43
|
+
rock_physics_open/equinor_utilities/std_functions/wood_brie.py,sha256=r4OVEYCVn-v7G2aQ-Yo79T4Zk1xa-Kh9Q8Ll6MJSuyI,2485
|
|
44
|
+
rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif,sha256=E9pXxAQig-6chS8Uz3rhFYcNQC4Nk0vbsja0pkZ-lEk,892
|
|
45
|
+
rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico,sha256=vXHlDI4DTCgxmm84_FB3BEMK-NORhcSR6wq01sb6QD0,19598
|
|
46
|
+
rock_physics_open/equinor_utilities/various_utilities/__init__.py,sha256=UfxgTybUY_O48gou1DaL2bJYZKTViajN556J4EOjXLs,716
|
|
47
|
+
rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py,sha256=8SfCrLhC9nmCTO2NWlEzg2EFJ76lNbA5OXtK15TYs0w,3245
|
|
48
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py,sha256=l-7Pfw3wgDkVSWAcMNu_CPocRoUHMIghRVwIXL6qCAs,1757
|
|
49
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py,sha256=ZgummAFq9gxVwVKDMfqdG-iUvUnEHdfK6b7iI52BZ3g,1755
|
|
50
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py,sha256=JW9KKrLW3qa8TBqDqeFJMjgqLom1pw86qMV-6oUnShw,2209
|
|
51
|
+
rock_physics_open/equinor_utilities/various_utilities/hs_average.py,sha256=2lArjOpwAmZKNuBIwQXppZ7zUo2JlrwzyMdUkQPhI7A,1522
|
|
52
|
+
rock_physics_open/equinor_utilities/various_utilities/pressure.py,sha256=XYw6zu2Lf9VrO4h4i8xRy2guMQSZGR0N1UnIfyhkvDI,3491
|
|
53
|
+
rock_physics_open/equinor_utilities/various_utilities/reflectivity.py,sha256=kxcmooLicw9pGv_TF-O7_uKC44yAqqc0WbcYA4mvpx4,3658
|
|
54
|
+
rock_physics_open/equinor_utilities/various_utilities/timeshift.py,sha256=kX7E4hnusHh5W3aCkaUAezZHn7BRQzVqPZzv2uBpVvU,2709
|
|
55
|
+
rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py,sha256=6M3V57icSKS2yKt5Wi8c6EIuGOoxyfSVt0c9Z5ny14c,6235
|
|
56
|
+
rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py,sha256=c-hnf1FLgpLjFcys_9WRkVHelQ1VYz1Gcf0b8-2Gxt4,2592
|
|
57
|
+
rock_physics_open/fluid_models/__init__.py,sha256=H3jeo69HuZCiuZ_meQe27NXIKTMOq2qiZ_UXKYyFmQs,201
|
|
58
|
+
rock_physics_open/fluid_models/brine_model/__init__.py,sha256=PqVXs5rI421j7xL-Z5pFfNIdC0cUameBJHLOUqEO7wo,86
|
|
59
|
+
rock_physics_open/fluid_models/brine_model/brine_properties.py,sha256=lBnai7l0gr_XGqVIaIPT-WWSudiMfBJAO-_v1FH99uo,5756
|
|
60
|
+
rock_physics_open/fluid_models/gas_model/__init__.py,sha256=fRoVKB7uo_BTyq1TKwXblqOgJYw7k_uGqFzLQE4YT_k,80
|
|
61
|
+
rock_physics_open/fluid_models/gas_model/gas_properties.py,sha256=rZNmnWvqVsU5SmKEqe0pjgccQ0LqQ664ZmKp8HlruOc,10728
|
|
62
|
+
rock_physics_open/fluid_models/oil_model/__init__.py,sha256=s-uuo4FIP6sxm4m01AXqjh-d8T8Cl5WkSDZvwuGWyeg,80
|
|
63
|
+
rock_physics_open/fluid_models/oil_model/dead_oil_density.py,sha256=TWwj20qPwZJ-J0rpOJBpx5YuFKLBHjWEjDE0mxA9Bsk,2184
|
|
64
|
+
rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py,sha256=u578B-PBLTs1qxWlmtPuaFmxnvXllOhft93CYs8sYYM,903
|
|
65
|
+
rock_physics_open/fluid_models/oil_model/live_oil_density.py,sha256=ck-BNUgic5haTUqr9BlQTjVQk_JCPTeGtekrAeDYkd0,2925
|
|
66
|
+
rock_physics_open/fluid_models/oil_model/live_oil_velocity.py,sha256=-sSgC9_y1v5C1yRNads2mkyuhZGQG-kzbe9khY6LuDY,934
|
|
67
|
+
rock_physics_open/fluid_models/oil_model/oil_bubble_point.py,sha256=hWxxJtYZFK8_mVuKTYGipLmkT6DJobz6SVm53fa_rSc,2605
|
|
68
|
+
rock_physics_open/fluid_models/oil_model/oil_properties.py,sha256=puuEBEhkP4vkniChsIjTbrEdYMYBinHCFgVZZAFhBjc,5229
|
|
69
|
+
rock_physics_open/sandstone_models/__init__.py,sha256=OWcq4Jgin6lO-mu8rYnjfBVvgb_9_64gdhquKbT_sm8,2015
|
|
70
|
+
rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py,sha256=jXEuEOMOmiAukYlDgV3-vd2tiZWW8Dm59PaeP-XXh8Y,8516
|
|
71
|
+
rock_physics_open/sandstone_models/constant_cement_models.py,sha256=kHRcPEC114uolMZvvPxzvHJhF9wdSuuDKNS0mNFrqtI,7223
|
|
72
|
+
rock_physics_open/sandstone_models/constant_cement_optimisation.py,sha256=D9ej8PaQ5iVMaCf0LKDQGgJ6CSl8JEFIaxobwddzs_Y,3745
|
|
73
|
+
rock_physics_open/sandstone_models/contact_cement_model.py,sha256=EVCicRGnW13QBWuvyscFYLy8JpgANPla7ECDeZLfhdA,4488
|
|
74
|
+
rock_physics_open/sandstone_models/curvefit_sandstone_models.py,sha256=pZ7u7bVNYG254fwtyyrD1SMIFn2onHBu_XZCfVfajzI,3988
|
|
75
|
+
rock_physics_open/sandstone_models/friable_models.py,sha256=cvfLt7GQHn8EKKUk2Z86l-2o-_nXwDXDkQ1ekPQ6L6s,6153
|
|
76
|
+
rock_physics_open/sandstone_models/friable_optimisation.py,sha256=YCg20EJQaQevEmilPWCbuqZ7GycKX84nmlca5W-jfRM,3467
|
|
77
|
+
rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py,sha256=eMXRCrGdCC9VyYwjg498M0GTAMlWar18iz5gS7Rz16w,6884
|
|
78
|
+
rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py,sha256=21ujg7K-f7vykKxYwFynPenZLVZkdBAiAEwt4-K4r5I,16123
|
|
79
|
+
rock_physics_open/sandstone_models/patchy_cement_model.py,sha256=zKdAAFJXgblCpmihRiEz_8DPd40nniJW97-0daCZoq0,11161
|
|
80
|
+
rock_physics_open/sandstone_models/patchy_cement_optimisation.py,sha256=Tf3jRT0c1r3IgVPUFWTDqh4-XB5381dqeH7CPE27QYg,7017
|
|
81
|
+
rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py,sha256=xFF_FrQw_3DoYADK7-3Lecr_KnurNQLsXy-22eN-92c,3901
|
|
82
|
+
rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py,sha256=HpRBIQw2POoQbJ2DlwoyJSDvKvhJQyhgmkjoGQFo1vE,3671
|
|
83
|
+
rock_physics_open/shale_models/__init__.py,sha256=od24QmnojL_caOQjG9t2dMajgmgOnBduJiGzqEN0ijE,565
|
|
84
|
+
rock_physics_open/shale_models/dem.py,sha256=GCY1FrSagqA3aOSbzXu7zi-Evs0VghEpnlTXAEQ1aYI,5089
|
|
85
|
+
rock_physics_open/shale_models/dem_dual_por.py,sha256=60qqAwQlZLWk_qJfEFq5jVpHqfq6wsogAyvHDTDJu9w,1795
|
|
86
|
+
rock_physics_open/shale_models/kus_tok.py,sha256=t65D6EoBd8T3nU_63z1_IPXaBKS0646wyPjNcKI1rQs,1853
|
|
87
|
+
rock_physics_open/shale_models/multi_sca.py,sha256=wf3B-Iwuq9rg5xrMPYCtLWWaukhAX02xEcoXfZaCQhI,4313
|
|
88
|
+
rock_physics_open/shale_models/pq.py,sha256=O_0pVjd5PuSZaHbNYSUUwVEq2ZOJSXw7fUohnRU-Jv0,2855
|
|
89
|
+
rock_physics_open/shale_models/sca.py,sha256=eSzPBFQnm6SoL8f5UACs_PSlCgXU3QgwK69pI9H_828,2647
|
|
90
|
+
rock_physics_open/shale_models/shale4_mineral.py,sha256=aJ2KIWR3EUtjDjJ-mBYQACVv6QQg_73HFW9FNwicwsc,3862
|
|
91
|
+
rock_physics_open/shale_models/shale4_mineral_dem_overlay.py,sha256=ty8yKoUVuBKeLT17gdS1BHBV1EJCQIpl-b5JG2fF4I8,2660
|
|
92
|
+
rock_physics_open/span_wagner/__init__.py,sha256=cnvKCSmO0_KkEhbbV3BoDsV-NhlGLnDpBwErI8TPKuQ,80
|
|
93
|
+
rock_physics_open/span_wagner/co2_properties.py,sha256=7w-VZjR6vUOxX-NWTpLhoXH4fiUCNXd8-HBTrg-nm4w,16358
|
|
94
|
+
rock_physics_open/span_wagner/coefficients.py,sha256=dGSW58MWnx064LaW0RwIaSDjP1aqV_5Bs9pk9Aaz9j0,3878
|
|
95
|
+
rock_physics_open/span_wagner/equations.py,sha256=wE99XBrx70NqgxS1qdyGlKTusGihWrtdv3KlpifCz_c,3001
|
|
96
|
+
rock_physics_open/span_wagner/tables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
|
+
rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz,sha256=VO_WzWOvfSq2hR32LH49PkJ6_5XrfKRFZoLm-FjUdKc,19291158
|
|
98
|
+
rock_physics_open/span_wagner/tables/lookup_table.py,sha256=OCfyXLpQEt5HdKTcZdjd5R2PpZfFbFSP5IOXNAqFp9M,924
|
|
99
|
+
rock_physics_open/t_matrix_models/Equinor_logo.ico,sha256=vXHlDI4DTCgxmm84_FB3BEMK-NORhcSR6wq01sb6QD0,19598
|
|
100
|
+
rock_physics_open/t_matrix_models/__init__.py,sha256=3igXzGEEtMhbB1OCNpIfjliqmZoSHq01y2bX2rzUYrA,1304
|
|
101
|
+
rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py,sha256=YY5tn4-ivsFPIaB_u_9ZwoRsjGLnyh0XsAPzKUL19wc,4222
|
|
102
|
+
rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py,sha256=picqg3VoDrVlTnG8z5pn8rWuNY1djYre37eNQpXIlc8,3770
|
|
103
|
+
rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py,sha256=U2lLaseglOJJewJUUv2tBKeEadtV4iFKJUVACe2qVJ8,2731
|
|
104
|
+
rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py,sha256=iK5A99kiyZJX83kTvA1bY-5TMJVDwH0_ediUQh87S9M,10039
|
|
105
|
+
rock_physics_open/t_matrix_models/run_t_matrix.py,sha256=9TbLfACuBQyVNQbk_75CT_6zgor2znA7H5qdAaV7oGw,7678
|
|
106
|
+
rock_physics_open/t_matrix_models/t_matrix_C.py,sha256=Ho2eTwkT3aCbceU5UnnQub4muWqnK2g9_FSuWPcx5vo,6819
|
|
107
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py,sha256=Zp09GyfuM6DfLwlCWEUgoZJVKXGVZHv72eAM-wXMukM,4002
|
|
108
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py,sha256=9sOtnpjXmtC02FU-yBk80nA7rNBfw6ioTO0YRPQ34lQ,4893
|
|
109
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py,sha256=ynYUcpWfdJ7wgbCWH5Yn0pHsEO5tEwlCmZvKn_qcUSc,2681
|
|
110
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py,sha256=zmMPmQdp21ZfOfxLq9-iFeksQdLYCS5_vPn4Fhm1A_c,2879
|
|
111
|
+
rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py,sha256=tnAui1T6-z5jq4eiWASDJpWfPjBi_-mEosnMnV0aidQ,6308
|
|
112
|
+
rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py,sha256=VakezJMCgvunHs6AMiGbakcU_x_7SG1bxX91rN_kWFg,5778
|
|
113
|
+
rock_physics_open/t_matrix_models/tmatrix_python.dll,sha256=yx_5QtoUzfc8ISjLIgExIt9VIrgKzH8UJgJ2ry9sTiw,750592
|
|
114
|
+
rock_physics_open/t_matrix_models/tmatrix_python.so,sha256=_7jdrrZddJGdmILmKD8ds8aCsbaA7FnBXzhh6_CsTdA,154430
|
|
115
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py,sha256=f0E9SJ7F7wGu6i3CileFtShjM7DXdla_L2KD_pJ66p0,365
|
|
116
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py,sha256=BCHwrvJA6E6CQ0LJ-u4jxpZ5Hm96B2kz-ZOnQXLY9qU,2138
|
|
117
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py,sha256=v5l9ntqgqBwkZLVXS_Fg6HDcdMQfvcQG50CfhgUPabk,4740
|
|
118
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py,sha256=lFh2sOYOQF-tLozz5VC2HodiRahYIz-L1VV0_QXssus,3371
|
|
119
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py,sha256=FHJCCTNG9DZhqRfETPRvCKiY-ttp6vItFckmYj6OkZk,1082
|
|
120
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py,sha256=8qFRVujk3_Y0LlYSBUf7R7qVtE2kiVMLtVKEN9X9-3o,4142
|
|
121
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py,sha256=MGYJrhVrppUFO-0fhTHEYgjdIxAqq61itYpL8biq0jM,325
|
|
122
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py,sha256=xxmR8DMC9fwamubHgTdQlXqd9rgsCiyi1kDsr9q8w9o,4267
|
|
123
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py,sha256=GsuvMflsPPwlAz_WuicvGGungQMNZ3DSV1bIC6KdHSg,2079
|
|
124
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py,sha256=kb94sqndrEe5KGWfHjeaThmRwwYCTQwhRw56cNePsYw,1286
|
|
125
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py,sha256=JItf6WTOUE_ccJOv1_ICFLlBndRom1vKbAW6gC4YmkM,1488
|
|
126
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py,sha256=QU55boUhiK7nnrduqpDLWeVdUrqDyzaaJAyeBfdDWmo,1014
|
|
127
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py,sha256=MYNfsi1DInATPTYLR6s6YaIBZ-8lI1x6jbAIjIs1UG4,1884
|
|
128
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py,sha256=KvUhte8tlHO01N0LALviOO5rmA374xDFYT5cSSI0zvA,1130
|
|
129
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py,sha256=PqUPpJ5ut_VDNTKLpN55x7yu9WOPxJDzDquuT0xGAgQ,4676
|
|
130
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py,sha256=7FlkQTUOsaC1aYtYhhF517FFm0mXYYodG76x6oYg8QI,1124
|
|
131
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py,sha256=cXBNLc0zW5-LV37x7Mi8Y-gNJ5DDCABlZZeE9A03ku4,1630
|
|
132
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py,sha256=mhQeMbbmQrnNZ1-7o_7o9mPG3_l3360NYe4sI4Lkyaw,1197
|
|
133
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py,sha256=OqdPijkrtAnpB2-CWiw0LOWOp8ImMOtoP3T2Wus7fOQ,9500
|
|
134
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py,sha256=8-OpTWRdMfJqHdi_agOV0n0-BkTq5TBFilLCarw7iME,2447
|
|
135
|
+
rock_physics_open/ternary_plots/__init__.py,sha256=mrmn0T4G91UPdCTEOr4HSEd1d8ZCR1KE_TGvN2g2I18,76
|
|
136
|
+
rock_physics_open/ternary_plots/gen_ternary_plot.py,sha256=uLwoeV19Tfj6Cy18NWcSoOV18DcYBJUYofb8zEYmSzM,1836
|
|
137
|
+
rock_physics_open/ternary_plots/shale_prop_ternary.py,sha256=5-NB4LoXRP7JPQYaJBZwD5mnBLMjisCTEjj2u6u_boE,8228
|
|
138
|
+
rock_physics_open/ternary_plots/ternary_patches.py,sha256=oYaIkCbzC4L19VWBz5iphVdQnpHX9kdy0p2NK65aIIM,7256
|
|
139
|
+
rock_physics_open/ternary_plots/ternary_plot_utilities.py,sha256=7CM4BuxwUjfPAGLDROBLFs1oiZ48xIZYIrgG46jlM-c,5678
|
|
140
|
+
rock_physics_open/ternary_plots/unconventionals_ternary.py,sha256=KWjcBrjI8Tgr2FYpz1ey-DPuhUeSC7b5mpN8OzwNa4I,1823
|
|
141
|
+
rock_physics_open-0.3.2.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
|
|
142
|
+
rock_physics_open-0.3.2.dist-info/METADATA,sha256=K6Bwrq-RgH1S_5uYz-13YrEXnXEngnA-PzoYkJ_IaZ4,3901
|
|
143
|
+
rock_physics_open-0.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
144
|
+
rock_physics_open-0.3.2.dist-info/top_level.txt,sha256=zFBbfbv2pshFJvcvcLLigDmlJjjg08iDdb6ABgncaP8,18
|
|
145
|
+
rock_physics_open-0.3.2.dist-info/RECORD,,
|