subscript 1.6.1__tar.gz → 1.7.0__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.
- {subscript-1.6.1 → subscript-1.7.0}/PKG-INFO +4 -3
- subscript-1.7.0/docs/scripts/grav_subs_points.rst +7 -0
- {subscript-1.6.1 → subscript-1.7.0}/pyproject.toml +4 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/GRAV_SUBS_MAPS +1 -0
- subscript-1.7.0/src/subscript/config_jobs/GRAV_SUBS_POINTS +10 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv_merge/csv_merge.py +2 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv_stack/csv_stack.py +2 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmuobs/fmuobs.py +2 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/grav_subs_maps/grav_subs_maps.py +17 -14
- subscript-1.7.0/src/subscript/grav_subs_points/grav_subs_points.py +446 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/hook_implementations/jobs.py +4 -8
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/params2csv/params2csv.py +9 -9
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sunsch/time_vector.py +11 -8
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/version.py +2 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/PKG-INFO +4 -3
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/SOURCES.txt +40 -2
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/entry_points.txt +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/requires.txt +3 -2
- subscript-1.7.0/tests/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/conftest.py +1 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/edit/drogon.trans +7511 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.faults +174 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.grid +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.multnum +473 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.multregt +45 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.perm +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/grid/drogon.poro +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/props/drogon.pvt +476 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/props/drogon.sattab +1037 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/props/drogon.swatinit +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/regions/drogon.eqlnum +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/regions/drogon.fipnum +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/regions/drogon.fipzon +22641 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/regions/drogon.pvtnum +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/regions/drogon.satnum +0 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/runspec/drogon.dimens +3 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/runspec/drogon.eqldims +4 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/runspec/drogon.gridopts +3 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/runspec/drogon.regdims +4 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/runspec/drogon.tabdims +4 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/55_33-1.sch +6329 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/55_33-1.wells +45 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/drogon_hist.sch +1731 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/vfp/A-1.inc +2163 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/vfp/A-2.inc +2163 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/vfp/A-3.inc +2163 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/schedule/vfp/A-4.inc +2164 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/solution/drogon.equil +10 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/solution/drogon.rxvd +31 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/solution/drogon.thpres +24 -0
- subscript-1.7.0/tests/data/drogon/eclipse/include/summary/drogon.summary +371 -0
- subscript-1.7.0/tests/data/drogon/eclipse/model/DROGON-0.DATA +257 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_bjobsusers.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_casegen_upcars.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_check_swatinit.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_check_swatinit_simulators.py +4 -30
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_convert_grid_format.py +2 -1
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_csv2ofmvol.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_csv_merge.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_csv_stack.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_eclcompress.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_ecldiff2roff.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_fmu_copy_revision.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_fmuobs.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_fmuobs_parsers.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_fmuobs_writers.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_grav_subs_maps.py +26 -2
- subscript-1.7.0/tests/test_grav_subs_points.py +251 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_hook_implementations.py +3 -1
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_interp_relperm.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_merge_rft_ertobs.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_merge_unrst_files.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_ofmvol2csv.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_pack_sim.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_params2csv.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_presentvalue.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_prtvol2csv.py +39 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_restartthinner.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_ri_wellmod.py +1 -3
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_rmsecl_volumetrics.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_sector2fluxnum.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_summaryplot.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_sunsch.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_sw_model_utilities.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_vfp2csv.py +1 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_welltest_dpds.py +1 -0
- subscript-1.6.1/tests/testdata_gravity/grav_subs_maps_hist.yml → subscript-1.7.0/tests/testdata_gravity/grav_subs_maps.yml +2 -2
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_gravity/grav_subs_points.yml +3 -3
- subscript-1.7.0/tests/utils.py +50 -0
- {subscript-1.6.1 → subscript-1.7.0}/.github/workflows/codecov.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/.github/workflows/publish.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/.github/workflows/subscript.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/.gitignore +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/.pylintrc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/LICENSE +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/README.md +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/SECURITY.md +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/ci/testkomodo.sh +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/Makefile +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/_templates/layout.html +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/conf.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/contributing.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/history.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/index.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/make.bat +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/overview.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/grav_subs_maps.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/merge_unrst_files.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/prtvol2csv.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/ri_wellmod.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/runeclipse.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/docs/usage.rst +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/setup.cfg +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/bjobsusers/bjobsusers.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/casegen_upcars/model.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/casegen_upcars/udf.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/check_swatinit/check_swatinit.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/check_swatinit/plotter.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/CASEGEN_UPCARS +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/CHECK_SWATINIT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/CSV2OFMVOL +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/CSV_STACK +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/ECLCOMPRESS +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/ECLDIFF2ROFF +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/ECLGRID2ROFF +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/ECLINIT2ROFF +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/ECLRST2ROFF +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/INTERP_RELPERM +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/MERGE_RFT_ERTOBS +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/MERGE_UNRST_FILES +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/OFMVOL2CSV +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/PARAMS2CSV +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/PRTVOL2CSV +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/RI_WELLMOD +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/SUNSCH +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/config_jobs/WELLTEST_DPDS +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/convert_grid_format/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv2ofmvol/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv2ofmvol/csv2ofmvol.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv_merge/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/csv_stack/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclcompress/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclcompress/eclcompress.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/ecldiff2roff/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclgrid2roff/eclgrid2roff.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclinit2roff/eclinit2roff.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/eclrst2roff/eclrst2roff.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmu_copy_revision/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmuobs/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmuobs/parsers.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/fmuobs/writers.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/grav_subs_maps/__init__.py +0 -0
- {subscript-1.6.1/src/subscript/hook_implementations → subscript-1.7.0/src/subscript/grav_subs_points}/__init__.py +0 -0
- {subscript-1.6.1/src/subscript/interp_relperm → subscript-1.7.0/src/subscript/hook_implementations}/__init__.py +0 -0
- {subscript-1.6.1/src/subscript/merge_rft_ertobs → subscript-1.7.0/src/subscript/interp_relperm}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/interp_relperm/interp_relperm.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/duf +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/nosim +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.6.1/src/subscript/merge_unrst_files → subscript-1.7.0/src/subscript/merge_rft_ertobs}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +0 -0
- {subscript-1.6.1/src/subscript/ofmvol2csv → subscript-1.7.0/src/subscript/merge_unrst_files}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/merge_unrst_files/merge_unrst_files.py +0 -0
- {subscript-1.6.1/src/subscript/pack_sim → subscript-1.7.0/src/subscript/ofmvol2csv}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
- {subscript-1.6.1/src/subscript/params2csv → subscript-1.7.0/src/subscript/pack_sim}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/pack_sim/pack_sim.py +0 -0
- {subscript-1.6.1/src/subscript/presentvalue → subscript-1.7.0/src/subscript/params2csv}/__init__.py +0 -0
- {subscript-1.6.1/src/subscript/prtvol2csv → subscript-1.7.0/src/subscript/presentvalue}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/presentvalue/presentvalue.py +0 -0
- {subscript-1.6.1/src/subscript/restartthinner → subscript-1.7.0/src/subscript/prtvol2csv}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/prtvol2csv/prtvol2csv.py +0 -0
- {subscript-1.6.1/src/subscript/ri_wellmod → subscript-1.7.0/src/subscript/restartthinner}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/restartthinner/restartthinner.py +0 -0
- {subscript-1.6.1/src/subscript/rmsecl_volumetrics → subscript-1.7.0/src/subscript/ri_wellmod}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/ri_wellmod/ri_wellmod.py +0 -0
- {subscript-1.6.1/src/subscript/sector2fluxnum → subscript-1.7.0/src/subscript/rmsecl_volumetrics}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
- {subscript-1.6.1/src/subscript/summaryplot → subscript-1.7.0/src/subscript/sector2fluxnum}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/completions.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/flux_obj.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/flux_util.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.6.1/src/subscript/sunsch → subscript-1.7.0/src/subscript/summaryplot}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/summaryplot/summaryplot.py +0 -0
- {subscript-1.6.1/src/subscript/sw_model_utilities → subscript-1.7.0/src/subscript/sunsch}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sunsch/sunsch.py +0 -0
- {subscript-1.6.1/src/subscript/vfp2csv → subscript-1.7.0/src/subscript/sw_model_utilities}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
- {subscript-1.6.1/src/subscript/welltest_dpds → subscript-1.7.0/src/subscript/vfp2csv}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/vfp2csv/vfp2csv.py +0 -0
- {subscript-1.6.1/tests → subscript-1.7.0/src/subscript/welltest_dpds}/__init__.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript/welltest_dpds/welltest_dpds.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/rms/README +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_docs.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/ert-doc.csv +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/ert-doc.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/ert-doc.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_fmuobs/ri-obs.csv +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_gravity/HIST.EGRID +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_gravity/HIST.INIT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_gravity/HIST.UNRST +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_gravity/seabed.gri +0 -0
- /subscript-1.6.1/tests/testdata_gravity/station_coordinates.txt → /subscript-1.7.0/tests/testdata_gravity/station_coordinates.csv +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_unrst_files/HIST.UNRST +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_merge_unrst_files/PRED.UNRST +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/config.yml +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.6.1 → subscript-1.7.0}/tests/testdata_sunsch/options3.sch +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0
|
|
4
4
|
Summary: Equinor's collection of subsurface reservoir modelling scripts
|
|
5
5
|
Author-email: Equinor <rnyb@equinor.com>
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -701,10 +701,11 @@ License-File: LICENSE
|
|
|
701
701
|
Requires-Dist: resdata
|
|
702
702
|
Requires-Dist: res2df
|
|
703
703
|
Requires-Dist: ert
|
|
704
|
+
Requires-Dist: ert>=10.2.0b13
|
|
704
705
|
Requires-Dist: fmu-tools
|
|
705
706
|
Requires-Dist: matplotlib
|
|
706
707
|
Requires-Dist: numpy<2
|
|
707
|
-
Requires-Dist: opm>=
|
|
708
|
+
Requires-Dist: opm>=2023.04
|
|
708
709
|
Requires-Dist: pandas
|
|
709
710
|
Requires-Dist: pyscal
|
|
710
711
|
Requires-Dist: pyyaml
|
|
@@ -730,7 +731,7 @@ Requires-Dist: types-python-dateutil; extra == "tests"
|
|
|
730
731
|
Provides-Extra: docs
|
|
731
732
|
Requires-Dist: autoapi; extra == "docs"
|
|
732
733
|
Requires-Dist: sphinx; extra == "docs"
|
|
733
|
-
Requires-Dist: sphinx-argparse
|
|
734
|
+
Requires-Dist: sphinx-argparse; extra == "docs"
|
|
734
735
|
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
|
|
735
736
|
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
736
737
|
Requires-Dist: sphinx-togglebutton; extra == "docs"
|
|
@@ -39,10 +39,11 @@ dependencies = [
|
|
|
39
39
|
"resdata",
|
|
40
40
|
"res2df",
|
|
41
41
|
"ert",
|
|
42
|
+
"ert>=10.2.0b13",
|
|
42
43
|
"fmu-tools",
|
|
43
44
|
"matplotlib",
|
|
44
45
|
"numpy<2",
|
|
45
|
-
"opm>=
|
|
46
|
+
"opm>=2023.04",
|
|
46
47
|
"pandas",
|
|
47
48
|
"pyscal",
|
|
48
49
|
"pyyaml",
|
|
@@ -72,7 +73,7 @@ tests = [
|
|
|
72
73
|
docs = [
|
|
73
74
|
"autoapi",
|
|
74
75
|
"sphinx",
|
|
75
|
-
"sphinx-argparse
|
|
76
|
+
"sphinx-argparse",
|
|
76
77
|
"sphinx-autodoc-typehints",
|
|
77
78
|
"sphinx-copybutton",
|
|
78
79
|
"sphinx-togglebutton",
|
|
@@ -97,6 +98,7 @@ ecldiff2roff = "subscript.ecldiff2roff.ecldiff2roff:main"
|
|
|
97
98
|
fmu_copy_revision = "subscript.fmu_copy_revision.fmu_copy_revision:main"
|
|
98
99
|
fmuobs = "subscript.fmuobs.fmuobs:main"
|
|
99
100
|
grav_subs_maps = "subscript.grav_subs_maps.grav_subs_maps:main"
|
|
101
|
+
grav_subs_points = "subscript.grav_subs_points.grav_subs_points:main"
|
|
100
102
|
interp_relperm = "subscript.interp_relperm.interp_relperm:main"
|
|
101
103
|
merge_rft_ertobs = "subscript.merge_rft_ertobs.merge_rft_ertobs:main"
|
|
102
104
|
merge_unrst_files = "subscript.merge_unrst_files.merge_unrst_files:main"
|
|
@@ -7,9 +7,9 @@ import re
|
|
|
7
7
|
import sys
|
|
8
8
|
from typing import Dict, List, Optional
|
|
9
9
|
|
|
10
|
+
import ert
|
|
10
11
|
import pandas as pd
|
|
11
12
|
from ert.config import ErtScript
|
|
12
|
-
from ert.shared.plugins.plugin_manager import hook_implementation # type: ignore
|
|
13
13
|
|
|
14
14
|
from subscript import __version__, getLogger
|
|
15
15
|
from subscript.eclcompress.eclcompress import glob_patterns
|
|
@@ -317,7 +317,7 @@ def csv_merge_main(
|
|
|
317
317
|
logger.info(" - Finished writing to %s", output)
|
|
318
318
|
|
|
319
319
|
|
|
320
|
-
@
|
|
320
|
+
@ert.plugin(name="subscript")
|
|
321
321
|
def legacy_ertscript_workflow(config):
|
|
322
322
|
"""Hook the CsvMerge class into ERT with the name CSV_MERGE,
|
|
323
323
|
and inject documentation"""
|
|
@@ -8,9 +8,9 @@ import sys
|
|
|
8
8
|
import warnings
|
|
9
9
|
from typing import Pattern
|
|
10
10
|
|
|
11
|
+
import ert
|
|
11
12
|
import pandas as pd
|
|
12
13
|
from ert.config import ErtScript
|
|
13
|
-
from ert.shared.plugins.plugin_manager import hook_implementation # type: ignore
|
|
14
14
|
|
|
15
15
|
from subscript import __version__, getLogger
|
|
16
16
|
|
|
@@ -334,7 +334,7 @@ def csv_stack(
|
|
|
334
334
|
return dframe.reset_index(drop=True)
|
|
335
335
|
|
|
336
336
|
|
|
337
|
-
@
|
|
337
|
+
@ert.plugin(name="subscript")
|
|
338
338
|
def legacy_ertscript_workflow(config) -> None:
|
|
339
339
|
"""Hook the CsvStack class into ERT with the name CSV_STACK,
|
|
340
340
|
and inject documentation"""
|
|
@@ -9,10 +9,10 @@ import sys
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Optional, Tuple, Union
|
|
11
11
|
|
|
12
|
+
import ert
|
|
12
13
|
import pandas as pd
|
|
13
14
|
import yaml
|
|
14
15
|
from ert.config import ErtScript
|
|
15
|
-
from ert.shared.plugins.plugin_manager import hook_implementation # type: ignore
|
|
16
16
|
|
|
17
17
|
from subscript import __version__, getLogger
|
|
18
18
|
from subscript.fmuobs.parsers import (
|
|
@@ -456,7 +456,7 @@ class FmuObs(ErtScript):
|
|
|
456
456
|
fmuobs(**vars(parsed_args))
|
|
457
457
|
|
|
458
458
|
|
|
459
|
-
@
|
|
459
|
+
@ert.plugin(name="subscript")
|
|
460
460
|
def legacy_ertscript_workflow(config):
|
|
461
461
|
"""A hook for usage of this script in an ERT workflow,
|
|
462
462
|
using the legacy hook format."""
|
|
@@ -4,7 +4,7 @@ import os
|
|
|
4
4
|
import sys
|
|
5
5
|
from datetime import date
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any, Dict, List, Optional
|
|
7
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
8
8
|
|
|
9
9
|
import xtgeo
|
|
10
10
|
import yaml
|
|
@@ -32,6 +32,8 @@ simulation output (EGRID, INIT and UNRST files).
|
|
|
32
32
|
|
|
33
33
|
The script reads flow simulation results and a yaml configuration file specifying input
|
|
34
34
|
and calculation parameters. Output is surfaces in irap binary format.
|
|
35
|
+
For configuration of the yaml config file, see:
|
|
36
|
+
https://fmu-docs.equinor.com/docs/subscript/scripts/grav_subs_maps.html
|
|
35
37
|
"""
|
|
36
38
|
|
|
37
39
|
EPILOGUE = """
|
|
@@ -57,25 +59,28 @@ CATEGORY = "modelling.reservoir"
|
|
|
57
59
|
EXAMPLES = """
|
|
58
60
|
.. code-block:: console
|
|
59
61
|
|
|
60
|
-
FORWARD_MODEL GRAV_SUBS_MAPS(<UNRST_FILE>=<ECLBASE>.UNRST, <
|
|
62
|
+
FORWARD_MODEL GRAV_SUBS_MAPS(<UNRST_FILE>=<ECLBASE>.UNRST, <GRAVMAPS_CONFIG>=grav_subs_maps.yml)
|
|
63
|
+
FORWARD_MODEL GRAV_SUBS_MAPS(<UNRST_FILE>=<ECLBASE>.UNRST, <GRAVMAPS_CONFIG>=grav_subs_maps.yml, <OUTPUT_DIR>=share/results/maps)
|
|
64
|
+
FORWARD_MODEL GRAV_SUBS_MAPS(<UNRST_FILE>=<ECLBASE>.UNRST, <GRAVMAPS_CONFIG>=grav_subs_maps.yml, <ROOT_PATH>=<CONFIG_PATH>/../../gravity/input/, <OUTPUT_DIR>=share/results/maps)
|
|
61
65
|
|
|
62
66
|
|
|
63
67
|
where ``ECLBASE`` is already defined in your ERT config, pointing to the flowsimulator
|
|
64
68
|
basename relative to ``RUNPATH``, grav_subs_maps.yml is a YAML file defining
|
|
65
|
-
the inputs and modelling parameters and ``
|
|
66
|
-
|
|
67
|
-
relative paths in the
|
|
69
|
+
the inputs and modelling parameters and ``OUTPUT_DIR`` is the path to the output folder.
|
|
70
|
+
If not specified OUTPUT_DIR will be defaulted to "./".
|
|
71
|
+
``ROOT_PATH`` is the root path assumed for any relative paths in the yaml config file.
|
|
72
|
+
This is optional and defaulted to "./".
|
|
68
73
|
|
|
69
74
|
The directory to export maps to must exist.
|
|
70
75
|
""" # noqa
|
|
71
76
|
|
|
72
77
|
|
|
73
|
-
class
|
|
74
|
-
diffdates: List[
|
|
78
|
+
class GravMapsInput(BaseModel):
|
|
79
|
+
diffdates: List[Tuple[date, date]]
|
|
75
80
|
seabed_map: FilePath
|
|
76
81
|
|
|
77
82
|
|
|
78
|
-
class
|
|
83
|
+
class GravMapsCalc(BaseModel):
|
|
79
84
|
poisson_ratio: Annotated[float, Field(strict=True, ge=0, le=0.5)]
|
|
80
85
|
coarsening: Optional[Annotated[int, Field(strict=True, ge=1)]] = None
|
|
81
86
|
phases: List[str]
|
|
@@ -90,8 +95,8 @@ class GravCalc(BaseModel):
|
|
|
90
95
|
|
|
91
96
|
|
|
92
97
|
class GravMapsConfig(BaseModel):
|
|
93
|
-
input:
|
|
94
|
-
calculations:
|
|
98
|
+
input: GravMapsInput
|
|
99
|
+
calculations: GravMapsCalc
|
|
95
100
|
|
|
96
101
|
|
|
97
102
|
def get_parser() -> argparse.ArgumentParser:
|
|
@@ -151,8 +156,6 @@ def main() -> None:
|
|
|
151
156
|
sys.exit("No such file:" + args.configfile)
|
|
152
157
|
config = yaml.safe_load(Path(args.configfile).read_text(encoding="utf8"))
|
|
153
158
|
|
|
154
|
-
# cfg = GravMapsConfig.model_validate(config).model_dump()
|
|
155
|
-
|
|
156
159
|
if not Path(args.outputdir).exists():
|
|
157
160
|
sys.exit("Output folder does not exist:" + args.outputdir)
|
|
158
161
|
if not Path(args.UNRSTfile).exists():
|
|
@@ -173,10 +176,10 @@ def prepend_root_path_to_relative_files(
|
|
|
173
176
|
|
|
174
177
|
Args:
|
|
175
178
|
cfg: grav_subs_maps configuration dictionary
|
|
176
|
-
root_path:
|
|
179
|
+
root_path: A relative or absolute path to be prepended
|
|
177
180
|
|
|
178
181
|
Returns:
|
|
179
|
-
Modified configuration for
|
|
182
|
+
Modified configuration for grav_subs_maps
|
|
180
183
|
"""
|
|
181
184
|
if (
|
|
182
185
|
"input" in cfg
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
from datetime import date
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
8
|
+
|
|
9
|
+
import pandas as pd
|
|
10
|
+
import yaml
|
|
11
|
+
from pydantic import BaseModel, Field, FilePath, field_validator
|
|
12
|
+
from resdata.gravimetry import ResdataGrav, ResdataSubsidence
|
|
13
|
+
from resdata.grid import Grid
|
|
14
|
+
from resdata.resfile import ResdataFile
|
|
15
|
+
from typing_extensions import Annotated
|
|
16
|
+
|
|
17
|
+
import subscript
|
|
18
|
+
|
|
19
|
+
logger = subscript.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
# Constant for subsidence modelling, not influencing results
|
|
22
|
+
# since subsidence is calculated from porevolume change RPORV
|
|
23
|
+
# therefore defaulted
|
|
24
|
+
DUMMY_YOUNGS = 10
|
|
25
|
+
|
|
26
|
+
PREFIX_POINTS = "all" # calculation is cumulative over all zones
|
|
27
|
+
EXTENSION_POINTS = ".txt" # extension for points in roxar points format
|
|
28
|
+
PREFIX_GENDATA = ""
|
|
29
|
+
EXTENSION_GENDATA = "_1.txt" # extension for points to Ert GENDATA
|
|
30
|
+
|
|
31
|
+
DESCRIPTION = """
|
|
32
|
+
Modelling gravity change and subsidence based on flow simulation
|
|
33
|
+
output (EGRID, INIT and UNRST files) for a list of locations (
|
|
34
|
+
bencmark stations) at seabed.
|
|
35
|
+
|
|
36
|
+
The script reads flow simulation results and a yaml configuration file
|
|
37
|
+
specifying input and calculation parameters.
|
|
38
|
+
For configuration of the yaml config file, see:
|
|
39
|
+
https://fmu-docs.equinor.com/docs/subscript/scripts/grav_subs_points.html
|
|
40
|
+
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
EPILOGUE = """
|
|
44
|
+
.. code-block:: yaml
|
|
45
|
+
|
|
46
|
+
# Example config file for grav_subs_points
|
|
47
|
+
|
|
48
|
+
input:
|
|
49
|
+
- [2020-07-01, 2018-01-01] # Difference date to model. Must exist in UNRST file.
|
|
50
|
+
|
|
51
|
+
stations: # Path to files with station coordinates to model for each difference years
|
|
52
|
+
grav:
|
|
53
|
+
"2020_2018": station_coordinates.csv
|
|
54
|
+
subs:
|
|
55
|
+
"2020_2018": station_coordinates.csv
|
|
56
|
+
|
|
57
|
+
calculations:
|
|
58
|
+
poisson_ratio: 0.45 # For subsidence calulcations, used in Geertsma model
|
|
59
|
+
phases: ["gas", "oil","water", "total"] # One pointset for each phase specified
|
|
60
|
+
|
|
61
|
+
.. code-block:: plaintext
|
|
62
|
+
|
|
63
|
+
The file with station coordinates should be on .csv format and contain headers
|
|
64
|
+
as specified in this example:
|
|
65
|
+
|
|
66
|
+
bm_id;utmx;utmy;depth;area
|
|
67
|
+
1;462632.692871;5930050.419434;200.000000;WL
|
|
68
|
+
2;464438.063965;5932652.277710;200.000000;CH
|
|
69
|
+
3;462924.737793;5933448.764526;200.000000;CH
|
|
70
|
+
4;459977.734863;5935121.387695;200.000000;NH
|
|
71
|
+
5;462247.045000;5934298.281000;200.000000;CH
|
|
72
|
+
6;461517.610352;5933448.764526;200.000000;CN
|
|
73
|
+
7;463933.621582;5931643.393677;200.000000;CS
|
|
74
|
+
8a;463429.180176;5935068.288086;200.000000;EL
|
|
75
|
+
9b;460561.825684;5936608.163086;200.000000;CH
|
|
76
|
+
10;460482.177246;5931723.042358;200.000000;WL
|
|
77
|
+
|
|
78
|
+
bm_id: Name of the bencmark location.
|
|
79
|
+
utmx: UTM X for the bencmark location [m]
|
|
80
|
+
utmy: UTM Y for the bencmark location [m]
|
|
81
|
+
depth: Seabed depth for benchmark location [m TVD MSL]
|
|
82
|
+
area: An area identifier that can be used for grouping in visualisations
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
CATEGORY = "modelling.reservoir"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
EXAMPLES = """
|
|
91
|
+
.. code-block:: console
|
|
92
|
+
|
|
93
|
+
FORWARD_MODEL GRAV_SUBS_POINTS(<UNRST_FILE=<ECLBASE>.UNRST, <GRAVPOINTS_CONFIG>=grav_subs_points.yml)
|
|
94
|
+
FORWARD_MODEL GRAV_SUBS_POINTS(<UNRST_FILE=<ECLBASE>.UNRST, <GRAVPOINTS_CONFIG>=<CONFIG_PATH>/../input/config/grav_subs_points.yml, <OUTPUT_DIR>=share/results/points)
|
|
95
|
+
FORWARD_MODEL GRAV_SUBS_POINTS(<UNRST_FILE=<ECLBASE>.UNRST, <GRAVPOINTS_CONFIG>=grav_subs_points.yml, <ROOT_PATH>=<CONFIG_PATH>/../../gravity/input, <OUTPUT_DIR>=share/results/points)
|
|
96
|
+
|
|
97
|
+
where ``ECLBASE`` is already defined in your ERT config, pointing to the flowsimulator
|
|
98
|
+
basename relative to ``RUNPATH``, grav_subs_points.yml is a YAML file defining
|
|
99
|
+
the inputs and modelling parameters and ``OUTPUT_DIR`` is the path to the output folder.
|
|
100
|
+
If not specified OUTPUT_DIR will be defaulted to "./".
|
|
101
|
+
``ROOT_PATH`` is the root path assumed for any relative paths in the yaml config file.
|
|
102
|
+
This is optional and defaulted to "./".
|
|
103
|
+
|
|
104
|
+
The directory to export point files to must exist.
|
|
105
|
+
""" # noqa
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class GravPointsInput(BaseModel):
|
|
109
|
+
diffdates: List[Tuple[date, date]]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class GravPointsStations(BaseModel):
|
|
113
|
+
grav: Dict[str, FilePath]
|
|
114
|
+
subs: Dict[str, FilePath]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class GravPointsCalc(BaseModel):
|
|
118
|
+
poisson_ratio: Annotated[float, Field(strict=True, ge=0, le=0.5)]
|
|
119
|
+
phases: List[str]
|
|
120
|
+
|
|
121
|
+
@field_validator("phases")
|
|
122
|
+
@classmethod
|
|
123
|
+
def check_phases(cls, phases: List[str]) -> List[str]:
|
|
124
|
+
allowed_phases = ["oil", "gas", "water", "total"]
|
|
125
|
+
for item in phases:
|
|
126
|
+
assert item in allowed_phases, f"allowed phases are {str(allowed_phases)}"
|
|
127
|
+
return phases
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class GravPointsConfig(BaseModel):
|
|
131
|
+
input: GravPointsInput
|
|
132
|
+
stations: GravPointsStations
|
|
133
|
+
calculations: GravPointsCalc
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def get_parser() -> argparse.ArgumentParser:
|
|
137
|
+
"""Function to create the argument parser that is going to be served to the user.
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
argparse.ArgumentParser: The argument parser to be served
|
|
141
|
+
|
|
142
|
+
"""
|
|
143
|
+
parser = argparse.ArgumentParser(
|
|
144
|
+
prog="grav_subs_points.py",
|
|
145
|
+
description=DESCRIPTION,
|
|
146
|
+
epilog=EPILOGUE,
|
|
147
|
+
formatter_class=argparse.RawTextHelpFormatter,
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
parser.add_argument("UNRSTfile", type=str, help="Path to flowsimulator UNRST file")
|
|
151
|
+
parser.add_argument(
|
|
152
|
+
"-c",
|
|
153
|
+
"-C",
|
|
154
|
+
"--configfile",
|
|
155
|
+
type=str,
|
|
156
|
+
help="Name of YAML config file",
|
|
157
|
+
required=True,
|
|
158
|
+
)
|
|
159
|
+
parser.add_argument(
|
|
160
|
+
"-r",
|
|
161
|
+
"--root-path",
|
|
162
|
+
type=str,
|
|
163
|
+
default="./",
|
|
164
|
+
help=("Root path assumed for relative paths" " in config file."),
|
|
165
|
+
)
|
|
166
|
+
parser.add_argument(
|
|
167
|
+
"-o",
|
|
168
|
+
"--outputdir",
|
|
169
|
+
type=str,
|
|
170
|
+
help="Path to directory for output maps. Directory must exist.",
|
|
171
|
+
default="./",
|
|
172
|
+
)
|
|
173
|
+
parser.add_argument(
|
|
174
|
+
"--version",
|
|
175
|
+
action="version",
|
|
176
|
+
version="%(prog)s (subscript version " + subscript.__version__ + ")",
|
|
177
|
+
)
|
|
178
|
+
return parser
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def main() -> None:
|
|
182
|
+
"""Invocated from the command line, parsing command line arguments"""
|
|
183
|
+
parser = get_parser()
|
|
184
|
+
args = parser.parse_args()
|
|
185
|
+
|
|
186
|
+
logger.setLevel(logging.INFO)
|
|
187
|
+
|
|
188
|
+
# parse the config file
|
|
189
|
+
if not Path(args.configfile).exists():
|
|
190
|
+
sys.exit("No such file:" + args.configfile)
|
|
191
|
+
config = yaml.safe_load(Path(args.configfile).read_text(encoding="utf8"))
|
|
192
|
+
|
|
193
|
+
if not Path(args.outputdir).exists():
|
|
194
|
+
sys.exit("Output folder does not exist:" + args.outputdir)
|
|
195
|
+
if not Path(args.UNRSTfile).exists():
|
|
196
|
+
sys.exit("UNRST file does not exist:" + args.UNRSTfile)
|
|
197
|
+
|
|
198
|
+
main_gravpoints(args.UNRSTfile, config, Path(args.root_path), Path(args.outputdir))
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def prepend_root_path_to_relative_files(
|
|
202
|
+
cfg: Dict[str, Any], root_path: Path
|
|
203
|
+
) -> Dict[str, Any]:
|
|
204
|
+
"""Prepend root_path to relative files found paths in a configuration
|
|
205
|
+
dictionary.
|
|
206
|
+
|
|
207
|
+
Note: This function is before prior to validation of the configuration!
|
|
208
|
+
|
|
209
|
+
Will look for filename in the keys "grav" and "subs"
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
cfg: grav_subs_points configuration dictionary
|
|
213
|
+
root_path: A relative or absolute path to be prepended
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
Modified configuration for grav_subs_points
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
stations = cfg.get("stations")
|
|
220
|
+
|
|
221
|
+
if stations is None:
|
|
222
|
+
return cfg
|
|
223
|
+
|
|
224
|
+
for key in ["grav", "subs"]:
|
|
225
|
+
if key in stations and isinstance(stations[key], dict):
|
|
226
|
+
for item in stations[key]:
|
|
227
|
+
if os.path.isabs(stations[key][item]):
|
|
228
|
+
continue
|
|
229
|
+
|
|
230
|
+
stations[key][item] = str(root_path / Path(stations[key][item]))
|
|
231
|
+
|
|
232
|
+
return cfg
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def export_grav_points_xyz(act_stations, phase, diff_date, out_folder) -> None:
|
|
236
|
+
"""Write points in xyz format, roxar.FileFormat.RMS_POINTS"""
|
|
237
|
+
logger.info(f"Exporting simulated gravity values to {out_folder} as xyz points")
|
|
238
|
+
outfile = (
|
|
239
|
+
PREFIX_POINTS
|
|
240
|
+
+ "--"
|
|
241
|
+
+ "delta_gravity_"
|
|
242
|
+
+ phase
|
|
243
|
+
+ "--"
|
|
244
|
+
+ diff_date[0]
|
|
245
|
+
+ "_"
|
|
246
|
+
+ diff_date[1]
|
|
247
|
+
+ EXTENSION_POINTS
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
with open(os.path.join(out_folder, outfile), "w") as file:
|
|
251
|
+
for index, row in act_stations.iterrows():
|
|
252
|
+
file.write(
|
|
253
|
+
f"{row['utmx']:.3f} {row['utmy']:.3f} "
|
|
254
|
+
f"{row['dgsim_'+phase+'_'+diff_date[0]+'_'+diff_date[1]]:.3f} \n"
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
def export_grav_points_ert(act_stations, diff_date, out_folder) -> None:
|
|
259
|
+
"""Export for ert for each diffdate, only total, not per phase"""
|
|
260
|
+
logger.info(f"Exporting simulated gravity values to {out_folder} for use by ert")
|
|
261
|
+
part = act_stations["dgsim_total_" + diff_date[0] + "_" + diff_date[1]]
|
|
262
|
+
outfile = (
|
|
263
|
+
PREFIX_GENDATA
|
|
264
|
+
+ "gravity_"
|
|
265
|
+
+ diff_date[0]
|
|
266
|
+
+ "_"
|
|
267
|
+
+ diff_date[1]
|
|
268
|
+
+ EXTENSION_GENDATA
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
output_path = Path(out_folder) / outfile
|
|
272
|
+
part.to_csv(output_path, header=None, index=None)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def export_subs_points_xyz(act_stations, diff_date, out_folder) -> None:
|
|
276
|
+
"""Write points in xyz format, roxar.FileFormat.RMS_POINTS"""
|
|
277
|
+
logger.info(f"Exporting simulated subsidence values to {out_folder} as xyz points")
|
|
278
|
+
outfile = (
|
|
279
|
+
PREFIX_POINTS
|
|
280
|
+
+ "--"
|
|
281
|
+
+ "subsidence"
|
|
282
|
+
+ "--"
|
|
283
|
+
+ diff_date[0]
|
|
284
|
+
+ "_"
|
|
285
|
+
+ diff_date[1]
|
|
286
|
+
+ EXTENSION_POINTS
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
with open(os.path.join(out_folder, outfile), "w") as file:
|
|
290
|
+
for index, row in act_stations.iterrows():
|
|
291
|
+
file.write(
|
|
292
|
+
f"{row['utmx']:.3f} {row['utmy']:.3f} "
|
|
293
|
+
f"{row['subsidence_'+diff_date[0]+'_'+diff_date[1]]:.3f}\n"
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
def export_subs_points_ert(act_stations, diff_date, out_folder) -> None:
|
|
298
|
+
"""Export for ert for each diffdate"""
|
|
299
|
+
logger.info(f"Exporting simulated subsidence values to {out_folder} for use by ert")
|
|
300
|
+
part = act_stations["subsidence_" + diff_date[0] + "_" + diff_date[1]]
|
|
301
|
+
outfile = (
|
|
302
|
+
PREFIX_GENDATA
|
|
303
|
+
+ "subsidence_"
|
|
304
|
+
+ diff_date[0]
|
|
305
|
+
+ "_"
|
|
306
|
+
+ diff_date[1]
|
|
307
|
+
+ EXTENSION_GENDATA
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
output_path = Path(out_folder) / outfile
|
|
311
|
+
part.to_csv(output_path, header=None, index=None)
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def main_gravpoints(
|
|
315
|
+
unrst_file: str,
|
|
316
|
+
config: Dict[str, Any],
|
|
317
|
+
root_path: Optional[Path],
|
|
318
|
+
output_folder: Path,
|
|
319
|
+
) -> None:
|
|
320
|
+
"""
|
|
321
|
+
Process a configuration, model gravity and subsidence points and write to disk.
|
|
322
|
+
|
|
323
|
+
Args:
|
|
324
|
+
resdata: Path to flow simulation UNRST file
|
|
325
|
+
config: Configuration for modelling
|
|
326
|
+
"""
|
|
327
|
+
|
|
328
|
+
if root_path is not None:
|
|
329
|
+
config = prepend_root_path_to_relative_files(config, root_path)
|
|
330
|
+
|
|
331
|
+
cfg = GravPointsConfig.model_validate(config).model_dump()
|
|
332
|
+
|
|
333
|
+
# Read inputs and calculation parameters
|
|
334
|
+
input_diffdates = cfg["input"]["diffdates"]
|
|
335
|
+
station_files = cfg["stations"]
|
|
336
|
+
phases = cfg["calculations"]["phases"]
|
|
337
|
+
poisson_ratio = cfg["calculations"]["poisson_ratio"]
|
|
338
|
+
|
|
339
|
+
if isinstance(unrst_file, str):
|
|
340
|
+
restart_file = unrst_file[:-6] + ".UNRST"
|
|
341
|
+
egrid_file = unrst_file[:-6] + ".EGRID"
|
|
342
|
+
init_file = unrst_file[:-6] + ".INIT"
|
|
343
|
+
grid = Grid(egrid_file)
|
|
344
|
+
init = ResdataFile(init_file)
|
|
345
|
+
rest = ResdataFile(restart_file)
|
|
346
|
+
|
|
347
|
+
restart_index = {}
|
|
348
|
+
|
|
349
|
+
# From restart datetime format to YYYYMMDD as key
|
|
350
|
+
for i, restart_date in enumerate(rest.dates):
|
|
351
|
+
restart_index[restart_date.strftime("%Y%m%d")] = i
|
|
352
|
+
|
|
353
|
+
diffdates = []
|
|
354
|
+
# Convert dates from datetime format to strings
|
|
355
|
+
logger.info("Starting modelling for diffdates: ")
|
|
356
|
+
for diffdate in input_diffdates:
|
|
357
|
+
diff = [diffdate[0].strftime("%Y%m%d"), diffdate[1].strftime("%Y%m%d")]
|
|
358
|
+
diffdates.append(diff)
|
|
359
|
+
logger.info(f"{diffdate[0]}_{diffdate[1]}")
|
|
360
|
+
|
|
361
|
+
grav = ResdataGrav(grid, init)
|
|
362
|
+
subsidence = ResdataSubsidence(grid, init)
|
|
363
|
+
|
|
364
|
+
added_dates = []
|
|
365
|
+
|
|
366
|
+
for diffdate in diffdates:
|
|
367
|
+
for singledate in diffdate: # base and monitor
|
|
368
|
+
rsb = rest.restartView(0)
|
|
369
|
+
if singledate not in added_dates:
|
|
370
|
+
if singledate in restart_index:
|
|
371
|
+
rsb = rest.restartView(restart_index[singledate])
|
|
372
|
+
grav.add_survey_RFIP(singledate, rsb)
|
|
373
|
+
subsidence.add_survey_PRESSURE(singledate, rsb)
|
|
374
|
+
added_dates.append(singledate)
|
|
375
|
+
else:
|
|
376
|
+
logger.error(
|
|
377
|
+
f"Date {singledate} specified but not found in UNRST file."
|
|
378
|
+
)
|
|
379
|
+
sys.exit(1)
|
|
380
|
+
|
|
381
|
+
phase_code = {"oil": 1, "gas": 2, "water": 4, "total": 7}
|
|
382
|
+
|
|
383
|
+
# Gravity
|
|
384
|
+
for diffdate in diffdates:
|
|
385
|
+
diff_year = str(diffdate[0][0:4]) + "_" + str(diffdate[1][0:4])
|
|
386
|
+
active_stations = pd.read_csv(station_files["grav"][diff_year], sep=";")
|
|
387
|
+
|
|
388
|
+
for phase in phases:
|
|
389
|
+
logger.info(
|
|
390
|
+
f"Calculating delta gravity at bencmark stations "
|
|
391
|
+
f"from {phase} for {diffdate[0]}_{diffdate[1]}"
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
gravity_values = [
|
|
395
|
+
grav.eval(
|
|
396
|
+
diffdate[1], diffdate[0], (x, y, z), phase_mask=phase_code[phase]
|
|
397
|
+
)
|
|
398
|
+
for x, y, z in zip(
|
|
399
|
+
active_stations["utmx"],
|
|
400
|
+
active_stations["utmy"],
|
|
401
|
+
active_stations["depth"],
|
|
402
|
+
)
|
|
403
|
+
]
|
|
404
|
+
active_stations[
|
|
405
|
+
"dgsim_" + phase + "_" + diffdate[0] + "_" + diffdate[1]
|
|
406
|
+
] = gravity_values
|
|
407
|
+
|
|
408
|
+
# Export for each diffdate, all phases specified in config
|
|
409
|
+
export_grav_points_xyz(active_stations, phase, diffdate, output_folder)
|
|
410
|
+
|
|
411
|
+
# Export to ert for each diffdate, only total, not per phase
|
|
412
|
+
export_grav_points_ert(active_stations, diffdate, output_folder)
|
|
413
|
+
|
|
414
|
+
# Subsidence
|
|
415
|
+
|
|
416
|
+
for diffdate in diffdates:
|
|
417
|
+
diff_year = str(diffdate[0][0:4]) + "_" + str(diffdate[1][0:4])
|
|
418
|
+
active_stations = pd.read_csv(station_files["subs"][diff_year], sep=";")
|
|
419
|
+
|
|
420
|
+
subs_values = [
|
|
421
|
+
subsidence.eval_geertsma_rporv(
|
|
422
|
+
diffdate[1], diffdate[0], (x, y, z), DUMMY_YOUNGS, poisson_ratio, z
|
|
423
|
+
)
|
|
424
|
+
for x, y, z in zip(
|
|
425
|
+
active_stations["utmx"],
|
|
426
|
+
active_stations["utmy"],
|
|
427
|
+
active_stations["depth"],
|
|
428
|
+
)
|
|
429
|
+
]
|
|
430
|
+
|
|
431
|
+
active_stations["subsidence" + "_" + diffdate[0] + "_" + diffdate[1]] = [
|
|
432
|
+
i * 100 for i in subs_values
|
|
433
|
+
] # from m to cm
|
|
434
|
+
|
|
435
|
+
export_subs_points_xyz(active_stations, diffdate, output_folder)
|
|
436
|
+
|
|
437
|
+
export_subs_points_ert(active_stations, diffdate, output_folder)
|
|
438
|
+
|
|
439
|
+
logger.info(
|
|
440
|
+
f"Done; All gravity and subsidence points written to folder: "
|
|
441
|
+
f"{str(output_folder)}",
|
|
442
|
+
)
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
if __name__ == "__main__":
|
|
446
|
+
main()
|