fmu-pem 0.0.1__tar.gz → 0.0.2__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 (108) hide show
  1. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/.github/workflows/build_test_deploy.yml +6 -5
  2. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/.gitignore +5 -0
  3. fmu_pem-0.0.2/.pre-commit-config.yaml +23 -0
  4. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/PKG-INFO +17 -19
  5. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/README.md +15 -13
  6. fmu_pem-0.0.2/documentation/docs/.vitepress/config.mts +30 -0
  7. fmu_pem-0.0.2/documentation/docs/ert-configuration.md +15 -0
  8. fmu_pem-0.0.2/documentation/docs/index.md +24 -0
  9. fmu_pem-0.0.2/documentation/docs/pem-configuration.md +134 -0
  10. fmu_pem-0.0.2/documentation/docs/public/fmu_logo_dark_mode.svg +18 -0
  11. fmu_pem-0.0.2/documentation/docs/public/fmu_logo_light_mode.svg +18 -0
  12. fmu_pem-0.0.1/user-interface-config/src/App.tsx → fmu_pem-0.0.2/documentation/docs/yaml-edit/YamlEdit.tsx +22 -32
  13. fmu_pem-0.0.2/documentation/package-lock.json +4443 -0
  14. fmu_pem-0.0.2/documentation/package.json +19 -0
  15. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/pyproject.toml +1 -5
  16. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/density.py +2 -2
  17. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/effective_pressure.py +7 -6
  18. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/estimate_saturated_rock.py +3 -3
  19. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/fluid_properties.py +13 -8
  20. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/regression_models.py +3 -3
  21. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/run_friable_model.py +2 -2
  22. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/run_patchy_cement_model.py +2 -2
  23. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/run_t_matrix_and_pressure.py +1 -1
  24. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/enum_defs.py +17 -1
  25. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/import_routines.py +2 -1
  26. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/pem_config_validation.py +65 -32
  27. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/rpm_models.py +47 -22
  28. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/version.py +2 -2
  29. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/PKG-INFO +17 -19
  30. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/SOURCES.txt +30 -37
  31. fmu_pem-0.0.2/tests/conftest.py +28 -0
  32. fmu_pem-0.0.2/tests/data/ert/model/run_pem_condensate.ert +11 -0
  33. fmu_pem-0.0.2/tests/data/ert/model/run_pem_no_condensate.ert +11 -0
  34. fmu_pem-0.0.1/tests/data/test_pem_config_condensate.yml → fmu_pem-0.0.2/tests/data/sim2seis/model/pem_config_condensate.yml +25 -22
  35. fmu_pem-0.0.1/tests/yaml_files/new_pem_config.yml → fmu_pem-0.0.2/tests/data/sim2seis/model/pem_config_no_condensate.yml +18 -13
  36. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_config_file_validation.py +6 -6
  37. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_dry_rock.py +1 -1
  38. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_ert_hooks.py +53 -57
  39. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_ert_hooks_condensate.py +53 -58
  40. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_friable.py +5 -5
  41. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_patchy_cement.py +4 -2
  42. fmu_pem-0.0.2/tests/test_pem.py +18 -0
  43. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_regression.py +9 -9
  44. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_t_matrix.py +3 -3
  45. fmu_pem-0.0.1/tests/conftest.py +0 -8
  46. fmu_pem-0.0.1/tests/data/run_pem_condensate.ert +0 -15
  47. fmu_pem-0.0.1/tests/data/run_pem_no_condensate.ert +0 -15
  48. fmu_pem-0.0.1/tests/data/test_pem_config_no_condensate.yml +0 -122
  49. fmu_pem-0.0.1/tests/test_pem.py +0 -25
  50. fmu_pem-0.0.1/user-interface-config/.prettierrc +0 -1
  51. fmu_pem-0.0.1/user-interface-config/eslint.config.js +0 -28
  52. fmu_pem-0.0.1/user-interface-config/index.html +0 -22
  53. fmu_pem-0.0.1/user-interface-config/package-lock.json +0 -7033
  54. fmu_pem-0.0.1/user-interface-config/package.json +0 -45
  55. fmu_pem-0.0.1/user-interface-config/postcss.config.js +0 -6
  56. fmu_pem-0.0.1/user-interface-config/src/fmu-pem-schema.json +0 -20
  57. fmu_pem-0.0.1/user-interface-config/src/index.css +0 -65
  58. fmu_pem-0.0.1/user-interface-config/src/main.tsx +0 -10
  59. fmu_pem-0.0.1/user-interface-config/src/vite-env.d.ts +0 -1
  60. fmu_pem-0.0.1/user-interface-config/tailwind.config.js +0 -8
  61. fmu_pem-0.0.1/user-interface-config/tsconfig.app.json +0 -26
  62. fmu_pem-0.0.1/user-interface-config/tsconfig.json +0 -7
  63. fmu_pem-0.0.1/user-interface-config/tsconfig.node.json +0 -24
  64. fmu_pem-0.0.1/user-interface-config/vite.config.ts +0 -7
  65. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/ERT/run_pem.ert +0 -0
  66. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/LICENSE +0 -0
  67. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/SECURITY.md +0 -0
  68. {fmu_pem-0.0.1/user-interface-config/src → fmu_pem-0.0.2/documentation/docs/yaml-edit}/schema.tsx +0 -0
  69. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/setup.cfg +0 -0
  70. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/__init__.py +0 -0
  71. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/__init__.py +0 -0
  72. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/__main__.py +0 -0
  73. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/forward_models/__init__.py +0 -0
  74. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/forward_models/pem_model.py +0 -0
  75. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/hook_implementations/__init__.py +0 -0
  76. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/hook_implementations/jobs.py +0 -0
  77. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/__init__.py +0 -0
  78. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_functions/mineral_properties.py +0 -0
  79. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/__init__.py +0 -0
  80. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/cumsum_properties.py +0 -0
  81. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/delta_cumsum_time.py +0 -0
  82. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/export_routines.py +0 -0
  83. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/import_config.py +0 -0
  84. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/pem_class_definitions.py +0 -0
  85. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/update_grid.py +0 -0
  86. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/pem_utilities/utils.py +0 -0
  87. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu/pem/run_pem.py +0 -0
  88. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/dependency_links.txt +0 -0
  89. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/entry_points.txt +0 -0
  90. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/requires.txt +0 -0
  91. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/src/fmu_pem.egg-info/top_level.txt +0 -0
  92. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/__init__.py +0 -0
  93. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/fmuconfig/output}/global_variables.yml +0 -0
  94. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/fmuconfig/output}/global_variables_pred.yml +0 -0
  95. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/ECLIPSE.EGRID +0 -0
  96. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/ECLIPSE.INIT +0 -0
  97. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/ECLIPSE.UNRST +0 -0
  98. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/export_grid.roff +0 -0
  99. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/export_prop.roff +0 -0
  100. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/simgrid--ntg_pem.roff +0 -0
  101. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/input/pem}/simgrid.roff +0 -0
  102. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/carbonate_pressure_model_vp_exp.pkl +0 -0
  103. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/carbonate_pressure_model_vs_exp.pkl +0 -0
  104. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/t_mat_params_exp.pkl +0 -0
  105. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/t_mat_params_petec.pkl +0 -0
  106. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/vp_exp_model.pkl +0 -0
  107. {fmu_pem-0.0.1/tests/data → fmu_pem-0.0.2/tests/data/sim2seis/model}/vs_exp_model.pkl +0 -0
  108. {fmu_pem-0.0.1 → fmu_pem-0.0.2}/tests/test_utils.py +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'
@@ -14,3 +14,8 @@ src/fmu/pem/version.py
14
14
  # npm and node relevant build files
15
15
  node_modules
16
16
  dist
17
+
18
+ # Documentation:
19
+ fmu-pem-schema.json
20
+ **/.vitepress/dist
21
+ **/.vitepress/cache
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu-pem
3
- Version: 0.0.1
3
+ Version: 0.0.2
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
@@ -719,13 +715,19 @@ 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 selected pilot test fields.
723
720
 
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.
721
+ **[📚 User documentation](https://equinor.github.io/fmu-pem/)**
727
722
 
728
- ## Installation
723
+ ## What is fmu-pem?
724
+
725
+ Petro-elastic model (PEM) for use in e.g. [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
726
+ based on the [rock-physics-open](https://github.com/equinor/rock-physics-open) library.
727
+
728
+ ## How to use fmu-pem?
729
+
730
+ ### Installation
729
731
 
730
732
  To install `fmu-pem`, first activate a virtual environment, then type:
731
733
 
@@ -736,7 +738,7 @@ pip install fmu-pem
736
738
  The PEM is controlled by parameter settings in a *yaml-file*, given as part of the
737
739
  command line arguments, or by the workflow parameter if it is run as an ERT forward model.
738
740
 
739
- ## Calibration of rock physics models
741
+ ### Calibration of rock physics models
740
742
 
741
743
  Calibration of the rock physics models is normally carried out in
742
744
  [RokDoc](https://www.ikonscience.com/rokdoc-geoprediction-software-platform/)
@@ -752,17 +754,13 @@ from LFP logs, if they are available.
752
754
  > pip install "git+ssh://git@github.com/equinor/rock-physics"`
753
755
  > ```
754
756
 
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
757
+ ## How to develop fmu-pem?
760
758
 
761
759
  Developing the user interface can be done by:
762
760
  ```bash
763
- cd ./user-interface-config
761
+ cd ./documentation
764
762
  npm ci # Install dependencies
765
763
  npm run create-json-schema # Extract JSON schema from Python code
766
- npm run dev # Start local development server
764
+ npm run docs:dev # Start local development server
767
765
  ```
768
766
  The JSON schema itself (type, title, description etc.) comes from the corresponding Pydantic models in the Python code.
@@ -1,10 +1,16 @@
1
- # How to use fmu-pem
1
+ > [!WARNING]
2
+ > `fmu-pem` is not yet qualified technology, and as of today only applicable for selected pilot test fields.
2
3
 
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.
4
+ **[📚 User documentation](https://equinor.github.io/fmu-pem/)**
6
5
 
7
- ## Installation
6
+ ## What is fmu-pem?
7
+
8
+ Petro-elastic model (PEM) for use in e.g. [fmu-sim2seis](https://github.com/equinor/fmu-sim2seis)
9
+ based on the [rock-physics-open](https://github.com/equinor/rock-physics-open) library.
10
+
11
+ ## How to use fmu-pem?
12
+
13
+ ### Installation
8
14
 
9
15
  To install `fmu-pem`, first activate a virtual environment, then type:
10
16
 
@@ -15,7 +21,7 @@ pip install fmu-pem
15
21
  The PEM is controlled by parameter settings in a *yaml-file*, given as part of the
16
22
  command line arguments, or by the workflow parameter if it is run as an ERT forward model.
17
23
 
18
- ## Calibration of rock physics models
24
+ ### Calibration of rock physics models
19
25
 
20
26
  Calibration of the rock physics models is normally carried out in
21
27
  [RokDoc](https://www.ikonscience.com/rokdoc-geoprediction-software-platform/)
@@ -31,17 +37,13 @@ from LFP logs, if they are available.
31
37
  > pip install "git+ssh://git@github.com/equinor/rock-physics"`
32
38
  > ```
33
39
 
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
40
+ ## How to develop fmu-pem?
39
41
 
40
42
  Developing the user interface can be done by:
41
43
  ```bash
42
- cd ./user-interface-config
44
+ cd ./documentation
43
45
  npm ci # Install dependencies
44
46
  npm run create-json-schema # Extract JSON schema from Python code
45
- npm run dev # Start local development server
47
+ npm run docs:dev # Start local development server
46
48
  ```
47
49
  The JSON schema itself (type, title, description etc.) comes from the corresponding Pydantic models in the Python code.
@@ -0,0 +1,30 @@
1
+ import { defineConfig } from 'vitepress'
2
+
3
+ // https://vitepress.dev/reference/site-config
4
+ export default defineConfig({
5
+ title: "FMU PEM",
6
+ description: "User documentation for using fmu-pem",
7
+ head: [
8
+ ["link", { rel: "stylesheet", href: "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"}]
9
+ ],
10
+ themeConfig: {
11
+ // https://vitepress.dev/reference/default-theme-config
12
+ nav: [
13
+ { text: 'Home', link: '/' },
14
+ ],
15
+ logo: { light: "/fmu_logo_light_mode.svg", dark: "/fmu_logo_dark_mode.svg"},
16
+ sidebar: [
17
+ {
18
+ text: 'Setup',
19
+ items: [
20
+ { text: 'ERT configuration', link: '/ert-configuration' },
21
+ { text: 'PEM configuration', link: '/pem-configuration' }
22
+ ]
23
+ }
24
+ ],
25
+
26
+ socialLinks: [
27
+ { icon: 'github', link: 'https://github.com/equinor/fmu-pem' }
28
+ ]
29
+ }
30
+ })
@@ -0,0 +1,15 @@
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 <JOB_STARTDIR> <RUNPATH>/rms/model
8
+ DEFINE <RELPATH_CONFIG_FILES> <RUNPATH>/sim2seis/model
9
+ DEFINE <PEM_CONFIG_FILE_NAME> pem_config.yml
10
+
11
+ -- Run the pre-installed ERT forward model:
12
+ FORWARD_MODEL PEM(<START_DIR>=<JOB_STARTDIR>, <CONFIG_DIR>=<RELPATH_CONFIG_FILES>, <CONFIG_FILE>=<PEM_CONFIG_FILE_NAME>)
13
+ ````
14
+
15
+ On the next page you will get help setting up your `pem_config.yml`.
@@ -0,0 +1,24 @@
1
+ ---
2
+ # https://vitepress.dev/reference/default-theme-home-page
3
+ layout: home
4
+
5
+ hero:
6
+ name: FMU PEM
7
+ text: "User documentation"
8
+ tagline: Calculate seismic properties from rock physics models in a FMU context.
9
+ actions:
10
+ - theme: brand
11
+ text: ERT configuration
12
+ link: /ert-configuration
13
+ - theme: brand
14
+ text: PEM configuration
15
+ link: /pem-configuration
16
+
17
+ features:
18
+ - icon: 🛠️
19
+ title: Less maintenance
20
+ details: No need for custom scripts in your FMU or RMS project. PEM is maintained centrally by Equinor, and available as pre-installert ERT forward models.
21
+ - icon: 🤝
22
+ title: Shared rock physics library
23
+ details: FMU PEM uses the same underlying rock physics library as RokDoc plugins - ensuring consistent output across the software portfolio.
24
+ ---
@@ -0,0 +1,134 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # PEM configuration
6
+
7
+
8
+ Create, update or change a **fmu-pem** configuration file. You can load an existing configuration file as starting point.
9
+
10
+ <div ref="el" />
11
+
12
+ <script setup>
13
+ import { createElement } from 'react'
14
+ import { createRoot } from 'react-dom/client'
15
+ import { ref, onMounted } from 'vue'
16
+ import { YamlEdit } from './yaml-edit/YamlEdit'
17
+
18
+ const el = ref()
19
+ onMounted(() => {
20
+ const root = createRoot(el.value)
21
+ root.render(createElement(YamlEdit, {}, null))
22
+ })
23
+ </script>
24
+
25
+ <style>
26
+ input.form-control, select.form-control {
27
+ background-color: rgb(245 245 245);
28
+ border-radius: 5px;
29
+ padding: 3px;
30
+ border: 1px solid;
31
+ border-color: #ccc;
32
+ box-shadow: 0 1+px 25px -5px rgb(0 0 0 / 0.05);
33
+ }
34
+
35
+ input.form-control {
36
+ min-width: 400px;
37
+ }
38
+
39
+ select.form-control:hover {
40
+ cursor: pointer;
41
+ }
42
+
43
+ .dark input.form-control {
44
+ background-color: rgb(50 50 50);
45
+ border-color: #666;
46
+ }
47
+
48
+ .form-group {
49
+ margin-top: 20px;
50
+ margin-left: 15px;
51
+ padding-top: 5px;
52
+ padding-bottom: 5px;
53
+ }
54
+
55
+ .control-label {
56
+ font-weight: 500;
57
+ }
58
+
59
+ .field-description {
60
+ font-size: small;
61
+ }
62
+
63
+ legend {
64
+ font-size: 20px;
65
+ font-weight: 700;
66
+ }
67
+
68
+ .btn-group {
69
+ max-width: 300px;
70
+ margin: auto;
71
+ margin-bottom: 20px;
72
+ }
73
+
74
+ .glyphicon {
75
+ position: relative;
76
+ top: 1px;
77
+ display: inline-block;
78
+ font-family: "Glyphicons Halflings";
79
+ font-style: normal;
80
+ font-weight: normal;
81
+ line-height: 1;
82
+ }
83
+
84
+ .glyphicon-plus:before {
85
+ content: "➕";
86
+ padding: 5px;
87
+ border-radius: 5px;
88
+ background-color: oklch(92.5% 0.084 155.995)
89
+ }
90
+
91
+ .dark .glyphicon-plus:before {
92
+ background-color: oklch(39.3% 0.095 152.535)
93
+ }
94
+
95
+ .glyphicon-remove:before {
96
+ content: "🗑️";
97
+ padding: 5px;
98
+ border-radius: 5px;
99
+ background-color: oklch(93.6% 0.032 17.717);
100
+ border: 1px solid oklch(88.5% 0.062 18.334);
101
+ }
102
+ .glyphicon-arrow-up:before {
103
+ content: "🢁";
104
+ }
105
+ .glyphicon-arrow-down:before {
106
+ content: "🢃";
107
+ }
108
+
109
+ .checkbox > label {
110
+ display: flex;
111
+ gap: 10px;
112
+ font-weight: 500;
113
+ }
114
+
115
+ input[type='text']:read-only{
116
+ background: lightgrey;
117
+ cursor: not-allowed;
118
+ }
119
+
120
+ .text-danger {
121
+ color: oklch(57.7% 0.245 27.325);
122
+ background-color: oklch(93.6% 0.032 17.717);
123
+ padding: 2px;
124
+ padding-left: 6px;
125
+ padding-right: 6px;
126
+ border-radius: 5px;
127
+ width: fit-content;
128
+ }
129
+
130
+ li.text-danger::marker {
131
+ content: "⚠";
132
+ }
133
+
134
+ </style>
@@ -0,0 +1,18 @@
1
+ <svg width="36" height="37" viewBox="0 0 36 37" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="FMU Logo Blue">
3
+ <g id="Group">
4
+ <path id="Vector" d="M13.8245 0.0746042C13.6503 -0.0849347 13.3694 0.0269694 13.3534 0.262875L13.0096 5.39383C12.999 5.54807 12.8665 5.66452 12.712 5.65544L6.70469 5.2978C6.4381 5.28192 6.30178 5.61083 6.50096 5.78776L17.2235 15.3246C17.4045 15.4856 17.6915 15.3578 17.6923 15.1159L17.7264 3.7818C17.7264 3.70317 17.7483 3.56631 17.69 3.51263L13.8245 0.0746042Z" fill="white"/>
5
+ <path id="Vector_2" d="M11.338 4.3874C11.9707 4.09286 12.2444 3.34202 11.9494 2.71037C11.6544 2.07872 10.9023 1.80543 10.2696 2.09998C9.63692 2.39452 9.36319 3.14536 9.65822 3.77701C9.95325 4.40867 10.7053 4.68195 11.338 4.3874Z" fill="white"/>
6
+ <path id="Vector_3" d="M15.1786 16.5906L5.36414 10.8941C5.29598 10.8548 5.18843 10.7671 5.1127 10.7913L0.19751 12.4146C-0.0281801 12.4849 -0.071349 12.7844 0.124804 12.9159L4.40382 15.7786C4.53257 15.8648 4.56741 16.0379 4.48183 16.1664L1.16843 21.1817C1.0215 21.404 1.23811 21.6868 1.49182 21.6029L15.1264 17.1002C15.3566 17.0239 15.3892 16.7123 15.1794 16.5906H15.1786Z" fill="white"/>
7
+ <path id="Vector_4" d="M2.7891 16.6507C2.82697 15.9543 2.29228 15.36 1.59476 15.3222C0.897243 15.2844 0.301968 15.8182 0.2641 16.5146C0.226233 17.211 0.760921 17.8053 1.45844 17.8431C2.15596 17.8809 2.75123 17.3471 2.7891 16.6507Z" fill="white"/>
8
+ <path id="Vector_5" d="M15.2164 19.5103L5.36783 25.1479C5.29967 25.1872 5.17017 25.2363 5.15275 25.3135L4.10306 30.3748C4.05156 30.6047 4.28937 30.7922 4.50143 30.6879L9.12428 28.4195C9.26288 28.3515 9.43101 28.4082 9.49993 28.5458L12.1938 33.9187C12.3135 34.1569 12.6664 34.1108 12.7209 33.8499L15.6329 19.8105C15.6822 19.5731 15.4277 19.3893 15.2171 19.5096L15.2164 19.5103Z" fill="white"/>
9
+ <path id="Vector_6" d="M9.04876 30.0958C8.46409 29.7155 7.68023 29.8803 7.29928 30.464C6.91834 31.0478 7.08344 31.8303 7.66811 32.2107C8.25279 32.591 9.03664 32.4262 9.41759 31.8424C9.79853 31.2587 9.63343 30.4761 9.04876 30.0958Z" fill="white"/>
10
+ <path id="Vector_7" d="M18.2376 20.6874C18.0566 20.5264 17.7696 20.6542 17.7688 20.8961L17.7348 32.2302C17.7348 32.3088 17.7128 32.4457 17.7711 32.4994L21.6366 35.9381C21.8108 36.0977 22.0918 35.9858 22.1077 35.7499L22.4515 30.6189C22.4621 30.4647 22.5947 30.3482 22.7492 30.3573L28.7565 30.715C29.023 30.7308 29.1594 30.4019 28.9602 30.225L18.2376 20.6882V20.6874Z" fill="white"/>
11
+ <path id="Vector_8" d="M25.1918 33.7463C25.8244 33.4517 26.0982 32.7009 25.8031 32.0693C25.5081 31.4376 24.7561 31.1643 24.1234 31.4589C23.4907 31.7534 23.217 32.5042 23.512 33.1359C23.807 33.7676 24.5591 34.0408 25.1918 33.7463Z" fill="white"/>
12
+ <path id="Vector_9" d="M35.3362 23.1371L31.0572 20.2745C30.9285 20.1883 30.8936 20.0151 30.9792 19.8866L34.2926 14.8713C34.4395 14.649 34.2229 14.3663 33.9692 14.4502L20.3347 18.9528C20.1044 19.0292 20.0719 19.3407 20.2817 19.4624L30.0961 25.1589C30.1643 25.1983 30.2718 25.286 30.3476 25.2618L35.2635 23.6384C35.4892 23.5681 35.5324 23.2687 35.3362 23.1371Z" fill="white"/>
13
+ <path id="Vector_10" d="M32.6711 19.5156C32.6332 20.2119 33.1679 20.8062 33.8654 20.844C34.5629 20.8819 35.1582 20.348 35.1961 19.6517C35.2339 18.9553 34.6993 18.361 34.0017 18.3232C33.3042 18.2854 32.709 18.8192 32.6711 19.5156Z" fill="white"/>
14
+ <path id="Vector_11" d="M20.2438 16.5451L30.0923 10.9075C30.1605 10.8682 30.29 10.819 30.3074 10.7419L31.3571 5.68053C31.4086 5.45067 31.1708 5.26316 30.9587 5.3675L26.3359 7.63583C26.1973 7.70387 26.0292 7.64717 25.9602 7.50955L23.2663 2.13665C23.1467 1.89847 22.7938 1.9446 22.7392 2.20545L19.8272 16.2449C19.778 16.4823 20.0325 16.666 20.243 16.5458L20.2438 16.5451Z" fill="white"/>
15
+ <path id="Vector_12" d="M28.1057 5.48115C28.5683 4.95916 28.5194 4.16163 27.9966 3.69982C27.4737 3.238 26.6749 3.28678 26.2123 3.80877C25.7497 4.33075 25.7986 5.12828 26.3214 5.5901C26.8443 6.05191 27.6431 6.00313 28.1057 5.48115Z" fill="white"/>
16
+ </g>
17
+ </g>
18
+ </svg>
@@ -0,0 +1,18 @@
1
+ <svg width="36" height="37" viewBox="0 0 36 37" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="FMU Logo Blue">
3
+ <g id="Group">
4
+ <path id="Vector" d="M13.8245 0.0746042C13.6503 -0.0849347 13.3694 0.0269694 13.3534 0.262875L13.0096 5.39383C12.999 5.54807 12.8665 5.66452 12.712 5.65544L6.70469 5.2978C6.4381 5.28192 6.30178 5.61083 6.50096 5.78776L17.2235 15.3246C17.4045 15.4856 17.6915 15.3578 17.6923 15.1159L17.7264 3.7818C17.7264 3.70317 17.7483 3.56631 17.69 3.51263L13.8245 0.0746042Z" fill="#3c3c43"/>
5
+ <path id="Vector_2" d="M11.338 4.3874C11.9707 4.09286 12.2444 3.34202 11.9494 2.71037C11.6544 2.07872 10.9023 1.80543 10.2696 2.09998C9.63692 2.39452 9.36319 3.14536 9.65822 3.77701C9.95325 4.40867 10.7053 4.68195 11.338 4.3874Z" fill="#3c3c43"/>
6
+ <path id="Vector_3" d="M15.1786 16.5906L5.36414 10.8941C5.29598 10.8548 5.18843 10.7671 5.1127 10.7913L0.19751 12.4146C-0.0281801 12.4849 -0.071349 12.7844 0.124804 12.9159L4.40382 15.7786C4.53257 15.8648 4.56741 16.0379 4.48183 16.1664L1.16843 21.1817C1.0215 21.404 1.23811 21.6868 1.49182 21.6029L15.1264 17.1002C15.3566 17.0239 15.3892 16.7123 15.1794 16.5906H15.1786Z" fill="#3c3c43"/>
7
+ <path id="Vector_4" d="M2.7891 16.6507C2.82697 15.9543 2.29228 15.36 1.59476 15.3222C0.897243 15.2844 0.301968 15.8182 0.2641 16.5146C0.226233 17.211 0.760921 17.8053 1.45844 17.8431C2.15596 17.8809 2.75123 17.3471 2.7891 16.6507Z" fill="#3c3c43"/>
8
+ <path id="Vector_5" d="M15.2164 19.5103L5.36783 25.1479C5.29967 25.1872 5.17017 25.2363 5.15275 25.3135L4.10306 30.3748C4.05156 30.6047 4.28937 30.7922 4.50143 30.6879L9.12428 28.4195C9.26288 28.3515 9.43101 28.4082 9.49993 28.5458L12.1938 33.9187C12.3135 34.1569 12.6664 34.1108 12.7209 33.8499L15.6329 19.8105C15.6822 19.5731 15.4277 19.3893 15.2171 19.5096L15.2164 19.5103Z" fill="#3c3c43"/>
9
+ <path id="Vector_6" d="M9.04876 30.0958C8.46409 29.7155 7.68023 29.8803 7.29928 30.464C6.91834 31.0478 7.08344 31.8303 7.66811 32.2107C8.25279 32.591 9.03664 32.4262 9.41759 31.8424C9.79853 31.2587 9.63343 30.4761 9.04876 30.0958Z" fill="#3c3c43"/>
10
+ <path id="Vector_7" d="M18.2376 20.6874C18.0566 20.5264 17.7696 20.6542 17.7688 20.8961L17.7348 32.2302C17.7348 32.3088 17.7128 32.4457 17.7711 32.4994L21.6366 35.9381C21.8108 36.0977 22.0918 35.9858 22.1077 35.7499L22.4515 30.6189C22.4621 30.4647 22.5947 30.3482 22.7492 30.3573L28.7565 30.715C29.023 30.7308 29.1594 30.4019 28.9602 30.225L18.2376 20.6882V20.6874Z" fill="#3c3c43"/>
11
+ <path id="Vector_8" d="M25.1918 33.7463C25.8244 33.4517 26.0982 32.7009 25.8031 32.0693C25.5081 31.4376 24.7561 31.1643 24.1234 31.4589C23.4907 31.7534 23.217 32.5042 23.512 33.1359C23.807 33.7676 24.5591 34.0408 25.1918 33.7463Z" fill="#3c3c43"/>
12
+ <path id="Vector_9" d="M35.3362 23.1371L31.0572 20.2745C30.9285 20.1883 30.8936 20.0151 30.9792 19.8866L34.2926 14.8713C34.4395 14.649 34.2229 14.3663 33.9692 14.4502L20.3347 18.9528C20.1044 19.0292 20.0719 19.3407 20.2817 19.4624L30.0961 25.1589C30.1643 25.1983 30.2718 25.286 30.3476 25.2618L35.2635 23.6384C35.4892 23.5681 35.5324 23.2687 35.3362 23.1371Z" fill="#3c3c43"/>
13
+ <path id="Vector_10" d="M32.6711 19.5156C32.6332 20.2119 33.1679 20.8062 33.8654 20.844C34.5629 20.8819 35.1582 20.348 35.1961 19.6517C35.2339 18.9553 34.6993 18.361 34.0017 18.3232C33.3042 18.2854 32.709 18.8192 32.6711 19.5156Z" fill="#3c3c43"/>
14
+ <path id="Vector_11" d="M20.2438 16.5451L30.0923 10.9075C30.1605 10.8682 30.29 10.819 30.3074 10.7419L31.3571 5.68053C31.4086 5.45067 31.1708 5.26316 30.9587 5.3675L26.3359 7.63583C26.1973 7.70387 26.0292 7.64717 25.9602 7.50955L23.2663 2.13665C23.1467 1.89847 22.7938 1.9446 22.7392 2.20545L19.8272 16.2449C19.778 16.4823 20.0325 16.666 20.243 16.5458L20.2438 16.5451Z" fill="#3c3c43"/>
15
+ <path id="Vector_12" d="M28.1057 5.48115C28.5683 4.95916 28.5194 4.16163 27.9966 3.69982C27.4737 3.238 26.6749 3.28678 26.2123 3.80877C25.7497 4.33075 25.7986 5.12828 26.3214 5.5901C26.8443 6.05191 27.6431 6.00313 28.1057 5.48115Z" fill="#3c3c43"/>
16
+ </g>
17
+ </g>
18
+ </svg>
@@ -1,8 +1,10 @@
1
+ import React from "react";
1
2
  import Form from "@rjsf/core";
2
-
3
3
  import YAML from "yaml";
4
4
  import validator from "@rjsf/validator-ajv8";
5
5
 
6
+ import { pemSchema } from "./schema";
7
+
6
8
  import {
7
9
  Button,
8
10
  Icon,
@@ -11,16 +13,15 @@ import {
11
13
  Snackbar,
12
14
  Switch
13
15
  } from "@equinor/eds-core-react";
14
- import { upload, file_description, copy } from "@equinor/eds-icons";
15
16
 
16
- import { pemSchema } from "./schema";
17
- import React from "react";
17
+ import { copy } from "@equinor/eds-icons";
18
18
 
19
- function App() {
19
+
20
+ export const YamlEdit = () => {
20
21
  const [validInput, setValidInput] = React.useState(false);
21
22
  const [dialogOpen, setDialogOpen] = React.useState(false);
22
23
  const [snackbarOpen, setSnackbarOpen] = React.useState(false);
23
- const [populateDefault, setPopulateDefault] = React.useState(false);
24
+ const [populateDefault, setPopulateDefault] = React.useState(true);
24
25
 
25
26
  const [initialConfig, setInitialConfig] = React.useState({});
26
27
 
@@ -31,18 +32,10 @@ function App() {
31
32
  YAML.stringify(userInputRef.current);
32
33
 
33
34
  return (
34
- <div className="min-h-screen min-w-screen bg-slate-100">
35
- <div className="bg-slate-700 p-4 flex gap-20 items-center shadow-md">
36
- <div className="text-white">
37
- Create, update or change a <span className="font-bold">fmu-pem</span>{" "}
38
- configuration file. You can load an existing configuration file as
39
- starting point.
40
- </div>
41
- </div>
35
+ <div>
42
36
  <div className="flex w-full justify-center my-10 gap-10">
43
- <Button
44
- as="button"
45
- color="secondary"
37
+ <button
38
+ className="flex gap-2 font-bold items-center shadow p-1 rounded-lg bg-gray-100 hover:bg-gray-50 dark:bg-gray-800"
46
39
  onClick={() => {
47
40
  const input = document.createElement("input");
48
41
  input.type = "file";
@@ -68,13 +61,12 @@ function App() {
68
61
  input.click();
69
62
  }}
70
63
  >
71
- <Icon data={upload} size={16}></Icon>
72
- Load existing configuration file (YAML)
73
- </Button>
74
- <Button as="button" color="primary" onClick={() => setDialogOpen(true)}>
75
- <Icon data={file_description} size={16}></Icon>
76
- Configuration file output (YAML)
77
- </Button>
64
+ Load config (YAML)
65
+ </button>
66
+ <button
67
+ className="flex gap-2 font-bold items-center shadow p-1 rounded-lg bg-gray-100 hover:bg-gray-50" onClick={() => setDialogOpen(true)}>
68
+ Config output (YAML)
69
+ </button>
78
70
  <Dialog
79
71
  open={dialogOpen}
80
72
  onClose={() => {
@@ -82,17 +74,17 @@ function App() {
82
74
  setSnackbarOpen(false);
83
75
  }}
84
76
  isDismissable={true}
85
- className="w-100"
77
+ style={{width: 1000, maxHeight: "90vh"}}
86
78
  >
87
79
  <Dialog.Header>
88
80
  <Dialog.Title>YAML output</Dialog.Title>
89
81
  </Dialog.Header>
90
- <Dialog.CustomContent className="min-w-[600px]">
82
+ <Dialog.CustomContent>
91
83
  <TextField
92
84
  id="yaml-content"
93
85
  multiline={true}
94
86
  placeholder={yamlOutput}
95
- rowsMax={50}
87
+ rowsMax={35}
96
88
  readOnly={true}
97
89
  />
98
90
  <Button
@@ -114,11 +106,11 @@ function App() {
114
106
  </Snackbar>
115
107
  </Dialog.CustomContent>
116
108
  </Dialog>
117
- <Switch label="Populate with default values" onChange={(e) => setPopulateDefault(e.target.checked)} />
109
+ <Switch label="Populate with default values" checked={populateDefault} onChange={(e) => setPopulateDefault(e.target.checked)} />
118
110
 
119
- </div>
111
+ </div>
120
112
  <div className="flex justify-center my-20">
121
- <div className="p-10 shadow-lg rounded bg-slate-50 min-w-[800px]">
113
+ <div className="p-10 shadow-lg rounded bg-slate-50 border-2 border-slate-50" style={{minWidth: 800}}>
122
114
  <Form
123
115
  schema={pemSchema}
124
116
  validator={validator}
@@ -149,5 +141,3 @@ function App() {
149
141
  </div>
150
142
  );
151
143
  }
152
-
153
- export default App;