rock-physics-open 0.3.0__tar.gz → 0.3.1__tar.gz
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-0.3.1/.github/release-please-manifest.json +1 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/CHANGELOG.md +10 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/PKG-INFO +2 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/README.md +1 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/pyproject.toml +26 -21
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/__init__.py +0 -12
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/import_ml_models.py +0 -16
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/run_regression.py +6 -4
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/backus_ave.py +16 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/dvorkin_nur.py +10 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/gassmann.py +32 -7
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/hashin_shtrikman.py +36 -7
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/hertz_mindlin.py +9 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/moduli_velocity.py +22 -6
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/reflection_eq.py +28 -6
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/rho.py +12 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/voigt_reuss_hill.py +25 -4
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/walton.py +8 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/wood_brie.py +20 -3
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/display_result_statistics.py +16 -9
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/gassmann_dry_mod.py +21 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/gassmann_mod.py +21 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/gassmann_sub_mod.py +23 -12
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/hs_average.py +20 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/pressure.py +9 -1
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/reflectivity.py +26 -10
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/timeshift.py +15 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/vp_vs_rho_set_statistics.py +40 -24
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/vrh_3_min.py +24 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/friable_models.py +6 -7
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/patchy_cement_model.py +15 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/ternary_plot_utilities.py +3 -3
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/version.py +3 -3
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open.egg-info/PKG-INFO +2 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open.egg-info/SOURCES.txt +0 -2
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/machine_learning_utilities_test/test_pressure_models.py +3 -212
- rock_physics_open-0.3.0/.github/release-please-manifest.json +0 -1
- rock_physics_open-0.3.0/src/rock_physics_open/equinor_utilities/machine_learning_utilities/friable_pressure_models.py +0 -230
- rock_physics_open-0.3.0/src/rock_physics_open/equinor_utilities/machine_learning_utilities/patchy_cement_pressure_models.py +0 -280
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.devcontainer/devcontainer.json +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/CODEOWNERS +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/dependabot.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/release-please-config.json +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/workflows/lint-and-format.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/workflows/on-pull-request.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/workflows/on-push-main.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/workflows/release-please.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.github/workflows/test.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.gitignore +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.pre-commit-config.yaml +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/.python-version +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/CONTRIBUTING.md +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/LICENSE +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/SECURITY.md +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_10_oil_viscosity.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_12_brine_velocity.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_13_brine_density.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_14_brine_bulk_modulus.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_15_brine_viscosity.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_2_gas_density.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_3_gas_bulk_modulus.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_4_gas_viscosity.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_5_oil_density.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/images/bw_1992_fig_7_oil_bulk_modulus.png +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/scripts_and_notebooks/test_batzle_wang_figures.ipynb +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/setup.cfg +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/anisotropy.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/class_stats.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/lin_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/mahal_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/norm_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/poly_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/post_prob.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/classification_functions/two_step_classification.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/conversions.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/gen_utilities/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/gen_utilities/dict_to_float.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/gen_utilities/dim_check_vector.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/gen_utilities/filter_input.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/gen_utilities/filter_output.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/base_pressure_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/dummy_vars.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/exponential_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/polynomial_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/machine_learning_utilities/sigmoidal_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/optimisation_utilities/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/optimisation_utilities/opt_subst_utilities.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/snapshot_test_utilities/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/snapshot_test_utilities/compare_snapshots.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/snapshot_test_utilities/snapshots.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/std_functions/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.gif +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/Equinor_logo.ico +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/equinor_utilities/various_utilities/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/brine_model/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/brine_model/brine_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/gas_model/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/gas_model/gas_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/dead_oil_density.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/dead_oil_velocity.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/live_oil_density.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/live_oil_velocity.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/oil_bubble_point.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/fluid_models/oil_model/oil_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/cemented_shalysand_sandyshale_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/constant_cement_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/constant_cement_optimisation.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/contact_cement_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/curvefit_sandstone_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/friable_optimisation.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/friable_shalysand_sandyshale_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/patchy_cement_fluid_substitution_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/patchy_cement_optimisation.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/unresolved_cemented_sandshale_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/sandstone_models/unresolved_friable_sandshale_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/dem.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/dem_dual_por.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/kus_tok.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/multi_sca.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/pq.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/sca.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/shale4_mineral.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/shale_models/shale4_mineral_dem_overlay.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/co2_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/coefficients.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/equations.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/tables/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/tables/carbon_dioxide_density.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/span_wagner/tables/lookup_table.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/Equinor_logo.ico +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/carbonate_pressure_substitution.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/curvefit_t_matrix_exp.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/curvefit_t_matrix_min.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/parse_t_matrix_inputs.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/run_t_matrix.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_C.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_exp.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_opt_fluid_sub_petec.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_exp.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_opt_forward_model_min.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_exp.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_parameter_optimisation_min.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/array_functions.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_c_eff.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_isolated.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_eff.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_kd_uuv.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_pressure.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_t.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_td.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_theta.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_x.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/calc_z.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/check_and_tile.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/g_tensor.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/iso_av.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/iso_ave_all.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/pressure_input.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/t_matrix_vec.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/t_matrix_vector/velocity_vti_angles.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/tmatrix_python.dll +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/t_matrix_models/tmatrix_python.so +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/gen_ternary_plot.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/shale_prop_ternary.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/ternary_patches.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open/ternary_plots/unconventionals_ternary.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open.egg-info/dependency_links.txt +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open.egg-info/requires.txt +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/src/rock_physics_open.egg-info/top_level.txt +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_class_stats.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_lin_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_mahal_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_norm_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_poly_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/classification_functions_tests/test_two_step_class.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/conftest.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/.gitattributes +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/exp_opt_param.pkl +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/exp_opt_param_test.pkl +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/petec_opt_param.pkl +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/petec_opt_param_test.pkl +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/sandstone_optimisation.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/multi_vp_vs_rho_stats.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_brine_density.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_brine_properties.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_brine_velocity.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_water_density.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_water_properties.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_brine_properties_test_water_velocity.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_co2_properties_test_co2_properties.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_constant_cement_model_test_constant_cement_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_constant_cement_model_test_constant_cement_model_dry.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_constant_cement_model_test_constant_cement_model_high_phi.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_constant_cement_model_test_constant_cement_model_high_phi_extrapolate.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_contact_cement_model_test_contact_cement_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_dem_models_test_dem_4_min_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_dem_models_test_dem_4_min_overlay_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_dem_models_test_dem_dual_por_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_dem_models_test_dem_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_friable_models_test_friable_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_friable_models_test_friable_model_dry.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_gas_properties_test_gas_properties.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_gassmann_test_gassmann.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_gassmann_test_gassmann_dry.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_gassmann_test_gassmann_sub.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_kus_tok_model_test_kus_tok_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_multi_vp_vs_rho_stats.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_oil_properties_test_live_oil_density.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_oil_properties_test_live_oil_velocity.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_oil_properties_test_oil_prop.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_fluid_sub_model_cem_frac.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_fluid_sub_model_cem_frac_snap.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_fluid_sub_model_no_change.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_fluid_sub_model_weight.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_fluid_sub_model_weight_snap.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_model_cem_frac.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_model_exceed_phi_extrapolate.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_patchy_cement_fluid_sub_model_test_patchy_cement_model_weight.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_test_run_t_matrix.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_test_run_t_matrix_porosity_vectorised.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_with_opt_params_test_run_t_matrix_opt_forward_model_exp.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_with_opt_params_test_run_t_matrix_opt_forward_model_petec.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_with_opt_params_test_run_t_matrix_with_opt_params_exp.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_run_t_matrix_with_opt_params_test_run_t_matrix_with_opt_params_petec.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sandstone_optimisation_test_constant_cement_optimisation.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sandstone_optimisation_test_friable_optimisation.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sandstone_optimisation_test_patchy_cement_optimisation.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sandy_shale_models_test_cemented_sandy_shale_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sandy_shale_models_test_friable_sandy_shale_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sca_models_test_multi_sca_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_sca_models_test_sca_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_t_matrix_c_test_t_matrix_c.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_t_matrix_c_test_t_matrix_vectorised.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_t_matrix_optimisation_test_optimisation_part.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_t_matrix_optimisation_test_t_matrix_opt_params_exp.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_t_matrix_optimisation_test_t_matrix_opt_params_petec.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_ternary_plots_test_ternary.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_unresolved_models_test_unresolved_cemented_sand_shale_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_unresolved_models_test_unresolved_friable_sand_shale_model.npz +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/test_vp_vs_rho_stats.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/snapshots/vp_vs_rho_stats.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/test_well.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/data/tmatrix_test_data.csv +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/fluid_model_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/fluid_model_tests/test_brine_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/fluid_model_tests/test_gas_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/fluid_model_tests/test_oil_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/gen_utilities_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/gen_utilities_tests/test_dict_to_float.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/gen_utilities_tests/test_dim_check_vector.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/gen_utilities_tests/test_filter_input.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/gen_utilities_tests/test_filter_output.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/machine_learning_utilities_test/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_constant_cement_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_contact_cement_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_friable_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_patchy_cement_fluid_sub_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_sandstone_optimisation.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_sandy_shale_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/sandstone_model_tests/test_unresolved_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/shale_model_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/shale_model_tests/test_dem_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/shale_model_tests/test_kus_tok_model.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/shale_model_tests/test_sca_models.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/shale_model_tests/test_ternary_plots.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/span_wagner/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/span_wagner/test_co2_properties.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_backus_average.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_dvorkin_nur.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_gassmann.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_hashin_shtrikman.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_hertz_mindlin.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_moduli_velocity.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_reflectivity.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_rho.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_voigt_reuss_hill.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_walton.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/std_functions_tests/test_wood_brie.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/test_opt_param_to_ascii.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/test_run_t_matrix.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/test_run_t_matrix_with_opt_params.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/test_t_matrix_c.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/t_matrix_model_tests/test_t_matrix_optimisation.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/__init__.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_gassmann.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_hs_average.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_pressure.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_reflectivity.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_time_shift.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_vp_vs_rho_stats.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/tests/various_utilities_tests/test_vrh_3_min.py +0 -0
- {rock_physics_open-0.3.0 → rock_physics_open-0.3.1}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{".":"0.3.1"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.1](https://github.com/equinor/rock-physics-open/compare/v0.3.0...v0.3.1) (2025-10-28)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* Add static typing to std_functions and various_utilities ([1ed5353](https://github.com/equinor/rock-physics-open/commit/1ed5353d0886e0d7625ae1e998535bd5c78b9e31))
|
|
9
|
+
* catch cases with non-consistent input lengths ([7843c8e](https://github.com/equinor/rock-physics-open/commit/7843c8ed3e9d4144bbe7079d314af20c087d48be))
|
|
10
|
+
* make proper reference to cell in numpy array with ndim > 0 ([0abca8f](https://github.com/equinor/rock-physics-open/commit/0abca8fcb82a5d35a990857d4ecbd2f050077b08))
|
|
11
|
+
* remove redundant prototypes ([7843c8e](https://github.com/equinor/rock-physics-open/commit/7843c8ed3e9d4144bbe7079d314af20c087d48be))
|
|
12
|
+
|
|
3
13
|
## [0.3.0](https://github.com/equinor/rock-physics-open/compare/v0.2.3...v0.3.0) (2025-10-21)
|
|
4
14
|
|
|
5
15
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rock_physics_open
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Equinor Rock Physics Module
|
|
5
5
|
Author-email: Harald Flesche <hfle@equinor.com>, Eivind Jahren <ejah@equinor.com>, Jimmy Zurcher <jiz@equinor.com>
|
|
6
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>
|
|
@@ -76,7 +76,7 @@ Alternatively, you can update the dependencies in your `pyproject.toml` file:
|
|
|
76
76
|
<!-- x-release-please-start-version -->
|
|
77
77
|
```toml
|
|
78
78
|
dependencies = [
|
|
79
|
-
"rock-physics-open == 0.3.
|
|
79
|
+
"rock-physics-open == 0.3.1",
|
|
80
80
|
]
|
|
81
81
|
```
|
|
82
82
|
<!-- x-release-please-end-version -->
|
|
@@ -44,7 +44,7 @@ Alternatively, you can update the dependencies in your `pyproject.toml` file:
|
|
|
44
44
|
<!-- x-release-please-start-version -->
|
|
45
45
|
```toml
|
|
46
46
|
dependencies = [
|
|
47
|
-
"rock-physics-open == 0.3.
|
|
47
|
+
"rock-physics-open == 0.3.1",
|
|
48
48
|
]
|
|
49
49
|
```
|
|
50
50
|
<!-- x-release-please-end-version -->
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = [
|
|
3
|
-
"setuptools >= 69.5.1",
|
|
4
|
-
"setuptools_scm[toml] >= 7.1.0",
|
|
5
|
-
"wheel"
|
|
6
|
-
]
|
|
2
|
+
requires = ["setuptools >= 69.5.1", "setuptools_scm[toml] >= 7.1.0", "wheel"]
|
|
7
3
|
build-backend = "setuptools.build_meta"
|
|
8
4
|
|
|
9
5
|
[tool.setuptools_scm]
|
|
@@ -36,7 +32,14 @@ maintainers = [
|
|
|
36
32
|
]
|
|
37
33
|
readme = "README.md"
|
|
38
34
|
requires-python = ">=3.11"
|
|
39
|
-
keywords = [
|
|
35
|
+
keywords = [
|
|
36
|
+
"energy",
|
|
37
|
+
"subsurface",
|
|
38
|
+
"seismic",
|
|
39
|
+
"rock physics",
|
|
40
|
+
"scientific",
|
|
41
|
+
"engineering",
|
|
42
|
+
]
|
|
40
43
|
classifiers = [
|
|
41
44
|
"Intended Audience :: Science/Research",
|
|
42
45
|
"Topic :: Scientific/Engineering",
|
|
@@ -56,7 +59,7 @@ dependencies = [
|
|
|
56
59
|
"matplotlib >= 3.7.1",
|
|
57
60
|
"scipy >= 1.10.1, < 2",
|
|
58
61
|
"scikit-learn >= 1.2.2",
|
|
59
|
-
"sympy >= 1.13.3",
|
|
62
|
+
"sympy >= 1.13.3", # TODO: remove? (only used 1 place in span_wagner co2 equations)
|
|
60
63
|
"tmatrix >= 1.0.0",
|
|
61
64
|
]
|
|
62
65
|
|
|
@@ -80,23 +83,23 @@ dev = [
|
|
|
80
83
|
|
|
81
84
|
[tool.ruff]
|
|
82
85
|
lint.select = [
|
|
83
|
-
"C",
|
|
84
|
-
"E",
|
|
85
|
-
"F",
|
|
86
|
-
"I",
|
|
87
|
-
"NPY",
|
|
88
|
-
"PIE",
|
|
86
|
+
"C", # Complexity
|
|
87
|
+
"E", # Errors
|
|
88
|
+
"F", # Flake (unused variables etc.)
|
|
89
|
+
"I", # Imports
|
|
90
|
+
"NPY", # Numpy
|
|
91
|
+
"PIE", # Python idioms and style
|
|
89
92
|
"PLR1711", # Redundant Return
|
|
90
|
-
"PT",
|
|
91
|
-
"Q",
|
|
92
|
-
"RET",
|
|
93
|
-
"RSE",
|
|
94
|
-
"SIM",
|
|
95
|
-
"W",
|
|
93
|
+
"PT", # PyTest
|
|
94
|
+
"Q", # Quotes
|
|
95
|
+
"RET", # Return statements
|
|
96
|
+
"RSE", # Raising exceptions
|
|
97
|
+
"SIM", # Code simplification
|
|
98
|
+
"W", # Warnings
|
|
96
99
|
]
|
|
97
100
|
lint.ignore = [
|
|
98
|
-
"C901",
|
|
99
|
-
"E501",
|
|
101
|
+
"C901", # Complex Code (too many branches/statements)
|
|
102
|
+
"E501", # Line Too Long
|
|
100
103
|
]
|
|
101
104
|
line-length = 88
|
|
102
105
|
|
|
@@ -117,6 +120,8 @@ pythonVersion = "3.11"
|
|
|
117
120
|
include = [
|
|
118
121
|
# Currently only enabling on general utilities and the corresponding tests
|
|
119
122
|
"src/rock_physics_open/equinor_utilities/gen_utilities/*.py",
|
|
123
|
+
"src/rock_physics_open/equinor_utilities/various_utilities/*.py",
|
|
124
|
+
"src/rock_physics_open/equinor_utilities/std_functions/*.py",
|
|
120
125
|
"tests/gen_utilities_tests/*.py",
|
|
121
126
|
]
|
|
122
127
|
exclude = ["src/**/version.py"]
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
from .dummy_vars import generate_dummy_vars
|
|
2
2
|
from .exponential_model import ExponentialPressureModel
|
|
3
|
-
from .friable_pressure_models import (
|
|
4
|
-
FriableDryBulkModulusPressureModel,
|
|
5
|
-
FriableDryShearModulusPressureModel,
|
|
6
|
-
)
|
|
7
3
|
from .import_ml_models import import_model
|
|
8
|
-
from .patchy_cement_pressure_models import (
|
|
9
|
-
PatchyCementDryBulkModulusPressureModel,
|
|
10
|
-
PatchyCementDryShearModulusPressureModel,
|
|
11
|
-
)
|
|
12
4
|
from .polynomial_model import PolynomialPressureModel
|
|
13
5
|
from .run_regression import run_regression
|
|
14
6
|
from .sigmoidal_model import SigmoidalPressureModel
|
|
@@ -20,8 +12,4 @@ __all__ = [
|
|
|
20
12
|
"ExponentialPressureModel",
|
|
21
13
|
"PolynomialPressureModel",
|
|
22
14
|
"SigmoidalPressureModel",
|
|
23
|
-
"FriableDryBulkModulusPressureModel",
|
|
24
|
-
"FriableDryShearModulusPressureModel",
|
|
25
|
-
"PatchyCementDryShearModulusPressureModel",
|
|
26
|
-
"PatchyCementDryBulkModulusPressureModel",
|
|
27
15
|
]
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
from .exponential_model import ExponentialPressureModel
|
|
2
|
-
from .friable_pressure_models import (
|
|
3
|
-
FriableDryBulkModulusPressureModel,
|
|
4
|
-
FriableDryShearModulusPressureModel,
|
|
5
|
-
)
|
|
6
|
-
from .patchy_cement_pressure_models import (
|
|
7
|
-
PatchyCementDryBulkModulusPressureModel,
|
|
8
|
-
PatchyCementDryShearModulusPressureModel,
|
|
9
|
-
)
|
|
10
2
|
from .polynomial_model import PolynomialPressureModel
|
|
11
3
|
from .sigmoidal_model import SigmoidalPressureModel
|
|
12
4
|
|
|
@@ -47,14 +39,6 @@ def import_model(model_file_name):
|
|
|
47
39
|
models = ExponentialPressureModel.load(mod_dict["nn_mod"])
|
|
48
40
|
elif mod_dict["model_type"] == "Polynomial":
|
|
49
41
|
models = PolynomialPressureModel.load(mod_dict["nn_mod"])
|
|
50
|
-
elif mod_dict["model_type"] == "FriableDryBulk":
|
|
51
|
-
models = FriableDryBulkModulusPressureModel.load(mod_dict["nn_mod"])
|
|
52
|
-
elif mod_dict["model_type"] == "FriableDryShear":
|
|
53
|
-
models = FriableDryShearModulusPressureModel.load(mod_dict["nn_mod"])
|
|
54
|
-
elif mod_dict["model_type"] == "PatchyCementDryBulk":
|
|
55
|
-
models = PatchyCementDryBulkModulusPressureModel.load(mod_dict["nn_mod"])
|
|
56
|
-
elif mod_dict["model_type"] == "PatchyCementDryShear":
|
|
57
|
-
models = PatchyCementDryShearModulusPressureModel.load(mod_dict["nn_mod"])
|
|
58
42
|
else:
|
|
59
43
|
raise ValueError("unknown model type {}".format(mod_dict["model_type"]))
|
|
60
44
|
|
|
@@ -108,7 +108,9 @@ def _perform_regression(
|
|
|
108
108
|
return res_frame
|
|
109
109
|
|
|
110
110
|
|
|
111
|
-
def run_regression(
|
|
111
|
+
def run_regression(
|
|
112
|
+
inp_df, first_model_file_name, second_model_file_name, model_dir=None
|
|
113
|
+
):
|
|
112
114
|
"""
|
|
113
115
|
Estimate Vp and Vs by neural network regression with multiple inputs.
|
|
114
116
|
|
|
@@ -116,9 +118,9 @@ def run_regression(inp_df, vp_model_file_name, vs_model_file_name, model_dir=Non
|
|
|
116
118
|
----------
|
|
117
119
|
inp_df : pd.DataFrame
|
|
118
120
|
Input logs required for the regression.
|
|
119
|
-
|
|
121
|
+
first_model_file_name : str
|
|
120
122
|
Full file name for vp model.
|
|
121
|
-
|
|
123
|
+
second_model_file_name : str
|
|
122
124
|
Full file name for vs model.
|
|
123
125
|
model_dir : str
|
|
124
126
|
Directory.
|
|
@@ -139,7 +141,7 @@ def run_regression(inp_df, vp_model_file_name, vs_model_file_name, model_dir=Non
|
|
|
139
141
|
category_var,
|
|
140
142
|
column_names,
|
|
141
143
|
column_units,
|
|
142
|
-
) = _read_models(
|
|
144
|
+
) = _read_models(first_model_file_name, second_model_file_name, model_dir=model_dir)
|
|
143
145
|
return _perform_regression(
|
|
144
146
|
inp_df,
|
|
145
147
|
column_names,
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
import numpy.typing as npt
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
def backus_average(
|
|
5
|
+
def backus_average(
|
|
6
|
+
vp1: npt.NDArray[np.float64],
|
|
7
|
+
vs1: npt.NDArray[np.float64],
|
|
8
|
+
rho1: npt.NDArray[np.float64],
|
|
9
|
+
vp2: npt.NDArray[np.float64],
|
|
10
|
+
vs2: npt.NDArray[np.float64],
|
|
11
|
+
rho2: npt.NDArray[np.float64],
|
|
12
|
+
f1: npt.NDArray[np.float64],
|
|
13
|
+
) -> tuple[
|
|
14
|
+
npt.NDArray[np.float64],
|
|
15
|
+
npt.NDArray[np.float64],
|
|
16
|
+
npt.NDArray[np.float64],
|
|
17
|
+
npt.NDArray[np.float64],
|
|
18
|
+
npt.NDArray[np.float64],
|
|
19
|
+
]:
|
|
5
20
|
"""
|
|
6
21
|
Backus average for a combination of two phases. The individual phases are isotropic
|
|
7
22
|
but the resulting effective medium is not.
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
import numpy.typing as npt
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
def dvorkin_contact_cement(
|
|
5
|
-
frac_cem
|
|
6
|
-
|
|
6
|
+
frac_cem: npt.NDArray[np.float64],
|
|
7
|
+
por0_sst: npt.NDArray[np.float64],
|
|
8
|
+
mu0_sst: npt.NDArray[np.float64],
|
|
9
|
+
k0_sst: npt.NDArray[np.float64],
|
|
10
|
+
mu0_cem: npt.NDArray[np.float64],
|
|
11
|
+
k0_cem: npt.NDArray[np.float64],
|
|
12
|
+
vs_red: npt.NDArray[np.float64],
|
|
13
|
+
c: float,
|
|
14
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
7
15
|
"""
|
|
8
16
|
Dvorkin-Nur contact cement model for estimation of elastic moduli.
|
|
9
17
|
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import warnings
|
|
2
|
+
from typing import cast
|
|
2
3
|
|
|
3
4
|
import numpy as np
|
|
5
|
+
import numpy.typing as npt
|
|
4
6
|
|
|
5
7
|
from rock_physics_open.equinor_utilities.gen_utilities import dim_check_vector
|
|
6
8
|
|
|
7
9
|
|
|
8
|
-
def gassmann(
|
|
10
|
+
def gassmann(
|
|
11
|
+
k_dry: npt.NDArray[np.float64],
|
|
12
|
+
por: npt.NDArray[np.float64],
|
|
13
|
+
k_fl: npt.NDArray[np.float64],
|
|
14
|
+
k_min: npt.NDArray[np.float64],
|
|
15
|
+
) -> npt.NDArray[np.float64]:
|
|
9
16
|
"""
|
|
10
17
|
Fluid substitution according to the Gassmann equation.
|
|
11
18
|
|
|
@@ -25,7 +32,10 @@ def gassmann(k_dry, por, k_fl, k_min):
|
|
|
25
32
|
np.ndarray
|
|
26
33
|
k_sat: bulk modulus for saturated rock [Pa]
|
|
27
34
|
"""
|
|
28
|
-
k_dry, por, k_fl, k_min =
|
|
35
|
+
k_dry, por, k_fl, k_min = cast(
|
|
36
|
+
list[npt.NDArray[np.float64]],
|
|
37
|
+
dim_check_vector((k_dry, por, k_fl, k_min)),
|
|
38
|
+
)
|
|
29
39
|
|
|
30
40
|
idx = np.logical_or(k_dry == k_min, por == 0)
|
|
31
41
|
k_sat = np.ones(k_dry.shape) * np.nan
|
|
@@ -42,7 +52,13 @@ def gassmann(k_dry, por, k_fl, k_min):
|
|
|
42
52
|
return k_sat
|
|
43
53
|
|
|
44
54
|
|
|
45
|
-
def gassmann2(
|
|
55
|
+
def gassmann2(
|
|
56
|
+
k_sat_1: npt.NDArray[np.float64],
|
|
57
|
+
k_fl_1: npt.NDArray[np.float64],
|
|
58
|
+
k_fl_2: npt.NDArray[np.float64],
|
|
59
|
+
por: npt.NDArray[np.float64],
|
|
60
|
+
k_min: npt.NDArray[np.float64],
|
|
61
|
+
) -> npt.NDArray[np.float64]:
|
|
46
62
|
"""
|
|
47
63
|
Fluid substitution by Gassmann method with substitution of one fluid to another
|
|
48
64
|
|
|
@@ -64,8 +80,9 @@ def gassmann2(k_sat_1, k_fl_1, k_fl_2, por, k_min):
|
|
|
64
80
|
np.ndarray
|
|
65
81
|
k_sat_2: bulk modulus of rock saturated with replaced fluid [Pa]
|
|
66
82
|
"""
|
|
67
|
-
k_sat_1, k_fl_1, k_fl_2, por, k_min =
|
|
68
|
-
|
|
83
|
+
k_sat_1, k_fl_1, k_fl_2, por, k_min = cast(
|
|
84
|
+
list[npt.NDArray[np.float64]],
|
|
85
|
+
dim_check_vector((k_sat_1, k_fl_1, k_fl_2, por, k_min)),
|
|
69
86
|
)
|
|
70
87
|
|
|
71
88
|
idx = np.any(
|
|
@@ -96,7 +113,12 @@ def gassmann2(k_sat_1, k_fl_1, k_fl_2, por, k_min):
|
|
|
96
113
|
return k_sat_2
|
|
97
114
|
|
|
98
115
|
|
|
99
|
-
def gassmann_dry(
|
|
116
|
+
def gassmann_dry(
|
|
117
|
+
k_sat: npt.NDArray[np.float64],
|
|
118
|
+
por: npt.NDArray[np.float64],
|
|
119
|
+
k_fl: npt.NDArray[np.float64],
|
|
120
|
+
k_min: npt.NDArray[np.float64],
|
|
121
|
+
) -> npt.NDArray[np.float64]:
|
|
100
122
|
"""
|
|
101
123
|
Dry rock properties of saturated rock by Gassmann equation
|
|
102
124
|
|
|
@@ -116,7 +138,10 @@ def gassmann_dry(k_sat, por, k_fl, k_min):
|
|
|
116
138
|
np.ndarray
|
|
117
139
|
k_dry: dry rock bulk modulus [Pa]
|
|
118
140
|
"""
|
|
119
|
-
k_sat, por, k_fl, k_min =
|
|
141
|
+
k_sat, por, k_fl, k_min = cast(
|
|
142
|
+
list[npt.NDArray[np.float64]],
|
|
143
|
+
dim_check_vector((k_sat, por, k_fl, k_min)),
|
|
144
|
+
)
|
|
120
145
|
|
|
121
146
|
idx = np.any(np.array([k_sat == k_min, por == 0, k_fl == k_min]), axis=0)
|
|
122
147
|
k_dry = np.ones(k_sat.shape)
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
from typing import Literal, cast
|
|
2
|
+
|
|
1
3
|
import numpy as np
|
|
4
|
+
import numpy.typing as npt
|
|
2
5
|
|
|
3
6
|
from rock_physics_open.equinor_utilities.gen_utilities import dim_check_vector
|
|
4
7
|
|
|
5
8
|
|
|
6
|
-
def hashin_shtrikman(
|
|
9
|
+
def hashin_shtrikman(
|
|
10
|
+
k1: npt.NDArray[np.float64],
|
|
11
|
+
mu1: npt.NDArray[np.float64],
|
|
12
|
+
k2: npt.NDArray[np.float64],
|
|
13
|
+
mu2: npt.NDArray[np.float64],
|
|
14
|
+
f: npt.NDArray[np.float64],
|
|
15
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
7
16
|
"""
|
|
8
17
|
Hashin-Sktrikman upper or lower according to ordering of phases.
|
|
9
18
|
|
|
@@ -34,7 +43,13 @@ def hashin_shtrikman(k1, mu1, k2, mu2, f):
|
|
|
34
43
|
return k, mu
|
|
35
44
|
|
|
36
45
|
|
|
37
|
-
def hashin_shtrikman_average(
|
|
46
|
+
def hashin_shtrikman_average(
|
|
47
|
+
k1: npt.NDArray[np.float64],
|
|
48
|
+
mu1: npt.NDArray[np.float64],
|
|
49
|
+
k2: npt.NDArray[np.float64],
|
|
50
|
+
mu2: npt.NDArray[np.float64],
|
|
51
|
+
f: npt.NDArray[np.float64],
|
|
52
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
38
53
|
"""
|
|
39
54
|
Average of Hashin-Shtrikman upper and lower bound.
|
|
40
55
|
|
|
@@ -66,7 +81,14 @@ def hashin_shtrikman_average(k1, mu1, k2, mu2, f):
|
|
|
66
81
|
return k_av, mu_av
|
|
67
82
|
|
|
68
83
|
|
|
69
|
-
def hashin_shtrikman_walpole(
|
|
84
|
+
def hashin_shtrikman_walpole(
|
|
85
|
+
k1: npt.NDArray[np.float64],
|
|
86
|
+
mu1: npt.NDArray[np.float64],
|
|
87
|
+
k2: npt.NDArray[np.float64],
|
|
88
|
+
mu2: npt.NDArray[np.float64],
|
|
89
|
+
f1: npt.NDArray[np.float64],
|
|
90
|
+
bound: Literal["upper", "lower"] = "lower",
|
|
91
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
70
92
|
"""
|
|
71
93
|
Hashin-Shtrikman upper bound is obtained when the stiffest material is
|
|
72
94
|
termed 1 and vice versa for lower bound. Tricky in cases like Quartz -
|
|
@@ -94,7 +116,10 @@ def hashin_shtrikman_walpole(k1, mu1, k2, mu2, f1, bound="lower"):
|
|
|
94
116
|
k, mu : np.ndarray.
|
|
95
117
|
k: effective bulk modulus [Pa], mu: effective shear modulus [Pa].
|
|
96
118
|
"""
|
|
97
|
-
k1, mu1, k2, mu2, f1 =
|
|
119
|
+
k1, mu1, k2, mu2, f1 = cast(
|
|
120
|
+
list[npt.NDArray[np.float64]],
|
|
121
|
+
dim_check_vector((k1, mu1, k2, mu2, f1)),
|
|
122
|
+
)
|
|
98
123
|
if bound.lower() not in ["lower", "upper"]:
|
|
99
124
|
raise ValueError(f'{__file__}: bound must be one of "lower" or "upper"')
|
|
100
125
|
|
|
@@ -138,7 +163,10 @@ def hashin_shtrikman_walpole(k1, mu1, k2, mu2, f1, bound="lower"):
|
|
|
138
163
|
return k, mu
|
|
139
164
|
|
|
140
165
|
|
|
141
|
-
def multi_hashin_shtrikman(
|
|
166
|
+
def multi_hashin_shtrikman(
|
|
167
|
+
*coeffs: npt.NDArray[np.float64],
|
|
168
|
+
mode: Literal["average", "upper", "lower"] = "average",
|
|
169
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
142
170
|
"""
|
|
143
171
|
Hashin-Shtrikman effective medium calculation for multi-mineral case.
|
|
144
172
|
|
|
@@ -163,8 +191,9 @@ def multi_hashin_shtrikman(*coeffs, mode="average"):
|
|
|
163
191
|
k_arr = np.array(coeffs[::3])
|
|
164
192
|
mu_arr = np.array(coeffs[1::3])
|
|
165
193
|
f = np.array(coeffs[2::3])
|
|
166
|
-
|
|
167
|
-
|
|
194
|
+
if not np.all(
|
|
195
|
+
cast(npt.NDArray[np.float64], np.around(np.sum(f, axis=0), decimals=6)) == 1.0
|
|
196
|
+
):
|
|
168
197
|
raise ValueError("multi_hashin_shtrikman: all fractions do not add up to 1.0")
|
|
169
198
|
|
|
170
199
|
if mode.lower() not in ["average", "upper", "lower"]:
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
import numpy.typing as npt
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
def hertz_mindlin(
|
|
5
|
+
def hertz_mindlin(
|
|
6
|
+
k: npt.NDArray[np.float64],
|
|
7
|
+
mu: npt.NDArray[np.float64],
|
|
8
|
+
phi_c: npt.NDArray[np.float64],
|
|
9
|
+
p: npt.NDArray[np.float64],
|
|
10
|
+
shear_red: npt.NDArray[np.float64] | float,
|
|
11
|
+
coord: float | None = None,
|
|
12
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
5
13
|
"""
|
|
6
14
|
Hertz-Mindlin Pressure-induced moduli increase at critical porosity.
|
|
7
15
|
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
from typing import TypeVar, cast
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
import numpy.typing as npt
|
|
5
|
+
|
|
6
|
+
_T = TypeVar("_T", npt.NDArray[np.float64], float)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def moduli(
|
|
10
|
+
vp: _T,
|
|
11
|
+
vs: _T,
|
|
12
|
+
rhob: _T,
|
|
13
|
+
) -> tuple[_T, _T]:
|
|
2
14
|
"""
|
|
3
15
|
Calculate isotropic moduli from velocity and density.
|
|
4
16
|
|
|
@@ -23,7 +35,11 @@ def moduli(vp, vs, rhob):
|
|
|
23
35
|
return k, mu
|
|
24
36
|
|
|
25
37
|
|
|
26
|
-
def velocity(
|
|
38
|
+
def velocity(
|
|
39
|
+
k: _T,
|
|
40
|
+
mu: _T,
|
|
41
|
+
rhob: _T,
|
|
42
|
+
) -> tuple[_T, _T, _T, _T]:
|
|
27
43
|
"""
|
|
28
44
|
Calculate velocity, acoustic impedance and vp/vs ratio from elastic moduli and density.
|
|
29
45
|
|
|
@@ -43,9 +59,9 @@ def velocity(k, mu, rhob):
|
|
|
43
59
|
vp: pressure wave velocity [m/s], vs: shear wave velocity [m/s], ai: acoustic impedance [m/s x kg/m^3],
|
|
44
60
|
vp_vs: velocity ratio [fraction].
|
|
45
61
|
"""
|
|
46
|
-
vs = (mu / rhob) ** 0.5
|
|
47
|
-
vp = ((k + 4 / 3 * mu) / rhob) ** 0.5
|
|
48
|
-
ai = vp * rhob
|
|
49
|
-
vp_vs = vp / vs
|
|
62
|
+
vs = cast(_T, (mu / rhob) ** 0.5)
|
|
63
|
+
vp = cast(_T, ((k + 4 / 3 * mu) / rhob) ** 0.5)
|
|
64
|
+
ai = cast(_T, vp * rhob)
|
|
65
|
+
vp_vs = cast(_T, vp / vs)
|
|
50
66
|
|
|
51
67
|
return vp, vs, ai, vp_vs
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
1
3
|
import numpy as np
|
|
4
|
+
import numpy.typing as npt
|
|
2
5
|
|
|
3
6
|
|
|
4
|
-
def _refl_models(
|
|
7
|
+
def _refl_models(
|
|
8
|
+
vp: npt.NDArray[np.float64],
|
|
9
|
+
vs: npt.NDArray[np.float64],
|
|
10
|
+
rho: npt.NDArray[np.float64],
|
|
11
|
+
theta: npt.NDArray[np.float64],
|
|
12
|
+
k: npt.NDArray[np.float64] | float = 2.0,
|
|
13
|
+
mod: Literal["aki_richards", "smith_gidlow"] = "aki_richards",
|
|
14
|
+
) -> npt.NDArray[np.float64]:
|
|
5
15
|
"""Calculate reflect coeff.
|
|
6
16
|
|
|
7
17
|
Parameters
|
|
@@ -14,7 +24,7 @@ def _refl_models(vp, vs, rho, theta, k=2.0, mod="aki_richards"):
|
|
|
14
24
|
rho array.
|
|
15
25
|
theta : float, np.ndarray
|
|
16
26
|
Theta value.
|
|
17
|
-
k : float, optional
|
|
27
|
+
k : float, np.ndarray, optional
|
|
18
28
|
By default 2.0.
|
|
19
29
|
mod : str, optional
|
|
20
30
|
By default 'aki_richards'.
|
|
@@ -47,7 +57,13 @@ def _refl_models(vp, vs, rho, theta, k=2.0, mod="aki_richards"):
|
|
|
47
57
|
return reflect_coeff
|
|
48
58
|
|
|
49
59
|
|
|
50
|
-
def aki_richards(
|
|
60
|
+
def aki_richards(
|
|
61
|
+
vp: npt.NDArray[np.float64],
|
|
62
|
+
vs: npt.NDArray[np.float64],
|
|
63
|
+
rho: npt.NDArray[np.float64],
|
|
64
|
+
theta: npt.NDArray[np.float64],
|
|
65
|
+
k: npt.NDArray[np.float64] | float = 2.0,
|
|
66
|
+
) -> npt.NDArray[np.float64]:
|
|
51
67
|
"""
|
|
52
68
|
Linearised Zoeppritz equation according to Aki and Richards.
|
|
53
69
|
|
|
@@ -61,7 +77,7 @@ def aki_richards(vp, vs, rho, theta, k=2.0):
|
|
|
61
77
|
Density [kg/m^3].
|
|
62
78
|
theta : np.ndarray
|
|
63
79
|
Angle of incident ray [radians].
|
|
64
|
-
k : float
|
|
80
|
+
k : float, np.ndarray
|
|
65
81
|
Background vp/vs [unitless].
|
|
66
82
|
|
|
67
83
|
Returns
|
|
@@ -72,7 +88,13 @@ def aki_richards(vp, vs, rho, theta, k=2.0):
|
|
|
72
88
|
return _refl_models(vp, vs, rho, theta, k, mod="aki_richards")
|
|
73
89
|
|
|
74
90
|
|
|
75
|
-
def smith_gidlow(
|
|
91
|
+
def smith_gidlow(
|
|
92
|
+
vp: npt.NDArray[np.float64],
|
|
93
|
+
vs: npt.NDArray[np.float64],
|
|
94
|
+
rho: npt.NDArray[np.float64],
|
|
95
|
+
theta: npt.NDArray[np.float64],
|
|
96
|
+
k: npt.NDArray[np.float64] | float = 2.0,
|
|
97
|
+
) -> npt.NDArray[np.float64]:
|
|
76
98
|
"""
|
|
77
99
|
Linearised Zoeppritz equation according to Smith and Gidlow.
|
|
78
100
|
|
|
@@ -86,7 +108,7 @@ def smith_gidlow(vp, vs, rho, theta, k=2.0):
|
|
|
86
108
|
Density [kg/m^3].
|
|
87
109
|
theta : np.ndarray
|
|
88
110
|
Angle of incident ray [radians].
|
|
89
|
-
k : float
|
|
111
|
+
k : float, np.ndarray
|
|
90
112
|
Background vp/vs [unitless].
|
|
91
113
|
|
|
92
114
|
Returns
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
from warnings import warn
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
+
import numpy.typing as npt
|
|
4
5
|
|
|
5
6
|
|
|
6
|
-
def rho_b(
|
|
7
|
+
def rho_b(
|
|
8
|
+
phi: npt.NDArray[np.float64],
|
|
9
|
+
rho_f: npt.NDArray[np.float64],
|
|
10
|
+
rho_mat: npt.NDArray[np.float64],
|
|
11
|
+
) -> npt.NDArray[np.float64]:
|
|
7
12
|
"""
|
|
8
13
|
Calculate bulk density from porosity, fluid density and matrix density.
|
|
9
14
|
|
|
@@ -24,7 +29,12 @@ def rho_b(phi, rho_f, rho_mat):
|
|
|
24
29
|
return phi * rho_f + (1 - phi) * rho_mat
|
|
25
30
|
|
|
26
31
|
|
|
27
|
-
def rho_m(
|
|
32
|
+
def rho_m(
|
|
33
|
+
frac_cem: npt.NDArray[np.float64],
|
|
34
|
+
phi: npt.NDArray[np.float64],
|
|
35
|
+
rho_cem: npt.NDArray[np.float64],
|
|
36
|
+
rho_min: npt.NDArray[np.float64],
|
|
37
|
+
) -> npt.NDArray[np.float64]:
|
|
28
38
|
"""
|
|
29
39
|
Calculates matrix density as a combination of cement fraction and minerals
|
|
30
40
|
fracCem is defined as cement fraction relative to total volume.
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
import numpy.typing as npt
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
def voigt(
|
|
5
|
+
def voigt(
|
|
6
|
+
k1: npt.NDArray[np.float64],
|
|
7
|
+
mu1: npt.NDArray[np.float64],
|
|
8
|
+
k2: npt.NDArray[np.float64],
|
|
9
|
+
mu2: npt.NDArray[np.float64],
|
|
10
|
+
f1: npt.NDArray[np.float64],
|
|
11
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
5
12
|
"""
|
|
6
13
|
Effective media calculation of a mixture of two phases using the Voigt bound.
|
|
7
14
|
|
|
@@ -31,7 +38,13 @@ def voigt(k1, mu1, k2, mu2, f1):
|
|
|
31
38
|
return k_v, mu_v
|
|
32
39
|
|
|
33
40
|
|
|
34
|
-
def voigt_reuss_hill(
|
|
41
|
+
def voigt_reuss_hill(
|
|
42
|
+
k1: npt.NDArray[np.float64],
|
|
43
|
+
mu1: npt.NDArray[np.float64],
|
|
44
|
+
k2: npt.NDArray[np.float64],
|
|
45
|
+
mu2: npt.NDArray[np.float64],
|
|
46
|
+
f1: npt.NDArray[np.float64],
|
|
47
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
35
48
|
"""
|
|
36
49
|
Effective media calculation of a mixture of two phases using the Voigt-Reuss-Hill average.
|
|
37
50
|
|
|
@@ -63,7 +76,9 @@ def voigt_reuss_hill(k1, mu1, k2, mu2, f1):
|
|
|
63
76
|
return k_vrh, mu_vrh
|
|
64
77
|
|
|
65
78
|
|
|
66
|
-
def multi_voigt_reuss_hill(
|
|
79
|
+
def multi_voigt_reuss_hill(
|
|
80
|
+
*varargin: npt.NDArray[np.float64],
|
|
81
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
67
82
|
"""
|
|
68
83
|
Voigt-Reuss-Hill with multiple mineral input.
|
|
69
84
|
|
|
@@ -97,7 +112,13 @@ def multi_voigt_reuss_hill(*varargin):
|
|
|
97
112
|
return k, mu
|
|
98
113
|
|
|
99
114
|
|
|
100
|
-
def reuss(
|
|
115
|
+
def reuss(
|
|
116
|
+
k1: npt.NDArray[np.float64],
|
|
117
|
+
mu1: npt.NDArray[np.float64],
|
|
118
|
+
k2: npt.NDArray[np.float64],
|
|
119
|
+
mu2: npt.NDArray[np.float64],
|
|
120
|
+
f1: npt.NDArray[np.float64],
|
|
121
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
101
122
|
"""
|
|
102
123
|
Effective media calculation of a mixture of two phases using the Reuss bound.
|
|
103
124
|
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
import numpy.typing as npt
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
def walton_smooth(
|
|
5
|
+
def walton_smooth(
|
|
6
|
+
k: npt.NDArray[np.float64],
|
|
7
|
+
mu: npt.NDArray[np.float64],
|
|
8
|
+
phi: npt.NDArray[np.float64],
|
|
9
|
+
p_eff: npt.NDArray[np.float64],
|
|
10
|
+
coord: float | npt.NDArray[np.float64] | None = None,
|
|
11
|
+
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
5
12
|
"""
|
|
6
13
|
Walton Smooth Pressure-induced moduli increase at critical porosity.
|
|
7
14
|
|