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.
Files changed (145) hide show
  1. rock_physics_open/__init__.py +0 -0
  2. rock_physics_open/equinor_utilities/__init__.py +0 -0
  3. rock_physics_open/equinor_utilities/anisotropy.py +211 -0
  4. rock_physics_open/equinor_utilities/classification_functions/__init__.py +17 -0
  5. rock_physics_open/equinor_utilities/classification_functions/class_stats.py +68 -0
  6. rock_physics_open/equinor_utilities/classification_functions/lin_class.py +53 -0
  7. rock_physics_open/equinor_utilities/classification_functions/mahal_class.py +63 -0
  8. rock_physics_open/equinor_utilities/classification_functions/norm_class.py +73 -0
  9. rock_physics_open/equinor_utilities/classification_functions/poly_class.py +45 -0
  10. rock_physics_open/equinor_utilities/classification_functions/post_prob.py +27 -0
  11. rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py +60 -0
  12. rock_physics_open/equinor_utilities/conversions.py +10 -0
  13. rock_physics_open/equinor_utilities/gen_utilities/__init__.py +11 -0
  14. rock_physics_open/equinor_utilities/gen_utilities/dict_to_float.py +38 -0
  15. rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py +113 -0
  16. rock_physics_open/equinor_utilities/gen_utilities/filter_input.py +131 -0
  17. rock_physics_open/equinor_utilities/gen_utilities/filter_output.py +88 -0
  18. rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py +15 -0
  19. rock_physics_open/equinor_utilities/machine_learning_utilities/base_pressure_model.py +170 -0
  20. rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py +53 -0
  21. rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py +137 -0
  22. rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py +77 -0
  23. rock_physics_open/equinor_utilities/machine_learning_utilities/polynomial_model.py +132 -0
  24. rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py +209 -0
  25. rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py +241 -0
  26. rock_physics_open/equinor_utilities/optimisation_utilities/__init__.py +19 -0
  27. rock_physics_open/equinor_utilities/optimisation_utilities/opt_subst_utilities.py +455 -0
  28. rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py +10 -0
  29. rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py +184 -0
  30. rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py +97 -0
  31. rock_physics_open/equinor_utilities/std_functions/__init__.py +43 -0
  32. rock_physics_open/equinor_utilities/std_functions/backus_ave.py +68 -0
  33. rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py +77 -0
  34. rock_physics_open/equinor_utilities/std_functions/gassmann.py +165 -0
  35. rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py +224 -0
  36. rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py +51 -0
  37. rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py +67 -0
  38. rock_physics_open/equinor_utilities/std_functions/reflection_eq.py +120 -0
  39. rock_physics_open/equinor_utilities/std_functions/rho.py +69 -0
  40. rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py +149 -0
  41. rock_physics_open/equinor_utilities/std_functions/walton.py +45 -0
  42. rock_physics_open/equinor_utilities/std_functions/wood_brie.py +94 -0
  43. rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif +0 -0
  44. rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico +0 -0
  45. rock_physics_open/equinor_utilities/various_utilities/__init__.py +24 -0
  46. rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py +90 -0
  47. rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py +56 -0
  48. rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py +56 -0
  49. rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py +64 -0
  50. rock_physics_open/equinor_utilities/various_utilities/hs_average.py +59 -0
  51. rock_physics_open/equinor_utilities/various_utilities/pressure.py +96 -0
  52. rock_physics_open/equinor_utilities/various_utilities/reflectivity.py +101 -0
  53. rock_physics_open/equinor_utilities/various_utilities/timeshift.py +104 -0
  54. rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py +170 -0
  55. rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py +83 -0
  56. rock_physics_open/fluid_models/__init__.py +9 -0
  57. rock_physics_open/fluid_models/brine_model/__init__.py +5 -0
  58. rock_physics_open/fluid_models/brine_model/brine_properties.py +178 -0
  59. rock_physics_open/fluid_models/gas_model/__init__.py +5 -0
  60. rock_physics_open/fluid_models/gas_model/gas_properties.py +319 -0
  61. rock_physics_open/fluid_models/oil_model/__init__.py +5 -0
  62. rock_physics_open/fluid_models/oil_model/dead_oil_density.py +65 -0
  63. rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py +30 -0
  64. rock_physics_open/fluid_models/oil_model/live_oil_density.py +82 -0
  65. rock_physics_open/fluid_models/oil_model/live_oil_velocity.py +24 -0
  66. rock_physics_open/fluid_models/oil_model/oil_bubble_point.py +69 -0
  67. rock_physics_open/fluid_models/oil_model/oil_properties.py +146 -0
  68. rock_physics_open/sandstone_models/__init__.py +59 -0
  69. rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py +304 -0
  70. rock_physics_open/sandstone_models/constant_cement_models.py +204 -0
  71. rock_physics_open/sandstone_models/constant_cement_optimisation.py +125 -0
  72. rock_physics_open/sandstone_models/contact_cement_model.py +138 -0
  73. rock_physics_open/sandstone_models/curvefit_sandstone_models.py +143 -0
  74. rock_physics_open/sandstone_models/friable_models.py +177 -0
  75. rock_physics_open/sandstone_models/friable_optimisation.py +115 -0
  76. rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py +235 -0
  77. rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py +477 -0
  78. rock_physics_open/sandstone_models/patchy_cement_model.py +384 -0
  79. rock_physics_open/sandstone_models/patchy_cement_optimisation.py +254 -0
  80. rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py +134 -0
  81. rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py +126 -0
  82. rock_physics_open/shale_models/__init__.py +19 -0
  83. rock_physics_open/shale_models/dem.py +174 -0
  84. rock_physics_open/shale_models/dem_dual_por.py +61 -0
  85. rock_physics_open/shale_models/kus_tok.py +59 -0
  86. rock_physics_open/shale_models/multi_sca.py +133 -0
  87. rock_physics_open/shale_models/pq.py +102 -0
  88. rock_physics_open/shale_models/sca.py +90 -0
  89. rock_physics_open/shale_models/shale4_mineral.py +147 -0
  90. rock_physics_open/shale_models/shale4_mineral_dem_overlay.py +92 -0
  91. rock_physics_open/span_wagner/__init__.py +5 -0
  92. rock_physics_open/span_wagner/co2_properties.py +444 -0
  93. rock_physics_open/span_wagner/coefficients.py +165 -0
  94. rock_physics_open/span_wagner/equations.py +104 -0
  95. rock_physics_open/span_wagner/tables/__init__.py +0 -0
  96. rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz +0 -0
  97. rock_physics_open/span_wagner/tables/lookup_table.py +33 -0
  98. rock_physics_open/t_matrix_models/Equinor_logo.ico +0 -0
  99. rock_physics_open/t_matrix_models/__init__.py +35 -0
  100. rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py +124 -0
  101. rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py +123 -0
  102. rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py +86 -0
  103. rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py +297 -0
  104. rock_physics_open/t_matrix_models/run_t_matrix.py +243 -0
  105. rock_physics_open/t_matrix_models/t_matrix_C.py +210 -0
  106. rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py +137 -0
  107. rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py +167 -0
  108. rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py +76 -0
  109. rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py +89 -0
  110. rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py +176 -0
  111. rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py +162 -0
  112. rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py +12 -0
  113. rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py +75 -0
  114. rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py +163 -0
  115. rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py +95 -0
  116. rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py +40 -0
  117. rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py +116 -0
  118. rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py +18 -0
  119. rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py +140 -0
  120. rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py +71 -0
  121. rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py +42 -0
  122. rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py +43 -0
  123. rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py +33 -0
  124. rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py +50 -0
  125. rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py +43 -0
  126. rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py +140 -0
  127. rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py +60 -0
  128. rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py +55 -0
  129. rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py +44 -0
  130. rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py +278 -0
  131. rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py +81 -0
  132. rock_physics_open/t_matrix_models/tmatrix_python.dll +0 -0
  133. rock_physics_open/t_matrix_models/tmatrix_python.so +0 -0
  134. rock_physics_open/ternary_plots/__init__.py +3 -0
  135. rock_physics_open/ternary_plots/gen_ternary_plot.py +73 -0
  136. rock_physics_open/ternary_plots/shale_prop_ternary.py +337 -0
  137. rock_physics_open/ternary_plots/ternary_patches.py +277 -0
  138. rock_physics_open/ternary_plots/ternary_plot_utilities.py +197 -0
  139. rock_physics_open/ternary_plots/unconventionals_ternary.py +75 -0
  140. rock_physics_open/version.py +34 -0
  141. rock_physics_open-0.3.2.dist-info/METADATA +90 -0
  142. rock_physics_open-0.3.2.dist-info/RECORD +145 -0
  143. rock_physics_open-0.3.2.dist-info/WHEEL +5 -0
  144. rock_physics_open-0.3.2.dist-info/licenses/LICENSE +165 -0
  145. 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,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+