rock-physics-open 0.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rock_physics_open/__init__.py +0 -0
- rock_physics_open/equinor_utilities/__init__.py +0 -0
- rock_physics_open/equinor_utilities/anisotropy.py +211 -0
- rock_physics_open/equinor_utilities/classification_functions/__init__.py +17 -0
- rock_physics_open/equinor_utilities/classification_functions/class_stats.py +68 -0
- rock_physics_open/equinor_utilities/classification_functions/lin_class.py +53 -0
- rock_physics_open/equinor_utilities/classification_functions/mahal_class.py +63 -0
- rock_physics_open/equinor_utilities/classification_functions/norm_class.py +73 -0
- rock_physics_open/equinor_utilities/classification_functions/poly_class.py +45 -0
- rock_physics_open/equinor_utilities/classification_functions/post_prob.py +27 -0
- rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py +60 -0
- rock_physics_open/equinor_utilities/conversions.py +10 -0
- rock_physics_open/equinor_utilities/gen_utilities/__init__.py +11 -0
- rock_physics_open/equinor_utilities/gen_utilities/dict_to_float.py +38 -0
- rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py +113 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_input.py +131 -0
- rock_physics_open/equinor_utilities/gen_utilities/filter_output.py +88 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py +15 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/base_pressure_model.py +170 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py +53 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py +137 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py +77 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/polynomial_model.py +132 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py +209 -0
- rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py +241 -0
- rock_physics_open/equinor_utilities/optimisation_utilities/__init__.py +19 -0
- rock_physics_open/equinor_utilities/optimisation_utilities/opt_subst_utilities.py +455 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py +10 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py +184 -0
- rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py +97 -0
- rock_physics_open/equinor_utilities/std_functions/__init__.py +43 -0
- rock_physics_open/equinor_utilities/std_functions/backus_ave.py +68 -0
- rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py +77 -0
- rock_physics_open/equinor_utilities/std_functions/gassmann.py +165 -0
- rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py +224 -0
- rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py +51 -0
- rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py +67 -0
- rock_physics_open/equinor_utilities/std_functions/reflection_eq.py +120 -0
- rock_physics_open/equinor_utilities/std_functions/rho.py +69 -0
- rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py +149 -0
- rock_physics_open/equinor_utilities/std_functions/walton.py +45 -0
- rock_physics_open/equinor_utilities/std_functions/wood_brie.py +94 -0
- rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif +0 -0
- rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico +0 -0
- rock_physics_open/equinor_utilities/various_utilities/__init__.py +24 -0
- rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py +90 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py +56 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py +56 -0
- rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py +64 -0
- rock_physics_open/equinor_utilities/various_utilities/hs_average.py +59 -0
- rock_physics_open/equinor_utilities/various_utilities/pressure.py +96 -0
- rock_physics_open/equinor_utilities/various_utilities/reflectivity.py +101 -0
- rock_physics_open/equinor_utilities/various_utilities/timeshift.py +104 -0
- rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py +170 -0
- rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py +83 -0
- rock_physics_open/fluid_models/__init__.py +9 -0
- rock_physics_open/fluid_models/brine_model/__init__.py +5 -0
- rock_physics_open/fluid_models/brine_model/brine_properties.py +178 -0
- rock_physics_open/fluid_models/gas_model/__init__.py +5 -0
- rock_physics_open/fluid_models/gas_model/gas_properties.py +319 -0
- rock_physics_open/fluid_models/oil_model/__init__.py +5 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_density.py +65 -0
- rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py +30 -0
- rock_physics_open/fluid_models/oil_model/live_oil_density.py +82 -0
- rock_physics_open/fluid_models/oil_model/live_oil_velocity.py +24 -0
- rock_physics_open/fluid_models/oil_model/oil_bubble_point.py +69 -0
- rock_physics_open/fluid_models/oil_model/oil_properties.py +146 -0
- rock_physics_open/sandstone_models/__init__.py +59 -0
- rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py +304 -0
- rock_physics_open/sandstone_models/constant_cement_models.py +204 -0
- rock_physics_open/sandstone_models/constant_cement_optimisation.py +125 -0
- rock_physics_open/sandstone_models/contact_cement_model.py +138 -0
- rock_physics_open/sandstone_models/curvefit_sandstone_models.py +143 -0
- rock_physics_open/sandstone_models/friable_models.py +177 -0
- rock_physics_open/sandstone_models/friable_optimisation.py +115 -0
- rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py +235 -0
- rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py +477 -0
- rock_physics_open/sandstone_models/patchy_cement_model.py +384 -0
- rock_physics_open/sandstone_models/patchy_cement_optimisation.py +254 -0
- rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py +134 -0
- rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py +126 -0
- rock_physics_open/shale_models/__init__.py +19 -0
- rock_physics_open/shale_models/dem.py +174 -0
- rock_physics_open/shale_models/dem_dual_por.py +61 -0
- rock_physics_open/shale_models/kus_tok.py +59 -0
- rock_physics_open/shale_models/multi_sca.py +133 -0
- rock_physics_open/shale_models/pq.py +102 -0
- rock_physics_open/shale_models/sca.py +90 -0
- rock_physics_open/shale_models/shale4_mineral.py +147 -0
- rock_physics_open/shale_models/shale4_mineral_dem_overlay.py +92 -0
- rock_physics_open/span_wagner/__init__.py +5 -0
- rock_physics_open/span_wagner/co2_properties.py +444 -0
- rock_physics_open/span_wagner/coefficients.py +165 -0
- rock_physics_open/span_wagner/equations.py +104 -0
- rock_physics_open/span_wagner/tables/__init__.py +0 -0
- rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz +0 -0
- rock_physics_open/span_wagner/tables/lookup_table.py +33 -0
- rock_physics_open/t_matrix_models/Equinor_logo.ico +0 -0
- rock_physics_open/t_matrix_models/__init__.py +35 -0
- rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py +124 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py +123 -0
- rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py +86 -0
- rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py +297 -0
- rock_physics_open/t_matrix_models/run_t_matrix.py +243 -0
- rock_physics_open/t_matrix_models/t_matrix_C.py +210 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py +137 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py +167 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py +76 -0
- rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py +89 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py +176 -0
- rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py +162 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py +12 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py +75 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py +163 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py +95 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py +40 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py +116 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py +18 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py +140 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py +71 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py +42 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py +43 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py +33 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py +50 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py +43 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py +140 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py +60 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py +55 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py +44 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py +278 -0
- rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py +81 -0
- rock_physics_open/t_matrix_models/tmatrix_python.dll +0 -0
- rock_physics_open/t_matrix_models/tmatrix_python.so +0 -0
- rock_physics_open/ternary_plots/__init__.py +3 -0
- rock_physics_open/ternary_plots/gen_ternary_plot.py +73 -0
- rock_physics_open/ternary_plots/shale_prop_ternary.py +337 -0
- rock_physics_open/ternary_plots/ternary_patches.py +277 -0
- rock_physics_open/ternary_plots/ternary_plot_utilities.py +197 -0
- rock_physics_open/ternary_plots/unconventionals_ternary.py +75 -0
- rock_physics_open/version.py +34 -0
- rock_physics_open-0.3.2.dist-info/METADATA +90 -0
- rock_physics_open-0.3.2.dist-info/RECORD +145 -0
- rock_physics_open-0.3.2.dist-info/WHEEL +5 -0
- rock_physics_open-0.3.2.dist-info/licenses/LICENSE +165 -0
- rock_physics_open-0.3.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import pickle
|
|
2
|
+
from typing import Any, Self, final
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
from typing_extensions import override
|
|
6
|
+
|
|
7
|
+
from .base_pressure_model import BasePressureModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@final
|
|
11
|
+
class SigmoidalPressureModel(BasePressureModel):
|
|
12
|
+
"""
|
|
13
|
+
Sigmoidal pressure sensitivity model for velocity prediction.
|
|
14
|
+
|
|
15
|
+
Uses nested sigmoid functions: velocity amplitude varies with porosity,
|
|
16
|
+
and velocity varies sigmoidally with effective pressure using the amplitude.
|
|
17
|
+
|
|
18
|
+
Input format (n,3): [porosity, p_eff_in_situ, p_eff_depleted]
|
|
19
|
+
|
|
20
|
+
The model applies two sigmoid transformations:
|
|
21
|
+
1. Porosity -> velocity amplitude using phi_model parameters
|
|
22
|
+
2. Effective pressure -> velocity using p_eff_model parameters and amplitude
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
phi_amplitude: float,
|
|
28
|
+
phi_median_point: float,
|
|
29
|
+
phi_x_scaling: float,
|
|
30
|
+
phi_bias: float,
|
|
31
|
+
p_eff_median_point: float,
|
|
32
|
+
p_eff_x_scaling: float,
|
|
33
|
+
p_eff_bias: float,
|
|
34
|
+
model_max_pressure: float | None = None,
|
|
35
|
+
description: str = "",
|
|
36
|
+
):
|
|
37
|
+
"""
|
|
38
|
+
Initialize sigmoidal pressure model.
|
|
39
|
+
|
|
40
|
+
Parameters
|
|
41
|
+
----------
|
|
42
|
+
phi_amplitude : float
|
|
43
|
+
Amplitude parameter for porosity sigmoid [m/s].
|
|
44
|
+
phi_median_point : float
|
|
45
|
+
Median point for porosity sigmoid [fraction].
|
|
46
|
+
phi_x_scaling : float
|
|
47
|
+
X-scaling parameter for porosity sigmoid [unitless].
|
|
48
|
+
phi_bias : float
|
|
49
|
+
Bias parameter for porosity sigmoid [m/s].
|
|
50
|
+
p_eff_median_point : float
|
|
51
|
+
Median point for pressure sigmoid [Pa].
|
|
52
|
+
p_eff_x_scaling : float
|
|
53
|
+
X-scaling parameter for pressure sigmoid [1/Pa].
|
|
54
|
+
p_eff_bias : float
|
|
55
|
+
Bias parameter for pressure sigmoid [m/s].
|
|
56
|
+
model_max_pressure : float | None
|
|
57
|
+
Maximum pressure for predict_max method [Pa].
|
|
58
|
+
description : str
|
|
59
|
+
Model description.
|
|
60
|
+
"""
|
|
61
|
+
super().__init__(model_max_pressure, description)
|
|
62
|
+
# Porosity model parameters
|
|
63
|
+
self._phi_amplitude = phi_amplitude
|
|
64
|
+
self._phi_median_point = phi_median_point
|
|
65
|
+
self._phi_x_scaling = phi_x_scaling
|
|
66
|
+
self._phi_bias = phi_bias
|
|
67
|
+
# Pressure model parameters
|
|
68
|
+
self._p_eff_median_point = p_eff_median_point
|
|
69
|
+
self._p_eff_x_scaling = p_eff_x_scaling
|
|
70
|
+
self._p_eff_bias = p_eff_bias
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def phi_amplitude(self) -> float:
|
|
74
|
+
"""Porosity sigmoid amplitude."""
|
|
75
|
+
return self._phi_amplitude
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def phi_median_point(self) -> float:
|
|
79
|
+
"""Porosity sigmoid median point."""
|
|
80
|
+
return self._phi_median_point
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def phi_x_scaling(self) -> float:
|
|
84
|
+
"""Porosity sigmoid x-scaling."""
|
|
85
|
+
return self._phi_x_scaling
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def phi_bias(self) -> float:
|
|
89
|
+
"""Porosity sigmoid bias."""
|
|
90
|
+
return self._phi_bias
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def p_eff_median_point(self) -> float:
|
|
94
|
+
"""Pressure sigmoid median point."""
|
|
95
|
+
return self._p_eff_median_point
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def p_eff_x_scaling(self) -> float:
|
|
99
|
+
"""Pressure sigmoid x-scaling."""
|
|
100
|
+
return self._p_eff_x_scaling
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def p_eff_bias(self) -> float:
|
|
104
|
+
"""Pressure sigmoid bias."""
|
|
105
|
+
return self._p_eff_bias
|
|
106
|
+
|
|
107
|
+
@override
|
|
108
|
+
def validate_input(self, inp_arr: np.ndarray) -> np.ndarray:
|
|
109
|
+
"""
|
|
110
|
+
Validate input for sigmoidal model.
|
|
111
|
+
|
|
112
|
+
Parameters
|
|
113
|
+
----------
|
|
114
|
+
inp_arr : np.ndarray
|
|
115
|
+
Input array to validate.
|
|
116
|
+
|
|
117
|
+
Returns
|
|
118
|
+
-------
|
|
119
|
+
np.ndarray
|
|
120
|
+
Validated input array.
|
|
121
|
+
|
|
122
|
+
Raises
|
|
123
|
+
------
|
|
124
|
+
ValueError
|
|
125
|
+
If input format is invalid.
|
|
126
|
+
"""
|
|
127
|
+
if not isinstance(inp_arr, np.ndarray): # pyright: ignore[reportUnnecessaryIsInstance] | Kept for backward compatibility
|
|
128
|
+
raise ValueError("Input must be numpy ndarray.") # pyright: ignore[reportUnreachable] | Kept for backward compatibility
|
|
129
|
+
if inp_arr.ndim != 2 or inp_arr.shape[1] != 3:
|
|
130
|
+
raise ValueError(
|
|
131
|
+
"Input must be (n,3): [porosity, p_eff_in_situ, p_eff_depleted]"
|
|
132
|
+
)
|
|
133
|
+
return inp_arr
|
|
134
|
+
|
|
135
|
+
def _sigmoid_phi(self, phi: np.ndarray) -> np.ndarray:
|
|
136
|
+
"""
|
|
137
|
+
Calculate velocity amplitude from porosity using sigmoid function.
|
|
138
|
+
|
|
139
|
+
Parameters
|
|
140
|
+
----------
|
|
141
|
+
phi : np.ndarray
|
|
142
|
+
Porosity values [fraction].
|
|
143
|
+
|
|
144
|
+
Returns
|
|
145
|
+
-------
|
|
146
|
+
np.ndarray
|
|
147
|
+
Velocity amplitude values [m/s].
|
|
148
|
+
"""
|
|
149
|
+
return (
|
|
150
|
+
self._phi_amplitude
|
|
151
|
+
/ (1 + np.exp(-self._phi_x_scaling * (phi - self._phi_median_point)))
|
|
152
|
+
+ self._phi_bias
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
def _sigmoid_p_eff(self, p_eff: np.ndarray, amplitude: np.ndarray) -> np.ndarray:
|
|
156
|
+
"""
|
|
157
|
+
Calculate velocity from effective pressure using sigmoid function with amplitude.
|
|
158
|
+
|
|
159
|
+
Parameters
|
|
160
|
+
----------
|
|
161
|
+
p_eff : np.ndarray
|
|
162
|
+
Effective pressure values [Pa].
|
|
163
|
+
amplitude : np.ndarray
|
|
164
|
+
Velocity amplitude values [m/s].
|
|
165
|
+
|
|
166
|
+
Returns
|
|
167
|
+
-------
|
|
168
|
+
np.ndarray
|
|
169
|
+
Velocity values [m/s].
|
|
170
|
+
"""
|
|
171
|
+
return (
|
|
172
|
+
amplitude
|
|
173
|
+
/ (1 + np.exp(-self._p_eff_x_scaling * (p_eff - self._p_eff_median_point)))
|
|
174
|
+
+ self._p_eff_bias
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
@override
|
|
178
|
+
def predict_abs(self, inp_arr: np.ndarray, case: str = "in_situ") -> np.ndarray:
|
|
179
|
+
"""
|
|
180
|
+
Calculate absolute velocity for specified pressure case.
|
|
181
|
+
|
|
182
|
+
Parameters
|
|
183
|
+
----------
|
|
184
|
+
inp_arr : np.ndarray
|
|
185
|
+
Validated input array (n,3).
|
|
186
|
+
case : str
|
|
187
|
+
Pressure case: "in_situ" or "depleted".
|
|
188
|
+
|
|
189
|
+
Returns
|
|
190
|
+
-------
|
|
191
|
+
np.ndarray
|
|
192
|
+
Velocity values [m/s].
|
|
193
|
+
"""
|
|
194
|
+
arr = self.validate_input(inp_arr)
|
|
195
|
+
|
|
196
|
+
phi = arr[:, 0]
|
|
197
|
+
p_in_situ = arr[:, 1]
|
|
198
|
+
p_depleted = arr[:, 2]
|
|
199
|
+
|
|
200
|
+
# Calculate velocity amplitude from porosity
|
|
201
|
+
velocity_amplitude = self._sigmoid_phi(phi)
|
|
202
|
+
|
|
203
|
+
# Select pressure based on case
|
|
204
|
+
p_eff = p_in_situ if case == "in_situ" else p_depleted
|
|
205
|
+
|
|
206
|
+
# Calculate velocity from effective pressure and amplitude
|
|
207
|
+
return self._sigmoid_p_eff(p_eff, velocity_amplitude)
|
|
208
|
+
|
|
209
|
+
@override
|
|
210
|
+
def todict(self) -> dict[str, Any]:
|
|
211
|
+
"""Convert model to dictionary."""
|
|
212
|
+
return {
|
|
213
|
+
"phi_amplitude": self._phi_amplitude,
|
|
214
|
+
"phi_median_point": self._phi_median_point,
|
|
215
|
+
"phi_x_scaling": self._phi_x_scaling,
|
|
216
|
+
"phi_bias": self._phi_bias,
|
|
217
|
+
"p_eff_median_point": self._p_eff_median_point,
|
|
218
|
+
"p_eff_x_scaling": self._p_eff_x_scaling,
|
|
219
|
+
"p_eff_bias": self._p_eff_bias,
|
|
220
|
+
"model_max_pressure": self._model_max_pressure,
|
|
221
|
+
"description": self._description,
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@override
|
|
225
|
+
@classmethod
|
|
226
|
+
def load(cls, file: str | bytes) -> Self:
|
|
227
|
+
"""Load sigmoidal model from pickle file."""
|
|
228
|
+
with open(file, "rb") as f_in:
|
|
229
|
+
d = pickle.load(f_in)
|
|
230
|
+
|
|
231
|
+
return cls(
|
|
232
|
+
phi_amplitude=d["phi_amplitude"],
|
|
233
|
+
phi_median_point=d["phi_median_point"],
|
|
234
|
+
phi_x_scaling=d["phi_x_scaling"],
|
|
235
|
+
phi_bias=d["phi_bias"],
|
|
236
|
+
p_eff_median_point=d["p_eff_median_point"],
|
|
237
|
+
p_eff_x_scaling=d["p_eff_x_scaling"],
|
|
238
|
+
p_eff_bias=d["p_eff_bias"],
|
|
239
|
+
model_max_pressure=d["model_max_pressure"],
|
|
240
|
+
description=d["description"],
|
|
241
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from .opt_subst_utilities import (
|
|
2
|
+
gen_mod_routine,
|
|
3
|
+
gen_opt_routine,
|
|
4
|
+
gen_sub_routine,
|
|
5
|
+
load_opt_params,
|
|
6
|
+
opt_param_info,
|
|
7
|
+
opt_param_to_ascii,
|
|
8
|
+
save_opt_params,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"gen_mod_routine",
|
|
13
|
+
"gen_sub_routine",
|
|
14
|
+
"gen_opt_routine",
|
|
15
|
+
"opt_param_to_ascii",
|
|
16
|
+
"opt_param_info",
|
|
17
|
+
"save_opt_params",
|
|
18
|
+
"load_opt_params",
|
|
19
|
+
]
|