fmu-pem 0.0.1__tar.gz → 0.0.3__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.
Files changed (176) hide show
  1. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/.github/workflows/build_test_deploy.yml +6 -5
  2. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/.gitignore +15 -0
  3. fmu_pem-0.0.3/.pre-commit-config.yaml +23 -0
  4. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/ERT/run_pem.ert +10 -10
  5. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/PKG-INFO +33 -28
  6. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/README.md +30 -21
  7. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/SECURITY.md +2 -2
  8. fmu_pem-0.0.3/documentation/docs/.vitepress/config.mts +59 -0
  9. fmu_pem-0.0.3/documentation/docs/difference-properties.md +28 -0
  10. fmu_pem-0.0.3/documentation/docs/effective-mineral-properties.md +48 -0
  11. fmu_pem-0.0.3/documentation/docs/effective-pressure.md +38 -0
  12. fmu_pem-0.0.3/documentation/docs/ert-configuration.md +17 -0
  13. fmu_pem-0.0.3/documentation/docs/ert.tmLanguage.json +155 -0
  14. fmu_pem-0.0.3/documentation/docs/fluid_properties.md +210 -0
  15. fmu_pem-0.0.3/documentation/docs/images/The-phase-transition-diagram-of-carbon-dioxide.png +0 -0
  16. fmu_pem-0.0.3/documentation/docs/images/brine_properties.png +0 -0
  17. fmu_pem-0.0.3/documentation/docs/images/brine_properties_complete.png +0 -0
  18. fmu_pem-0.0.3/documentation/docs/images/bulk_modulus_vs_brine_salinity.png +0 -0
  19. fmu_pem-0.0.3/documentation/docs/images/bulk_modulus_vs_quartz_fraction.png +0 -0
  20. fmu_pem-0.0.3/documentation/docs/images/co2_properties_complete.png +0 -0
  21. fmu_pem-0.0.3/documentation/docs/images/co2_properties_meshgrid.png +0 -0
  22. fmu_pem-0.0.3/documentation/docs/images/density_vs_brine_salinity.png +0 -0
  23. fmu_pem-0.0.3/documentation/docs/images/fluid_density_comparison.png +0 -0
  24. fmu_pem-0.0.3/documentation/docs/images/gas_properties_complete.png +0 -0
  25. fmu_pem-0.0.3/documentation/docs/images/isotope_analysis.png +0 -0
  26. fmu_pem-0.0.3/documentation/docs/images/oil_properties_complete.png +0 -0
  27. fmu_pem-0.0.3/documentation/docs/images/shear_modulus_vs_quartz_fraction.png +0 -0
  28. fmu_pem-0.0.3/documentation/docs/images/wood_brie.png +0 -0
  29. fmu_pem-0.0.3/documentation/docs/import-sim-results.md +90 -0
  30. fmu_pem-0.0.3/documentation/docs/index.md +27 -0
  31. fmu_pem-0.0.3/documentation/docs/mineral-properties.md +25 -0
  32. fmu_pem-0.0.3/documentation/docs/model-file-formats.md +124 -0
  33. fmu_pem-0.0.3/documentation/docs/pem-configuration.md +163 -0
  34. fmu_pem-0.0.3/documentation/docs/public/fmu_logo_dark_mode.svg +18 -0
  35. fmu_pem-0.0.3/documentation/docs/public/fmu_logo_light_mode.svg +18 -0
  36. fmu_pem-0.0.3/documentation/docs/saturated-rock.md +183 -0
  37. fmu_pem-0.0.3/documentation/docs/save-results.md +24 -0
  38. fmu_pem-0.0.3/documentation/docs/use-cases.md +40 -0
  39. fmu_pem-0.0.1/user-interface-config/src/App.tsx → fmu_pem-0.0.3/documentation/docs/yaml-edit/YamlEdit.tsx +37 -34
  40. fmu_pem-0.0.3/documentation/docs/yaml-validation.md +20 -0
  41. fmu_pem-0.0.3/documentation/package-lock.json +4861 -0
  42. fmu_pem-0.0.3/documentation/package.json +20 -0
  43. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/pyproject.toml +5 -6
  44. fmu_pem-0.0.3/scripts/brie_test.ipynb +93 -0
  45. fmu_pem-0.0.3/scripts/brine_properties.ipynb +273 -0
  46. fmu_pem-0.0.3/scripts/co2_properties.ipynb +392 -0
  47. fmu_pem-0.0.3/scripts/eff_min_props.ipynb +152 -0
  48. fmu_pem-0.0.3/scripts/gas_properties.ipynb +227 -0
  49. fmu_pem-0.0.3/scripts/oil_properties.ipynb +272 -0
  50. fmu_pem-0.0.3/src/fmu/pem/__main__.py +69 -0
  51. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/forward_models/pem_model.py +19 -27
  52. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_functions/__init__.py +2 -2
  53. fmu_pem-0.0.3/src/fmu/pem/pem_functions/density.py +49 -0
  54. fmu_pem-0.0.3/src/fmu/pem/pem_functions/effective_pressure.py +273 -0
  55. fmu_pem-0.0.3/src/fmu/pem/pem_functions/estimate_saturated_rock.py +282 -0
  56. fmu_pem-0.0.3/src/fmu/pem/pem_functions/fluid_properties.py +488 -0
  57. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_functions/mineral_properties.py +77 -74
  58. fmu_pem-0.0.3/src/fmu/pem/pem_functions/pressure_sensitivity.py +430 -0
  59. fmu_pem-0.0.3/src/fmu/pem/pem_functions/regression_models.py +293 -0
  60. fmu_pem-0.0.3/src/fmu/pem/pem_functions/run_friable_model.py +188 -0
  61. fmu_pem-0.0.3/src/fmu/pem/pem_functions/run_patchy_cement_model.py +182 -0
  62. fmu_pem-0.0.1/src/fmu/pem/pem_functions/run_t_matrix_and_pressure.py → fmu_pem-0.0.3/src/fmu/pem/pem_functions/run_t_matrix_model.py +48 -27
  63. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/__init__.py +31 -9
  64. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/cumsum_properties.py +29 -37
  65. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/delta_cumsum_time.py +8 -13
  66. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/enum_defs.py +127 -0
  67. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/export_routines.py +84 -72
  68. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/fipnum_pvtnum_utilities.py +217 -0
  69. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/import_config.py +111 -0
  70. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/import_routines.py +150 -0
  71. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/pem_class_definitions.py +171 -0
  72. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/pem_config_validation.py +730 -0
  73. fmu_pem-0.0.3/src/fmu/pem/pem_utilities/rpm_models.py +575 -0
  74. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/update_grid.py +3 -2
  75. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/pem_utilities/utils.py +90 -38
  76. fmu_pem-0.0.3/src/fmu/pem/run_pem.py +129 -0
  77. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/version.py +16 -3
  78. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu_pem.egg-info/PKG-INFO +33 -28
  79. fmu_pem-0.0.3/src/fmu_pem.egg-info/SOURCES.txt +127 -0
  80. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu_pem.egg-info/requires.txt +1 -1
  81. fmu_pem-0.0.3/tests/conftest.py +25 -0
  82. fmu_pem-0.0.3/tests/data/ert/model/run_pem_condensate.ert +13 -0
  83. fmu_pem-0.0.3/tests/data/ert/model/run_pem_no_condensate.ert +13 -0
  84. fmu_pem-0.0.3/tests/data/share/results/grids/eclipsegrid_pem.roff +0 -0
  85. fmu_pem-0.0.3/tests/data/sim2seis/input/pem/simgrid--carbfraction.roff +0 -0
  86. fmu_pem-0.0.3/tests/data/sim2seis/input/pem/simgrid--coalfraction.roff +0 -0
  87. fmu_pem-0.0.3/tests/data/sim2seis/input/pem/simgrid--vsh.roff +0 -0
  88. fmu_pem-0.0.3/tests/data/sim2seis/model/pem_config_condensate.yml +193 -0
  89. fmu_pem-0.0.3/tests/data/sim2seis/model/pem_config_condensate_multi.yml +182 -0
  90. fmu_pem-0.0.3/tests/data/sim2seis/model/pem_config_no_condensate.yml +195 -0
  91. fmu_pem-0.0.3/tests/data/sim2seis/model/vp_exp_model.pkl +0 -0
  92. fmu_pem-0.0.3/tests/data/sim2seis/model/vs_exp_model.pkl +0 -0
  93. fmu_pem-0.0.3/tests/test_config_file_validation.py +73 -0
  94. fmu_pem-0.0.3/tests/test_density.py +110 -0
  95. fmu_pem-0.0.3/tests/test_ert_hooks.py +137 -0
  96. fmu_pem-0.0.3/tests/test_ert_hooks_condensate.py +121 -0
  97. fmu_pem-0.0.3/tests/test_fipnum_and_pvtnum.py +83 -0
  98. fmu_pem-0.0.3/tests/test_fipnum_pvtnum_utilities.py +117 -0
  99. fmu_pem-0.0.3/tests/test_fluids.py +351 -0
  100. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/tests/test_friable.py +30 -27
  101. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/tests/test_patchy_cement.py +31 -25
  102. fmu_pem-0.0.3/tests/test_pem.py +45 -0
  103. fmu_pem-0.0.3/tests/test_pressure_sensitivity.py +650 -0
  104. fmu_pem-0.0.3/tests/test_regression.py +581 -0
  105. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/tests/test_t_matrix.py +54 -46
  106. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/tests/test_utils.py +22 -15
  107. fmu_pem-0.0.1/src/fmu/pem/__main__.py +0 -53
  108. fmu_pem-0.0.1/src/fmu/pem/pem_functions/density.py +0 -55
  109. fmu_pem-0.0.1/src/fmu/pem/pem_functions/effective_pressure.py +0 -168
  110. fmu_pem-0.0.1/src/fmu/pem/pem_functions/estimate_saturated_rock.py +0 -90
  111. fmu_pem-0.0.1/src/fmu/pem/pem_functions/fluid_properties.py +0 -281
  112. fmu_pem-0.0.1/src/fmu/pem/pem_functions/regression_models.py +0 -261
  113. fmu_pem-0.0.1/src/fmu/pem/pem_functions/run_friable_model.py +0 -119
  114. fmu_pem-0.0.1/src/fmu/pem/pem_functions/run_patchy_cement_model.py +0 -120
  115. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/enum_defs.py +0 -54
  116. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/import_config.py +0 -93
  117. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/import_routines.py +0 -161
  118. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/pem_class_definitions.py +0 -113
  119. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/pem_config_validation.py +0 -505
  120. fmu_pem-0.0.1/src/fmu/pem/pem_utilities/rpm_models.py +0 -177
  121. fmu_pem-0.0.1/src/fmu/pem/run_pem.py +0 -98
  122. fmu_pem-0.0.1/src/fmu_pem.egg-info/SOURCES.txt +0 -93
  123. fmu_pem-0.0.1/tests/conftest.py +0 -8
  124. fmu_pem-0.0.1/tests/data/run_pem_condensate.ert +0 -15
  125. fmu_pem-0.0.1/tests/data/run_pem_no_condensate.ert +0 -15
  126. fmu_pem-0.0.1/tests/data/simgrid--ntg_pem.roff +0 -0
  127. fmu_pem-0.0.1/tests/data/simgrid.roff +0 -0
  128. fmu_pem-0.0.1/tests/data/test_pem_config_condensate.yml +0 -122
  129. fmu_pem-0.0.1/tests/data/test_pem_config_no_condensate.yml +0 -122
  130. fmu_pem-0.0.1/tests/data/vp_exp_model.pkl +0 -0
  131. fmu_pem-0.0.1/tests/data/vs_exp_model.pkl +0 -0
  132. fmu_pem-0.0.1/tests/test_config_file_validation.py +0 -33
  133. fmu_pem-0.0.1/tests/test_dry_rock.py +0 -49
  134. fmu_pem-0.0.1/tests/test_ert_hooks.py +0 -205
  135. fmu_pem-0.0.1/tests/test_ert_hooks_condensate.py +0 -178
  136. fmu_pem-0.0.1/tests/test_pem.py +0 -25
  137. fmu_pem-0.0.1/tests/test_regression.py +0 -141
  138. fmu_pem-0.0.1/tests/yaml_files/new_pem_config.yml +0 -121
  139. fmu_pem-0.0.1/user-interface-config/.prettierrc +0 -1
  140. fmu_pem-0.0.1/user-interface-config/eslint.config.js +0 -28
  141. fmu_pem-0.0.1/user-interface-config/index.html +0 -22
  142. fmu_pem-0.0.1/user-interface-config/package-lock.json +0 -7033
  143. fmu_pem-0.0.1/user-interface-config/package.json +0 -45
  144. fmu_pem-0.0.1/user-interface-config/postcss.config.js +0 -6
  145. fmu_pem-0.0.1/user-interface-config/src/fmu-pem-schema.json +0 -20
  146. fmu_pem-0.0.1/user-interface-config/src/index.css +0 -65
  147. fmu_pem-0.0.1/user-interface-config/src/main.tsx +0 -10
  148. fmu_pem-0.0.1/user-interface-config/src/vite-env.d.ts +0 -1
  149. fmu_pem-0.0.1/user-interface-config/tailwind.config.js +0 -8
  150. fmu_pem-0.0.1/user-interface-config/tsconfig.app.json +0 -26
  151. fmu_pem-0.0.1/user-interface-config/tsconfig.json +0 -7
  152. fmu_pem-0.0.1/user-interface-config/tsconfig.node.json +0 -24
  153. fmu_pem-0.0.1/user-interface-config/vite.config.ts +0 -7
  154. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/LICENSE +0 -0
  155. {fmu_pem-0.0.1/user-interface-config/src → fmu_pem-0.0.3/documentation/docs/yaml-edit}/schema.tsx +0 -0
  156. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/setup.cfg +0 -0
  157. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/__init__.py +0 -0
  158. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/__init__.py +0 -0
  159. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/forward_models/__init__.py +0 -0
  160. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/hook_implementations/__init__.py +0 -0
  161. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu/pem/hook_implementations/jobs.py +0 -0
  162. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu_pem.egg-info/dependency_links.txt +0 -0
  163. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu_pem.egg-info/entry_points.txt +0 -0
  164. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/src/fmu_pem.egg-info/top_level.txt +0 -0
  165. {fmu_pem-0.0.1 → fmu_pem-0.0.3}/tests/__init__.py +0 -0
  166. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/fmuconfig/output}/global_variables.yml +0 -0
  167. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/fmuconfig/output}/global_variables_pred.yml +0 -0
  168. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/input/pem}/ECLIPSE.EGRID +0 -0
  169. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/input/pem}/ECLIPSE.INIT +0 -0
  170. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/input/pem}/ECLIPSE.UNRST +0 -0
  171. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/input/pem}/export_grid.roff +0 -0
  172. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/input/pem}/export_prop.roff +0 -0
  173. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/model}/carbonate_pressure_model_vp_exp.pkl +0 -0
  174. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/model}/carbonate_pressure_model_vs_exp.pkl +0 -0
  175. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/model}/t_mat_params_exp.pkl +0 -0
  176. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.3/tests/data/sim2seis/model}/t_mat_params_petec.pkl +0 -0
@@ -14,7 +14,7 @@ jobs:
14
14
  runs-on: "ubuntu-latest"
15
15
  strategy:
16
16
  matrix:
17
- python-version: ["3.11"]
17
+ python-version: ["3.11", "3.12"]
18
18
  steps:
19
19
  - uses: actions/checkout@v4
20
20
 
@@ -46,25 +46,25 @@ jobs:
46
46
  python -m build
47
47
 
48
48
  - name: Upload artifact
49
- if: github.event_name == 'release'
49
+ if: github.event_name == 'release' && matrix.python-version == '3.11'
50
50
  uses: actions/upload-artifact@v4
51
51
  with:
52
52
  name: Python dist
53
53
  path: dist/
54
54
 
55
55
  - name: Build configuration file user interface
56
- working-directory: ./user-interface-config
56
+ working-directory: ./documentation
57
57
  run: |
58
58
  npm ci
59
59
  npm run create-json-schema
60
- npm run build
60
+ npm run docs:build
61
61
 
62
62
  - name: 📚 Update GitHub pages
63
63
  # Update on merge to main
64
64
  if: github.ref_name == 'main'
65
65
  run: |
66
66
  # Move the built documentation out of working directory, in order to delete everything else afterwards
67
- cp -R ./user-interface-config/dist ../dist
67
+ cp -R ./documentation/docs/.vitepress/dist ../dist
68
68
 
69
69
  git config --local user.email "fmu-pem-github-action"
70
70
  git config --local user.name "fmu-pem-github-action"
@@ -84,6 +84,7 @@ jobs:
84
84
  git push "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" gh-pages
85
85
  fi
86
86
 
87
+
87
88
  deploy:
88
89
  name: Upload release to PyPI
89
90
  if: github.event_name == 'release'
@@ -1,4 +1,6 @@
1
1
  /.venv/
2
+ /venv/
3
+ /venv_external/
2
4
  /.vscode/
3
5
  # Local debug scripts etc
4
6
  Notebooks_and_scripts/
@@ -9,8 +11,21 @@ Notebooks/
9
11
  /dist/
10
12
  /src/fmu_pem.egg-info/
11
13
  **/__pycache__/
14
+ **/*_cache/
15
+ /.idea/
16
+ /.vscode/
12
17
  src/fmu/pem/version.py
13
18
 
14
19
  # npm and node relevant build files
15
20
  node_modules
16
21
  dist
22
+
23
+ # Documentation:
24
+ fmu-pem-schema.json
25
+ **/.vitepress/dist
26
+ **/.vitepress/cache
27
+ /ERT/storage/
28
+ /ERT/logs/
29
+ /ERT/.runpath_list
30
+ /logs/
31
+ /tests/data/sim2seis/input/pem/venv_ext/
@@ -0,0 +1,23 @@
1
+ default_stages: [pre-commit]
2
+
3
+ repos:
4
+ - repo: https://github.com/pre-commit/pre-commit-hooks
5
+ rev: v5.0.0
6
+ hooks:
7
+ - id: check-ast
8
+ language_version: python3.11
9
+ - id: debug-statements
10
+ - id: check-merge-conflict
11
+ - id: detect-private-key
12
+ - id: check-case-conflict
13
+ - id: check-toml
14
+ - id: check-json
15
+ - id: trailing-whitespace
16
+ - id: end-of-file-fixer
17
+
18
+ - repo: https://github.com/astral-sh/ruff-pre-commit
19
+ rev: v0.11.7
20
+ hooks:
21
+ - id: ruff
22
+ args: [--fix]
23
+ - id: ruff-format
@@ -7,7 +7,8 @@
7
7
 
8
8
  DEFINE <USER> $USER
9
9
  DEFINE <SCRATCH> /scratch/fmu
10
- DEFINE <CONFIG_PATH> /private/hfle/drogon_hfle/dev/rms/model
10
+ DEFINE <CONFIG_PATH> /private/hfle/drogon_hfle/dev/sim2seis/model
11
+ DEFINE <MODEL_PATH> /private/hfle/drogon_hfle/dev/sim2seis/model
11
12
 
12
13
  NUM_REALIZATIONS 1
13
14
  RUNPATH <SCRATCH>/<USER>/fmu_sim2seis_pem/realization-<IENS>/iter-<ITER>
@@ -15,11 +16,9 @@ RUNPATH <SCRATCH>/<USER>/fmu_sim2seis_pem/realization-<IENS>/iter-<ITER>
15
16
  -- Copy required input files for the PEM, directories are automatically created by COPY_FILE
16
17
  FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../fmuconfig/output/global_variables.yml, <TO>=<RUNPATH>/fmuconfig/output/global_variables.yml)
17
18
  FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../fmuconfig/output/global_variables_pred.yml, <TO>=<RUNPATH>/fmuconfig/output/global_variables_pred.yml)
18
- FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem/ECLIPSE.EGRID, <TO>=<RUNPATH>/sim2seis/input/pem/ECLIPSE.EGRID)
19
- FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem/ECLIPSE.INIT, <TO>=<RUNPATH>/sim2seis/input/pem/ECLIPSE.INIT)
20
- FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem/ECLIPSE.UNRST, <TO>=<RUNPATH>/sim2seis/input/pem/ECLIPSE.UNRST)
21
- FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem/export_grid.roff, <TO>=<RUNPATH>/sim2seis/input/pem/export_grid.roff)
22
- FORWARD_MODEL COPY_FILE(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem/export_prop.roff, <TO>=<RUNPATH>/sim2seis/input/pem/export_prop.roff)
19
+
20
+ -- Copy the input file directory, it can vary which volume fraction files that are included in the PEM run
21
+ FORWARD_MODEL COPY_DIRECTORY(<FROM>=<CONFIG_PATH>/../../sim2seis/input/pem, <TO>=<RUNPATH>/sim2seis/input)
23
22
 
24
23
  -- Copy all model files in ../../sim2seis/model for flexibility. The PEM .yml file (new_pem_config.yml) is
25
24
  -- always required, .pkl model files are required if tmatrix model is used in the PEM
@@ -30,12 +29,13 @@ FORWARD_MODEL MAKE_DIRECTORY(<DIRECTORY> = <RUNPATH>/sim2seis/output/pem)
30
29
  FORWARD_MODEL MAKE_DIRECTORY(<DIRECTORY> = <RUNPATH>/share/results/grids)
31
30
 
32
31
  -- Create start directory
33
- FORWARD_MODEL MAKE_DIRECTORY(<DIRECTORY> = <RUNPATH>/rms/model)
32
+ FORWARD_MODEL MAKE_DIRECTORY(<DIRECTORY> = <RUNPATH>/sim2seis/model)
34
33
 
35
34
  -- PEM parameter setting
36
- DEFINE <PEM_STARTDIR> <RUNPATH>/rms/model
37
- DEFINE <RELPATH_PEM> <RUNPATH>/sim2seis/model
35
+ DEFINE <PEM_CONFIGDIR> <RUNPATH>/sim2seis/model
38
36
  DEFINE <PEM_CONFIG_FILE_NAME> new_pem_config.yml
37
+ DEFINE <GLOBAL_PATH> ../../fmuconfig/output
38
+ DEFINE <GLOBAL_CONFIG_FILE> global_variables.yml
39
39
 
40
40
  -- Run the PEM
41
- FORWARD_MODEL PEM(<START_DIR>=<PEM_STARTDIR>, <CONFIG_DIR>=<RELPATH_PEM>, <CONFIG_FILE>=<PEM_CONFIG_FILE_NAME>)
41
+ FORWARD_MODEL PEM(<CONFIG_DIR>=<PEM_CONFIGDIR>, <CONFIG_FILE>=<PEM_CONFIG_FILE_NAME>, <GLOBAL_DIR>=<GLOBAL_PATH>, <GLOBAL_FILE>=<GLOBAL_CONFIG_FILE>, <MODEL_DIR>=<MODEL_PATH>)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu-pem
3
- Version: 0.0.1
3
+ Version: 0.0.3
4
4
  Summary: pem
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 3, 29 June 2007
@@ -686,12 +686,8 @@ Classifier: Topic :: Scientific/Engineering :: Physics
686
686
  Classifier: Topic :: Software Development :: Libraries
687
687
  Classifier: Topic :: Utilities
688
688
  Classifier: Operating System :: POSIX :: Linux
689
- Classifier: Programming Language :: Python :: 3.8
690
- Classifier: Programming Language :: Python :: 3.9
691
- Classifier: Programming Language :: Python :: 3.10
692
- Classifier: Programming Language :: Python :: 3.11
693
689
  Classifier: Natural Language :: English
694
- Requires-Python: >=3.8
690
+ Requires-Python: >=3.11
695
691
  Description-Content-Type: text/markdown
696
692
  License-File: LICENSE
697
693
  Requires-Dist: numpy>=1.24.3
@@ -699,7 +695,7 @@ Requires-Dist: xtgeo>=4.7.1
699
695
  Requires-Dist: fmu-tools
700
696
  Requires-Dist: fmu-config
701
697
  Requires-Dist: fmu-dataio
702
- Requires-Dist: rock-physics-open>=0.1.2
698
+ Requires-Dist: rock-physics-open>=0.3.3
703
699
  Requires-Dist: PyYAML>=6.0.1
704
700
  Requires-Dist: pydantic
705
701
  Requires-Dist: ert>=14.1.10
@@ -719,50 +715,59 @@ Requires-Dist: sphinx-togglebutton; extra == "docs"
719
715
  Requires-Dist: sphinx_rtd_theme; extra == "docs"
720
716
  Dynamic: license-file
721
717
 
722
- # How to use fmu-pem
718
+ > [!WARNING]
719
+ > `fmu-pem` is not yet qualified technology, and as of today only applicable for
720
+ selected pilot test fields.
723
721
 
724
- Petro-elastic model (PEM) for [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
725
- based on the [rock-physics-open](https://github.com/equinor/rock-physics-open)
726
- library.
722
+ **[📚 User documentation](https://equinor.github.io/fmu-pem/)**
727
723
 
728
- ## Installation
724
+ ## What is fmu-pem?
725
+
726
+ Petro-elastic model (PEM) for use in e.g. [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
727
+ based on the [rock-physics-open](https://github.com/equinor/rock-physics-open) library.
728
+
729
+ ## How to use fmu-pem?
730
+
731
+ ### Installation
729
732
 
730
733
  To install `fmu-pem`, first activate a virtual environment, then type:
731
734
 
732
- ```
735
+ ```shell
733
736
  pip install fmu-pem
734
737
  ```
735
738
 
736
739
  The PEM is controlled by parameter settings in a *yaml-file*, given as part of the
737
- command line arguments, or by the workflow parameter if it is run as an ERT forward model.
740
+ command line arguments, or by the workflow parameter if it is run as an ERT forward
741
+ model.
738
742
 
739
- ## Calibration of rock physics models
743
+ ### Calibration of rock physics models
740
744
 
741
745
  Calibration of the rock physics models is normally carried out in
742
746
  [RokDoc](https://www.ikonscience.com/rokdoc-geoprediction-software-platform/)
743
- prior to running the PEM. Fluid and mineral properties can be found in the RokDoc project, or
744
- from LFP logs, if they are available.
747
+ prior to running the PEM. Fluid and mineral properties can be found in the RokDoc
748
+ project, or from LFP logs, if they are available.
745
749
 
746
- > [!NOTE]
747
- > The fluid models contained in this module may not cover all possible cases. Gas condensate, very heavy oil,
748
- > or reservoir pressure under hydrocarbon bubble point will need additional proprietary code to run.
750
+ > [!NOTE]
751
+ > The fluid models contained in this module may not cover all possible cases. Gas
752
+ condensate, very heavy oil, > or reservoir pressure under hydrocarbon bubble point will
753
+ need additional proprietary code to run.
749
754
  >
750
755
  > Equinor users can install additional proprietary models using
756
+
751
757
  > ```bash
752
758
  > pip install "git+ssh://git@github.com/equinor/rock-physics"`
753
759
  > ```
754
760
 
755
- ## User interface
756
-
757
- Users can visit https://equinor.github.io/fmu-pem/ in order to get help configuring the `fmu-pem` input data.
758
-
759
- # How to develop fmu-pem
761
+ ## How to develop fmu-pem?
760
762
 
761
763
  Developing the user interface can be done by:
764
+
762
765
  ```bash
763
- cd ./user-interface-config
766
+ cd ./documentation
764
767
  npm ci # Install dependencies
765
768
  npm run create-json-schema # Extract JSON schema from Python code
766
- npm run dev # Start local development server
769
+ npm run docs:dev # Start local development server
767
770
  ```
768
- The JSON schema itself (type, title, description etc.) comes from the corresponding Pydantic models in the Python code.
771
+
772
+ The JSON schema itself (type, title, description etc.) comes from the corresponding
773
+ Pydantic models in the Python code.
@@ -1,47 +1,56 @@
1
- # How to use fmu-pem
1
+ > [!WARNING]
2
+ > `fmu-pem` is not yet qualified technology, and as of today only applicable for
3
+ selected pilot test fields.
2
4
 
3
- Petro-elastic model (PEM) for [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
4
- based on the [rock-physics-open](https://github.com/equinor/rock-physics-open)
5
- library.
5
+ **[📚 User documentation](https://equinor.github.io/fmu-pem/)**
6
6
 
7
- ## Installation
7
+ ## What is fmu-pem?
8
+
9
+ Petro-elastic model (PEM) for use in e.g. [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
10
+ based on the [rock-physics-open](https://github.com/equinor/rock-physics-open) library.
11
+
12
+ ## How to use fmu-pem?
13
+
14
+ ### Installation
8
15
 
9
16
  To install `fmu-pem`, first activate a virtual environment, then type:
10
17
 
11
- ```
18
+ ```shell
12
19
  pip install fmu-pem
13
20
  ```
14
21
 
15
22
  The PEM is controlled by parameter settings in a *yaml-file*, given as part of the
16
- command line arguments, or by the workflow parameter if it is run as an ERT forward model.
23
+ command line arguments, or by the workflow parameter if it is run as an ERT forward
24
+ model.
17
25
 
18
- ## Calibration of rock physics models
26
+ ### Calibration of rock physics models
19
27
 
20
28
  Calibration of the rock physics models is normally carried out in
21
29
  [RokDoc](https://www.ikonscience.com/rokdoc-geoprediction-software-platform/)
22
- prior to running the PEM. Fluid and mineral properties can be found in the RokDoc project, or
23
- from LFP logs, if they are available.
30
+ prior to running the PEM. Fluid and mineral properties can be found in the RokDoc
31
+ project, or from LFP logs, if they are available.
24
32
 
25
- > [!NOTE]
26
- > The fluid models contained in this module may not cover all possible cases. Gas condensate, very heavy oil,
27
- > or reservoir pressure under hydrocarbon bubble point will need additional proprietary code to run.
33
+ > [!NOTE]
34
+ > The fluid models contained in this module may not cover all possible cases. Gas
35
+ condensate, very heavy oil, > or reservoir pressure under hydrocarbon bubble point will
36
+ need additional proprietary code to run.
28
37
  >
29
38
  > Equinor users can install additional proprietary models using
39
+
30
40
  > ```bash
31
41
  > pip install "git+ssh://git@github.com/equinor/rock-physics"`
32
42
  > ```
33
43
 
34
- ## User interface
35
-
36
- Users can visit https://equinor.github.io/fmu-pem/ in order to get help configuring the `fmu-pem` input data.
37
-
38
- # How to develop fmu-pem
44
+ ## How to develop fmu-pem?
39
45
 
40
46
  Developing the user interface can be done by:
47
+
41
48
  ```bash
42
- cd ./user-interface-config
49
+ cd ./documentation
43
50
  npm ci # Install dependencies
44
51
  npm run create-json-schema # Extract JSON schema from Python code
45
- npm run dev # Start local development server
52
+ npm run docs:dev # Start local development server
46
53
  ```
47
- The JSON schema itself (type, title, description etc.) comes from the corresponding Pydantic models in the Python code.
54
+
55
+ The JSON schema itself (type, title, description etc.) comes from the corresponding
56
+ Pydantic models in the Python code.
@@ -2,10 +2,10 @@ If you discover a security vulnerability in this project, please follow the step
2
2
 
3
3
  ### For "non-critical" issues
4
4
 
5
- - **Alternative A:**
5
+ - **Alternative A:**
6
6
  Create a GitHub issue for the vulnerability. Avoid putting sensitive information in the issue.
7
7
 
8
- - **Alternative B:**
8
+ - **Alternative B:**
9
9
  Send an email to the projects maintainer describing the issue.
10
10
 
11
11
  ### For "critical" and time sensitive issues
@@ -0,0 +1,59 @@
1
+ import {readFileSync} from "fs"
2
+ import {defineConfig} from 'vitepress'
3
+
4
+ // Copied from https://github.com/equinor/vscode-lang-ert/blob/master/syntaxes/ert.tmLanguage.json
5
+ const ertLanguageGrammar = JSON.parse(readFileSync("./docs/ert.tmLanguage.json"))
6
+
7
+ // https://vitepress.dev/reference/site-config
8
+ export default defineConfig({
9
+ title: "FMU PEM",
10
+ description: "User documentation for using fmu-pem",
11
+ head: [
12
+ ["link", {rel: "stylesheet", href: "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"}]
13
+ ],
14
+ markdown: {
15
+ math: true,
16
+ languages: [ertLanguageGrammar]
17
+ },
18
+ themeConfig: {
19
+ // https://vitepress.dev/reference/default-theme-config
20
+ nav: [
21
+ {text: 'Home', link: '/'},
22
+ ],
23
+ logo: {light: "/fmu_logo_light_mode.svg", dark: "/fmu_logo_dark_mode.svg"},
24
+ sidebar: [
25
+ {
26
+ text: 'Setup',
27
+ items: [
28
+ {
29
+ text: "fmu-PEM manual", link: "/use-cases", items: [
30
+ {text: 'Read and validate YAML file', link: '/yaml-validation'},
31
+ {text: 'Import reservoir simulator results', link: '/import-sim-results'},
32
+ {text: 'Estimate effective mineral properties', link: '/effective-mineral-properties'},
33
+ {text: 'Estimate effective fluid properties', link: '/fluid-properties'},
34
+ {text: 'Estimate effective pressure', link: '/effective-pressure'},
35
+ {text: 'Estimate saturated rock properties', link: '/saturated-rock'},
36
+ {text: '(Optional) estimate difference properties', link: '/difference-properties'},
37
+ {text: 'Save intermediate (optional) and final estimates', link: '/save-results'},
38
+ {text: 'Model file formats', link: '/model-file-formats'},
39
+ ]
40
+ },
41
+ {text: 'ERT configuration', link: '/ert-configuration'},
42
+ {text: 'PEM configuration', link: '/pem-configuration'}
43
+ ]
44
+ },
45
+ {
46
+ text: 'Developer Documentation',
47
+ items: [
48
+ {text: 'Zone-Aware Fluid Properties', link: '/zone-aware-fluids'},
49
+ {text: 'Zone-Based Saturated Rock Properties', link: '/zone-based-saturated-rock'},
50
+ {text: 'Zone Implementation Roadmap', link: '/zone-implementation-roadmap'}
51
+ ]
52
+ }
53
+ ],
54
+ socialLinks: [
55
+ {icon: 'github', link: 'https://github.com/equinor/fmu-pem'}
56
+ ]
57
+ },
58
+ ignoreDeadLinks: true
59
+ })
@@ -0,0 +1,28 @@
1
+ # Calculate difference properties
2
+
3
+ `fmu-pem` is normally used for estimating 4D seismic response, and difference between simulator model time steps
4
+ can be more important than absolute values. In `fmu-sim2seis` workflow, the difference is calculated from absolute
5
+ values in a set of `Vp`, `Vs` and `Rho` parameters, ref. [Save results](./save-results.md). Additional difference
6
+ parameters can be generated in `fmu-pem` for QC or calibration purposes.
7
+
8
+ A section in the YAML configuration file specifies which parameters are selected for difference calculation, and
9
+ what kind of difference attributes should be estimated:
10
+
11
+ ```yaml
12
+ # For 4D parameters: settings for which difference parameters to calculate
13
+ diff_calculation:
14
+ AI: [diffpercent, ratio]
15
+ SI: [diffpercent, ratio]
16
+ VPVS: [ratio]
17
+ TWTPP: [diff]
18
+ DENS: [diffpercent]
19
+ VP: [diffpercent]
20
+ VS: [diffpercent]
21
+ SWAT: [diff]
22
+ SGAS: [diff]
23
+ ```
24
+
25
+ For convenience, it is possible to calculate differences of input parameter, as well, as in the example above for
26
+ `SWAT` and `SGAS`. The three difference attributes that can be selected, are `diff`, `diffpercent` and `ratio`.
27
+
28
+ In the FMU directory structure, the difference estimates are stored in `share/results/grids`.
@@ -0,0 +1,48 @@
1
+ # Effective mineral properties
2
+
3
+ A volume of rock will generally consist of several minerals, each having its own elastic properties. To calculate
4
+ the overall elastic properties of the volume, we need to know the elastic properties of each mineral, the volume
5
+ fractions of the minerals, and we must have a model for how to mix the volume fractions.
6
+
7
+ Default values for the elastic properties of the most common minerals are provided in `fmu-pem`, but they should
8
+ be verified in each case. Shale is often given as the effective mineral properties of a combination of constituents,
9
+ and it can range from a soft marine clay to a stiff, quartz-rich silt.
10
+
11
+
12
+ | Mineral | Density [kg/m^3] | Bulk modulus [GPa] | Shear modulus [GPa] |
13
+ |------------|------------------|--------------------|---------------------|
14
+ | Quartz | 2650.0 | 36.8 | 44.0 |
15
+ | Shale | 2680.0 | 25.0 | 12.0 |
16
+ | Calcite | 2710.0 | 76.8 | 32.0 |
17
+ | Dolomite | 2870.0 | 94.9 | 45.0 |
18
+ | Stevensite | 2490.0 | 32.5 | 45.0 |
19
+
20
+ <span id="table-1-mineral-properties"><strong>Table 1:</strong> Default values of elastic properties for common minerals.</span>
21
+
22
+ More mineral properties can be found in the **Rock Physics Handbook**.
23
+
24
+ Mavko, G., Mukerji, T., & Dvorkin, J. (2020). *The Rock Physics Handbook* (3rd ed.). Cambridge University Press.
25
+
26
+ ## Volume fractions
27
+
28
+ Please make sure that the section on [volume fractions](./import-sim-results.md) is understood, and that the `YAML` file
29
+ contains information about all minerals that should be included in the PEM, and also if they are defined as volume
30
+ fractions or mineral fractions.
31
+
32
+ ## Mix models for effective mineral properties
33
+
34
+ Two models for mixing minerals are available in `fmu-pem`: **Hashin-Shtrikman** and **Voigt-Reuss-Hill** average. The
35
+ difference between them is illustrated in [Figure 1](figure-1-bulk-modulus) and [Figure 2](figure-2-shear-modulus)
36
+ below. In this example, quartz is mixed with a soft marine clay in different proportions. As shown, there is negligible
37
+ difference in effective bulk modulus properties when selecting either Hashin-Shtrikman average or Voigt-Reuss-Hill average.
38
+ The upper and lower bounds of both methods are also included in the plots. The bounds for Hashin-Shtrikman are notably
39
+ narrower than for Voigt and Reuss bounds, with the latter representing the stiffest and softest theoretical combinations,
40
+ respectively.
41
+
42
+ <img src="./images/bulk_modulus_vs_quartz_fraction.png">
43
+ <span id="figure-1-bulk-modulus"><strong>Figure 1:</strong> Bulk modulus for a mix of quartz and marine clay.</span>
44
+ <br><br>
45
+
46
+ <img src="./images/shear_modulus_vs_quartz_fraction.png">
47
+ <span id="figure-2-shear-modulus"><strong>Figure 2:</strong> Shear modulus for a mix of quartz and marine clay.</span>
48
+ <br><br>
@@ -0,0 +1,38 @@
1
+ # Effective pressure
2
+
3
+ The matrix of porous rocks will be affected by the effective stress in terms of porosity, permeability and elastic
4
+ moduli. In this context, we simplify it to regard elastic moduli to be stress sensitive, and to keep porosity
5
+ constant. `fmu-pem` does not include any modelling of permeability.
6
+
7
+ Although effective pressure is the commonly used term, it is somewhat inaccurate, and effective stress is more correct.
8
+ In the `fmu-pem` case, we simplify the stress tensor to an isotropic pressure. To estimate effective pressure, we need to
9
+ know the overburden pressure and the formation pressure at all grid cells. Formation pressure is provided by the
10
+ reservoir simulator model, but overburden pressure is not available there. The best source for overburden pressure is
11
+ provided by drilling or operational geology disciplines, and for most fields, it will be a single one-dimensional model,
12
+ or in some cases one model per structure in the field. The relationship between overburden, formation and effective
13
+ pressures is given as:
14
+
15
+ $$P_{eff} = P_{ob} - \alpha \cdot P_f$$,
16
+
17
+ where $\alpha$ is the formation factor, also known as the Biot coefficient.
18
+
19
+ ## Variation with time
20
+
21
+ As formation pressure is reduced by depletion, the effective pressure will vary with time. In `fmu-pem`, the effective
22
+ pressure is estimated for each time step in the reservoir simulator **.UNRST** file.
23
+
24
+ ## Implementation in `fmu-pem`
25
+
26
+ Two versions of estimation of effective pressure are included in `fmu-pem`: either a constant overburden pressure at
27
+ top reservoir, or a linear depth trend. Formation factor is set to 1.0. These are the settings in the YAML config file:
28
+
29
+ ```yaml
30
+ # Overburden pressure may be set to a constant, but the estimation is improved by using a depth trend
31
+ # Unit is Pa
32
+ pressure:
33
+ type: trend
34
+ intercept: 20.0e6
35
+ gradient: 9174.3
36
+ # type: constant
37
+ # value: 50000000.0
38
+ ```
@@ -0,0 +1,17 @@
1
+ # ERT configuration file
2
+
3
+ You can include `fmu-pem` in your ERT setup by including the following snippet:
4
+
5
+ ````ert
6
+ -- Define your variables:
7
+ DEFINE <CONFIG_PATH> <RUNPATH>/sim2seis/model
8
+ DEFINE <PEM_CONFIG_FILE_NAME> pem_config.yml
9
+ DEFINE <GLOBAL_CONFIG_DIR> ../../fmuconfig/output
10
+ DEFINE <GLOBAL_CONFIG_FILE> global_variables.yml
11
+ DEFINE <MODEL_PATH> /my_fmu_structure/sim2seis/model
12
+
13
+ -- Run the pre-installed ERT forward model:
14
+ FORWARD_MODEL PEM(<CONFIG_DIR>=<CONFIG_PATH>, <CONFIG_FILE>=<PEM_CONFIG_FILE_NAME>, <GLOBAL_DIR>=<GLOBAL_CONFIG_DIR>, <GLOBAL_FILE>=<GLOBAL_CONFIG_FILE>, <MODEL_DIR>=<MODEL_PATH>)
15
+ ````
16
+
17
+ On the next page you will get help on setting up your `pem_config.yml`.