rock-physics-open 0.0__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.
Potentially problematic release.
This version of rock-physics-open might be problematic. Click here for more details.
- rock_physics_open/__init__.py +0 -0
- rock_physics_open/equinor_utilities/__init__.py +0 -0
- rock_physics_open/equinor_utilities/anisotropy.py +162 -0
- rock_physics_open/equinor_utilities/classification_functions/__init__.py +17 -0
- rock_physics_open/equinor_utilities/classification_functions/class_stats.py +58 -0
- rock_physics_open/equinor_utilities/classification_functions/lin_class.py +47 -0
- rock_physics_open/equinor_utilities/classification_functions/mahal_class.py +56 -0
- rock_physics_open/equinor_utilities/classification_functions/norm_class.py +65 -0
- rock_physics_open/equinor_utilities/classification_functions/poly_class.py +40 -0
- rock_physics_open/equinor_utilities/classification_functions/post_prob.py +26 -0
- rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py +46 -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 +33 -0
- rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py +83 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_input.py +126 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_output.py +78 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py +14 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py +42 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py +119 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py +61 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py +151 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py +188 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py +10 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py +145 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py +54 -0
- rock_physics_open/equinor_utilities/std_functions/__init__.py +43 -0
- rock_physics_open/equinor_utilities/std_functions/backus_ave.py +53 -0
- rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py +69 -0
- rock_physics_open/equinor_utilities/std_functions/gassmann.py +140 -0
- rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py +195 -0
- rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py +43 -0
- rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py +51 -0
- rock_physics_open/equinor_utilities/std_functions/reflection_eq.py +98 -0
- rock_physics_open/equinor_utilities/std_functions/rho.py +59 -0
- rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py +128 -0
- rock_physics_open/equinor_utilities/std_functions/walton.py +38 -0
- rock_physics_open/equinor_utilities/std_functions/wood_brie.py +77 -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 +83 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py +37 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py +37 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py +53 -0
- rock_physics_open/equinor_utilities/various_utilities/hs_average.py +40 -0
- rock_physics_open/equinor_utilities/various_utilities/pressure.py +88 -0
- rock_physics_open/equinor_utilities/various_utilities/reflectivity.py +85 -0
- rock_physics_open/equinor_utilities/various_utilities/timeshift.py +91 -0
- rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py +154 -0
- rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py +61 -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 +143 -0
- rock_physics_open/fluid_models/gas_model/__init__.py +5 -0
- rock_physics_open/fluid_models/gas_model/gas_properties.py +277 -0
- rock_physics_open/fluid_models/oil_model/__init__.py +5 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_density.py +60 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py +28 -0
- rock_physics_open/fluid_models/oil_model/live_oil_density.py +79 -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 +114 -0
- rock_physics_open/sandstone_models/__init__.py +57 -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 +122 -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 +178 -0
- rock_physics_open/sandstone_models/friable_optimisation.py +112 -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 +286 -0
- rock_physics_open/sandstone_models/patchy_cement_optimisation.py +251 -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 +438 -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 +45 -0
- rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py +124 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py +124 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py +86 -0
- rock_physics_open/t_matrix_models/opt_subst_utilities.py +415 -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 +163 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py +72 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py +86 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py +172 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py +159 -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 +21 -0
- rock_physics_open-0.0.dist-info/METADATA +92 -0
- rock_physics_open-0.0.dist-info/RECORD +142 -0
- rock_physics_open-0.0.dist-info/WHEEL +5 -0
- rock_physics_open-0.0.dist-info/licenses/LICENSE +165 -0
- rock_physics_open-0.0.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])))
|
|
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]))
|
|
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])))
|
|
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,21 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
|
5
|
+
|
|
6
|
+
TYPE_CHECKING = False
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from typing import Tuple
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
12
|
+
else:
|
|
13
|
+
VERSION_TUPLE = object
|
|
14
|
+
|
|
15
|
+
version: str
|
|
16
|
+
__version__: str
|
|
17
|
+
__version_tuple__: VERSION_TUPLE
|
|
18
|
+
version_tuple: VERSION_TUPLE
|
|
19
|
+
|
|
20
|
+
__version__ = version = '0.0'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 0)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rock_physics_open
|
|
3
|
+
Version: 0.0
|
|
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>, Christopher Collin Løkken <chcl@equinor.com>, Sivert Utne <sutn@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
|
+
Keywords: energy,subsurface,seismic,rock physics,scientific,engineering
|
|
10
|
+
Classifier: Intended Audience :: Science/Research
|
|
11
|
+
Classifier: Topic :: Scientific/Engineering
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
14
|
+
Classifier: Topic :: Utilities
|
|
15
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Natural Language :: English
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: numpy>=1.26.4
|
|
22
|
+
Requires-Dist: pandas>=2.0.2
|
|
23
|
+
Requires-Dist: matplotlib>=3.7.1
|
|
24
|
+
Requires-Dist: scipy<2,>=1.10.1
|
|
25
|
+
Requires-Dist: scikit-learn>=1.2.2
|
|
26
|
+
Requires-Dist: sympy>=1.13.3
|
|
27
|
+
Requires-Dist: tmatrix>=1.0.0
|
|
28
|
+
Provides-Extra: tests
|
|
29
|
+
Requires-Dist: pytest>=8.3.5; extra == "tests"
|
|
30
|
+
Requires-Dist: pytest-cov>=6.1.1; extra == "tests"
|
|
31
|
+
Requires-Dist: ruff>=0.11.6; extra == "tests"
|
|
32
|
+
Requires-Dist: pre-commit>=4.2.0; extra == "tests"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
<div align="center">
|
|
36
|
+
|
|
37
|
+
# rock_physics_open
|
|
38
|
+
|
|
39
|
+
[![License: LGPL v3][license-badge]][license]
|
|
40
|
+
[![SCM Compliance][scm-compliance-badge]][scm-compliance]
|
|
41
|
+
[![on push main action status][on-push-main-action-badge]][on-push-main-action]
|
|
42
|
+
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
This repository contains Python code for rock physics modules created in Equinor by
|
|
46
|
+
Harald Flesche 2010 - ... Batzle-Wang and Span-Wagner fluid equations are implemented
|
|
47
|
+
by Eivind Jahren and Jimmy Zurcher. Some models are based on original Matlab code
|
|
48
|
+
by Tapan Mukerji at Stanford University and ported to Python by Harald Flesche.
|
|
49
|
+
|
|
50
|
+
The modules in this repository are implementations of rock physics models
|
|
51
|
+
used in quantitative seismic analysis, in addition to some utilities for handling
|
|
52
|
+
of seismic and well data. The repository started as internal Equinor plugins, and was
|
|
53
|
+
extracted as a separate repository that could be used within other internal applications
|
|
54
|
+
in 2023. In 2025 it was released under LGPL license.
|
|
55
|
+
|
|
56
|
+
The content of the library can be described as follows:
|
|
57
|
+
|
|
58
|
+
Functions with inputs and outputs consisting of numpy arrays or in some
|
|
59
|
+
cases pandas dataframes. Data frames are used in the cases where there are
|
|
60
|
+
many inputs and/or there is a need for checking the name of inputs, such
|
|
61
|
+
as when there are multiple inputs of the same type which will have
|
|
62
|
+
different purpose. It should be made clear in which cases data dataframes
|
|
63
|
+
are expected.
|
|
64
|
+
There is normally not any check on inputs, it is just the minimum
|
|
65
|
+
definition of equations and other utilities.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## Installation
|
|
69
|
+
|
|
70
|
+
This module can be installed through PyPi with:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
pip install rock_physics_open
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Alternatively, you can update the dependencies in your `pyproject.toml` file:
|
|
77
|
+
|
|
78
|
+
<!-- x-release-please-start-version -->
|
|
79
|
+
```toml
|
|
80
|
+
dependencies = [
|
|
81
|
+
"rock_physics_open == 0.1.2",
|
|
82
|
+
]
|
|
83
|
+
```
|
|
84
|
+
<!-- x-release-please-end-version -->
|
|
85
|
+
|
|
86
|
+
<!-- External Links -->
|
|
87
|
+
[scm-compliance]: https://developer.equinor.com/governance/scm-policy/
|
|
88
|
+
[scm-compliance-badge]: https://scm-compliance-api.radix.equinor.com/repos/equinor/7ace9d61-dd9d-46b6-901d-f0f008fef142/badge
|
|
89
|
+
[license]: https://www.gnu.org/licenses/lgpl-3.0
|
|
90
|
+
[license-badge]: https://img.shields.io/badge/License-LGPL_v3-blue.svg
|
|
91
|
+
[on-push-main-action]: https://github.com/equinor/rock-physics-open/actions/workflows/on-push-main.yaml
|
|
92
|
+
[on-push-main-action-badge]: https://github.com/equinor/rock-physics-open/actions/workflows/on-push-main.yaml/badge.svg
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
rock_physics_open/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
rock_physics_open/version.py,sha256=ZYWThed6jn2lKJF1yxrbl4o_HrbCA9hsBWfm36wo19Q,506
|
|
3
|
+
rock_physics_open/equinor_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
rock_physics_open/equinor_utilities/anisotropy.py,sha256=toEsuIW_gHr34gZQpam3sQTl0ap6nAq1pW5hcX9GOHI,4469
|
|
5
|
+
rock_physics_open/equinor_utilities/conversions.py,sha256=d6SGPbzYsmYBvhDqnohg1lPjAeYGOc0z_vdsuFeNlb4,194
|
|
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=3Q3LGclpARguAu2rAkjg8iYVwyKGpaI_fZtQr-sN6rE,2053
|
|
8
|
+
rock_physics_open/equinor_utilities/classification_functions/lin_class.py,sha256=zYzg3fIyi6mx4r6xVj5WGTwcW-jNi3UuU27l7aaAxdg,1570
|
|
9
|
+
rock_physics_open/equinor_utilities/classification_functions/mahal_class.py,sha256=xG0thqHWMJh26pXsMbKGQ9SeZZgC2piRePcLdZPEvz4,2081
|
|
10
|
+
rock_physics_open/equinor_utilities/classification_functions/norm_class.py,sha256=E50Pvp9ikwaa-F1ZIhh74fgZH7ZBADBKtOqX6FqLKHs,2570
|
|
11
|
+
rock_physics_open/equinor_utilities/classification_functions/poly_class.py,sha256=lwda9z0rKtoAh5PLot7IkkJ-S_0ijOdge9BZfY3-Kgs,1217
|
|
12
|
+
rock_physics_open/equinor_utilities/classification_functions/post_prob.py,sha256=tg8mTwpSr1Ionlt2bSzNl898kFL2l9kwCEfeOVOg5Ak,652
|
|
13
|
+
rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py,sha256=YB1Dx-DJ4TExoCjkOgEgyseSQCsaIDaWtqN8lSe7K4Q,1864
|
|
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=VkNsEbVHWCD3E5bzLQ7nOYGuaLt6-Vx5C7Fj6rt2ehI,936
|
|
16
|
+
rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py,sha256=p-RD_J6zgDhLTYiNaKP4vepux8115V6oEbRMxlSlMz8,2966
|
|
17
|
+
rock_physics_open/equinor_utilities/gen_utilities/filter_input.py,sha256=5xY30W3yn-oAD6TyaVRxJhZABBwJrgHTwO-mCb5DHRI,5041
|
|
18
|
+
rock_physics_open/equinor_utilities/gen_utilities/filter_output.py,sha256=xFu_HvMYT3Ob_0YgZwO2h2qsJEkK0OSHchWdE91X2I4,2672
|
|
19
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py,sha256=tFSHBceDagmKaFdAhevVMrEYBCHqsAWI0rYh-KqVsyY,424
|
|
20
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py,sha256=y2hWACUX9sk-kRH7FNTaO2-9ZNDHR-HvZzSpIz9ILxM,1479
|
|
21
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py,sha256=4yaKEkLNxRp-7M7Hvv0JthEg_JOC1XjP33var63TP4E,3671
|
|
22
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py,sha256=Ffkhvkfpp9mmbnbIZkFyv2BrOpvBDfVBkrEIxbUG3kw,2238
|
|
23
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py,sha256=L0bCEsMCvcOn6Ji9oDLztY-TaEEYvp1b7bYZQSJ_-II,4799
|
|
24
|
+
rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py,sha256=XczrkhwSF1bAO0XcYMirbj0ilLyZG6RgT7cX2owPufw,6001
|
|
25
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py,sha256=lcbI80ZH6JQS0jI-eUITFBafHVRdhQ5VwttPolHnJyI,255
|
|
26
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py,sha256=-3sPFISobumPT6cdfqIeL9cwodXFG31nmBWzm3Er5VI,5399
|
|
27
|
+
rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py,sha256=lx-UoaZ0KygSYTJKD9h7hwvgBZGduyBcZqWuQoxU7GY,1532
|
|
28
|
+
rock_physics_open/equinor_utilities/std_functions/__init__.py,sha256=MLOfMxRazS9tGOVvuLkUp-E4b6jRWOP4YCLf8si624c,1121
|
|
29
|
+
rock_physics_open/equinor_utilities/std_functions/backus_ave.py,sha256=sYaXSfqjR69U_UFaMmrD5aEbR_0FrL7ZIWGg-Yi8QNo,1607
|
|
30
|
+
rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py,sha256=TerlLcuP92ihf5vHaJES5KLyleG3CR7NWSExDI1jLIY,2138
|
|
31
|
+
rock_physics_open/equinor_utilities/std_functions/gassmann.py,sha256=sxZ_d-mJXAxC_qfYuYwmpOLVwh3jQvQLCH7ezQx02nM,3641
|
|
32
|
+
rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py,sha256=dz_-n-nObXQDStveJYWofSV1fMJQoDDPLg6sUNXOVFA,5902
|
|
33
|
+
rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py,sha256=KcDx9JRn45aaQjcx6n1GCMqiNGf_PoqGiM4QkFC68-E,1403
|
|
34
|
+
rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py,sha256=31M1qHDuuMx_iGi8POCnPmmTM07MlR7Hj3eI2Ejm2jk,1251
|
|
35
|
+
rock_physics_open/equinor_utilities/std_functions/reflection_eq.py,sha256=DA-Av9fudwomZb9cFsA8vfhjKIu_QwK50tRqgId1WM8,2544
|
|
36
|
+
rock_physics_open/equinor_utilities/std_functions/rho.py,sha256=3yzfJ4felR2DQHSGu2sLDP2-OvplEtogHbJEXb8U-lk,1406
|
|
37
|
+
rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py,sha256=M5qRiDxWndeWdXqBuV1HxwdyTifUGu_OvwfVcoNRvEI,3064
|
|
38
|
+
rock_physics_open/equinor_utilities/std_functions/walton.py,sha256=I2mQuSTu4OOO9KHQvmgRHr1AuzTYIWSby9NofYMmq9s,1250
|
|
39
|
+
rock_physics_open/equinor_utilities/std_functions/wood_brie.py,sha256=Esb19YhjNsZLAq85fjDdzBI32RLjAZcUQeV-lA1VYlY,1929
|
|
40
|
+
rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif,sha256=E9pXxAQig-6chS8Uz3rhFYcNQC4Nk0vbsja0pkZ-lEk,892
|
|
41
|
+
rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico,sha256=vXHlDI4DTCgxmm84_FB3BEMK-NORhcSR6wq01sb6QD0,19598
|
|
42
|
+
rock_physics_open/equinor_utilities/various_utilities/__init__.py,sha256=UfxgTybUY_O48gou1DaL2bJYZKTViajN556J4EOjXLs,716
|
|
43
|
+
rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py,sha256=sn06BZ3is2Yf519xMJc9vEHXq2DW5_ynWF2QKpK0Usk,3001
|
|
44
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py,sha256=5BG6ozz2P69oBVejd8ZOekdN3T5q_XMgK_FcnvBHODc,1364
|
|
45
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py,sha256=JiQRjuFfJCIY6FuGaKs5XXeCnkhqiFyBu7_wzGYGfZg,1362
|
|
46
|
+
rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py,sha256=6IqLwY6gXd7aLpbke7oDjCNqsfjLAbgRErjq7FE_sbQ,1797
|
|
47
|
+
rock_physics_open/equinor_utilities/various_utilities/hs_average.py,sha256=h6lSX66q5iWBjhPOR6qxJ0St0oYU5jYtqcrpa9OUKlk,1054
|
|
48
|
+
rock_physics_open/equinor_utilities/various_utilities/pressure.py,sha256=_FckX63cGH1Le_ogfHfXQO2v8xWn-rBFSd_lfMEicfI,3300
|
|
49
|
+
rock_physics_open/equinor_utilities/various_utilities/reflectivity.py,sha256=SoWjbUs6Xjii9OExiRDB70DiprPbfsl-sDQyI3v2GVw,3121
|
|
50
|
+
rock_physics_open/equinor_utilities/various_utilities/timeshift.py,sha256=R_n6mlFFohlGqsi5-2geA4I0xaEw1IHBXzuNlT22v-g,2340
|
|
51
|
+
rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py,sha256=zre9bchR-x_l_5f7XRArrEMtzS5aIf6vAVXV9xUTY98,5105
|
|
52
|
+
rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py,sha256=otMmJuiKWgMTNXYRmgjJMYH-6ND9-YQo9UzsuNVsP8w,1985
|
|
53
|
+
rock_physics_open/fluid_models/__init__.py,sha256=H3jeo69HuZCiuZ_meQe27NXIKTMOq2qiZ_UXKYyFmQs,201
|
|
54
|
+
rock_physics_open/fluid_models/brine_model/__init__.py,sha256=PqVXs5rI421j7xL-Z5pFfNIdC0cUameBJHLOUqEO7wo,86
|
|
55
|
+
rock_physics_open/fluid_models/brine_model/brine_properties.py,sha256=lePa0dJgjzPl7XKfU8hbR5vKjld2D_3qP8cvUZUWQyg,4912
|
|
56
|
+
rock_physics_open/fluid_models/gas_model/__init__.py,sha256=fRoVKB7uo_BTyq1TKwXblqOgJYw7k_uGqFzLQE4YT_k,80
|
|
57
|
+
rock_physics_open/fluid_models/gas_model/gas_properties.py,sha256=_aAPCSL-B5wbTLICj1V2Ub2eGXkWOQuu6YoFTV4cWmM,9303
|
|
58
|
+
rock_physics_open/fluid_models/oil_model/__init__.py,sha256=s-uuo4FIP6sxm4m01AXqjh-d8T8Cl5WkSDZvwuGWyeg,80
|
|
59
|
+
rock_physics_open/fluid_models/oil_model/dead_oil_density.py,sha256=ljVVm3VpUtyB2fseeb1sAGq167kJ8boup6Jpt1myVaU,2016
|
|
60
|
+
rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py,sha256=jA-XxbxsBzsDJphBKdjKrYAeIZeQmZoAn6Vp2OKqeCA,836
|
|
61
|
+
rock_physics_open/fluid_models/oil_model/live_oil_density.py,sha256=oURrY4YM28RoC6I513xWiWIUi6hWSNIFgdb5D01kjwE,2775
|
|
62
|
+
rock_physics_open/fluid_models/oil_model/live_oil_velocity.py,sha256=pPAZm24CPTJQYF9CK69t7UWkWI2JjGksR9XKccUPhbI,937
|
|
63
|
+
rock_physics_open/fluid_models/oil_model/oil_bubble_point.py,sha256=hWxxJtYZFK8_mVuKTYGipLmkT6DJobz6SVm53fa_rSc,2605
|
|
64
|
+
rock_physics_open/fluid_models/oil_model/oil_properties.py,sha256=6nucE7M_wUb-YEW-Wmos7OnqxDlnsuDJBhCF3EPGh_0,4117
|
|
65
|
+
rock_physics_open/sandstone_models/__init__.py,sha256=KC_b_SMFzIeTVXZy1IDFVSa0jC5sHlONJjun5R12H6A,1955
|
|
66
|
+
rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py,sha256=jXEuEOMOmiAukYlDgV3-vd2tiZWW8Dm59PaeP-XXh8Y,8516
|
|
67
|
+
rock_physics_open/sandstone_models/constant_cement_models.py,sha256=kHRcPEC114uolMZvvPxzvHJhF9wdSuuDKNS0mNFrqtI,7223
|
|
68
|
+
rock_physics_open/sandstone_models/constant_cement_optimisation.py,sha256=rl4TWYbDry1SpP8Gyj6HHUHNRFA_yOAECNXOiSffMoQ,3707
|
|
69
|
+
rock_physics_open/sandstone_models/contact_cement_model.py,sha256=EVCicRGnW13QBWuvyscFYLy8JpgANPla7ECDeZLfhdA,4488
|
|
70
|
+
rock_physics_open/sandstone_models/curvefit_sandstone_models.py,sha256=pZ7u7bVNYG254fwtyyrD1SMIFn2onHBu_XZCfVfajzI,3988
|
|
71
|
+
rock_physics_open/sandstone_models/friable_models.py,sha256=GmcdgT_yYhajIMEszZbuqeGb2JyQChi8o7NoctJc3aI,6091
|
|
72
|
+
rock_physics_open/sandstone_models/friable_optimisation.py,sha256=pozx2vFFVZiMjZyh05vMwzDkSr-whPaQfpI0e-PW0bY,3429
|
|
73
|
+
rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py,sha256=eMXRCrGdCC9VyYwjg498M0GTAMlWar18iz5gS7Rz16w,6884
|
|
74
|
+
rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py,sha256=21ujg7K-f7vykKxYwFynPenZLVZkdBAiAEwt4-K4r5I,16123
|
|
75
|
+
rock_physics_open/sandstone_models/patchy_cement_model.py,sha256=lax465nGco25rVYdAXZR7XdtDGbMGwY5a-RPXQuOFu4,8262
|
|
76
|
+
rock_physics_open/sandstone_models/patchy_cement_optimisation.py,sha256=yoTvXQvS-VCL33x_UBC5XqyDHc9xsP8UFhlAhdZ7DSI,6979
|
|
77
|
+
rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py,sha256=xFF_FrQw_3DoYADK7-3Lecr_KnurNQLsXy-22eN-92c,3901
|
|
78
|
+
rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py,sha256=HpRBIQw2POoQbJ2DlwoyJSDvKvhJQyhgmkjoGQFo1vE,3671
|
|
79
|
+
rock_physics_open/shale_models/__init__.py,sha256=od24QmnojL_caOQjG9t2dMajgmgOnBduJiGzqEN0ijE,565
|
|
80
|
+
rock_physics_open/shale_models/dem.py,sha256=GCY1FrSagqA3aOSbzXu7zi-Evs0VghEpnlTXAEQ1aYI,5089
|
|
81
|
+
rock_physics_open/shale_models/dem_dual_por.py,sha256=60qqAwQlZLWk_qJfEFq5jVpHqfq6wsogAyvHDTDJu9w,1795
|
|
82
|
+
rock_physics_open/shale_models/kus_tok.py,sha256=t65D6EoBd8T3nU_63z1_IPXaBKS0646wyPjNcKI1rQs,1853
|
|
83
|
+
rock_physics_open/shale_models/multi_sca.py,sha256=wf3B-Iwuq9rg5xrMPYCtLWWaukhAX02xEcoXfZaCQhI,4313
|
|
84
|
+
rock_physics_open/shale_models/pq.py,sha256=O_0pVjd5PuSZaHbNYSUUwVEq2ZOJSXw7fUohnRU-Jv0,2855
|
|
85
|
+
rock_physics_open/shale_models/sca.py,sha256=eSzPBFQnm6SoL8f5UACs_PSlCgXU3QgwK69pI9H_828,2647
|
|
86
|
+
rock_physics_open/shale_models/shale4_mineral.py,sha256=aJ2KIWR3EUtjDjJ-mBYQACVv6QQg_73HFW9FNwicwsc,3862
|
|
87
|
+
rock_physics_open/shale_models/shale4_mineral_dem_overlay.py,sha256=ty8yKoUVuBKeLT17gdS1BHBV1EJCQIpl-b5JG2fF4I8,2660
|
|
88
|
+
rock_physics_open/span_wagner/__init__.py,sha256=cnvKCSmO0_KkEhbbV3BoDsV-NhlGLnDpBwErI8TPKuQ,80
|
|
89
|
+
rock_physics_open/span_wagner/co2_properties.py,sha256=a2KBm86VMF4FZLcXdU7G0_cOPeGqMarat-HtpFw1_n4,16287
|
|
90
|
+
rock_physics_open/span_wagner/coefficients.py,sha256=dGSW58MWnx064LaW0RwIaSDjP1aqV_5Bs9pk9Aaz9j0,3878
|
|
91
|
+
rock_physics_open/span_wagner/equations.py,sha256=wE99XBrx70NqgxS1qdyGlKTusGihWrtdv3KlpifCz_c,3001
|
|
92
|
+
rock_physics_open/span_wagner/tables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
|
+
rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz,sha256=VO_WzWOvfSq2hR32LH49PkJ6_5XrfKRFZoLm-FjUdKc,19291158
|
|
94
|
+
rock_physics_open/span_wagner/tables/lookup_table.py,sha256=OCfyXLpQEt5HdKTcZdjd5R2PpZfFbFSP5IOXNAqFp9M,924
|
|
95
|
+
rock_physics_open/t_matrix_models/Equinor_logo.ico,sha256=vXHlDI4DTCgxmm84_FB3BEMK-NORhcSR6wq01sb6QD0,19598
|
|
96
|
+
rock_physics_open/t_matrix_models/__init__.py,sha256=XIHwl7juM3ttNcf26BEsBRO0frrStKhjcEcX1y-wJuE,1521
|
|
97
|
+
rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py,sha256=b6Cjzk6ds7J2igqGeNANJpji4l9x0-AgPABfslEj2P0,4207
|
|
98
|
+
rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py,sha256=EnDvtCzB3rktCC7WsoahOdNotqvswe-YUUjtSyW8Ebw,3733
|
|
99
|
+
rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py,sha256=U2lLaseglOJJewJUUv2tBKeEadtV4iFKJUVACe2qVJ8,2731
|
|
100
|
+
rock_physics_open/t_matrix_models/opt_subst_utilities.py,sha256=X77V2hi6PKpKwrf9ygPXeIjJxr-LkztucVXlyAjMBHU,14164
|
|
101
|
+
rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py,sha256=iK5A99kiyZJX83kTvA1bY-5TMJVDwH0_ediUQh87S9M,10039
|
|
102
|
+
rock_physics_open/t_matrix_models/run_t_matrix.py,sha256=9TbLfACuBQyVNQbk_75CT_6zgor2znA7H5qdAaV7oGw,7678
|
|
103
|
+
rock_physics_open/t_matrix_models/t_matrix_C.py,sha256=Ho2eTwkT3aCbceU5UnnQub4muWqnK2g9_FSuWPcx5vo,6819
|
|
104
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py,sha256=XEFyGAe3DUqtGbEm1Wi9_qDIT93fJlXj47JLBInlYq4,3964
|
|
105
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py,sha256=a9X-407u8B4x4mnPgniDmUWnl1wyQug7xQG6xuxdoiM,4838
|
|
106
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py,sha256=6xKf836i5VaUKkO0KIJBoO2V4rdt0gWGpEjJwcWOwts,2626
|
|
107
|
+
rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py,sha256=7NKg2BkgRLEJEvlelMEcWPsAJcvJs_XRKdxLFgRrleI,2828
|
|
108
|
+
rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py,sha256=KdsuTdwgumrlV_SsdNkcM0Mzqo9BLTUzP2UFUUSySXc,6253
|
|
109
|
+
rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py,sha256=HcyK9derALczYCuC973g_jgfd3p0-9CWn0CG_C_PolA,5727
|
|
110
|
+
rock_physics_open/t_matrix_models/tmatrix_python.dll,sha256=yx_5QtoUzfc8ISjLIgExIt9VIrgKzH8UJgJ2ry9sTiw,750592
|
|
111
|
+
rock_physics_open/t_matrix_models/tmatrix_python.so,sha256=_7jdrrZddJGdmILmKD8ds8aCsbaA7FnBXzhh6_CsTdA,154430
|
|
112
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py,sha256=f0E9SJ7F7wGu6i3CileFtShjM7DXdla_L2KD_pJ66p0,365
|
|
113
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py,sha256=BCHwrvJA6E6CQ0LJ-u4jxpZ5Hm96B2kz-ZOnQXLY9qU,2138
|
|
114
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py,sha256=v5l9ntqgqBwkZLVXS_Fg6HDcdMQfvcQG50CfhgUPabk,4740
|
|
115
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py,sha256=lFh2sOYOQF-tLozz5VC2HodiRahYIz-L1VV0_QXssus,3371
|
|
116
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py,sha256=FHJCCTNG9DZhqRfETPRvCKiY-ttp6vItFckmYj6OkZk,1082
|
|
117
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py,sha256=8qFRVujk3_Y0LlYSBUf7R7qVtE2kiVMLtVKEN9X9-3o,4142
|
|
118
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py,sha256=MGYJrhVrppUFO-0fhTHEYgjdIxAqq61itYpL8biq0jM,325
|
|
119
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py,sha256=xxmR8DMC9fwamubHgTdQlXqd9rgsCiyi1kDsr9q8w9o,4267
|
|
120
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py,sha256=GsuvMflsPPwlAz_WuicvGGungQMNZ3DSV1bIC6KdHSg,2079
|
|
121
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py,sha256=kb94sqndrEe5KGWfHjeaThmRwwYCTQwhRw56cNePsYw,1286
|
|
122
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py,sha256=JItf6WTOUE_ccJOv1_ICFLlBndRom1vKbAW6gC4YmkM,1488
|
|
123
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py,sha256=QU55boUhiK7nnrduqpDLWeVdUrqDyzaaJAyeBfdDWmo,1014
|
|
124
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py,sha256=MYNfsi1DInATPTYLR6s6YaIBZ-8lI1x6jbAIjIs1UG4,1884
|
|
125
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py,sha256=KvUhte8tlHO01N0LALviOO5rmA374xDFYT5cSSI0zvA,1130
|
|
126
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py,sha256=PqUPpJ5ut_VDNTKLpN55x7yu9WOPxJDzDquuT0xGAgQ,4676
|
|
127
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py,sha256=7FlkQTUOsaC1aYtYhhF517FFm0mXYYodG76x6oYg8QI,1124
|
|
128
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py,sha256=cXBNLc0zW5-LV37x7Mi8Y-gNJ5DDCABlZZeE9A03ku4,1630
|
|
129
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py,sha256=mhQeMbbmQrnNZ1-7o_7o9mPG3_l3360NYe4sI4Lkyaw,1197
|
|
130
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py,sha256=OqdPijkrtAnpB2-CWiw0LOWOp8ImMOtoP3T2Wus7fOQ,9500
|
|
131
|
+
rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py,sha256=8-OpTWRdMfJqHdi_agOV0n0-BkTq5TBFilLCarw7iME,2447
|
|
132
|
+
rock_physics_open/ternary_plots/__init__.py,sha256=mrmn0T4G91UPdCTEOr4HSEd1d8ZCR1KE_TGvN2g2I18,76
|
|
133
|
+
rock_physics_open/ternary_plots/gen_ternary_plot.py,sha256=uLwoeV19Tfj6Cy18NWcSoOV18DcYBJUYofb8zEYmSzM,1836
|
|
134
|
+
rock_physics_open/ternary_plots/shale_prop_ternary.py,sha256=5-NB4LoXRP7JPQYaJBZwD5mnBLMjisCTEjj2u6u_boE,8228
|
|
135
|
+
rock_physics_open/ternary_plots/ternary_patches.py,sha256=oYaIkCbzC4L19VWBz5iphVdQnpHX9kdy0p2NK65aIIM,7256
|
|
136
|
+
rock_physics_open/ternary_plots/ternary_plot_utilities.py,sha256=weFDWyzd7wgr3xB63Q-xtT-KoJA6FNIDWuTkA7jr94Q,5669
|
|
137
|
+
rock_physics_open/ternary_plots/unconventionals_ternary.py,sha256=KWjcBrjI8Tgr2FYpz1ey-DPuhUeSC7b5mpN8OzwNa4I,1823
|
|
138
|
+
rock_physics_open-0.0.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
|
|
139
|
+
rock_physics_open-0.0.dist-info/METADATA,sha256=Kt6e199FxMwhl4PEcdAgyTFqiUwuDwdLVx_gA1ggFnU,3904
|
|
140
|
+
rock_physics_open-0.0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
|
141
|
+
rock_physics_open-0.0.dist-info/top_level.txt,sha256=zFBbfbv2pshFJvcvcLLigDmlJjjg08iDdb6ABgncaP8,18
|
|
142
|
+
rock_physics_open-0.0.dist-info/RECORD,,
|