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.

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