subscript 1.1.0__tar.gz → 1.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {subscript-1.1.0 → subscript-1.1.1}/PKG-INFO +2 -2
- {subscript-1.1.0 → subscript-1.1.1}/docs/overview.rst +0 -1
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.rst +1 -1
- {subscript-1.1.0 → subscript-1.1.1}/pyproject.toml +1 -2
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/check_swatinit/check_swatinit.py +17 -17
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/fmuobs/parsers.py +5 -1
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/interp_relperm/interp_relperm.py +3 -3
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/presentvalue/presentvalue.py +3 -3
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/prtvol2csv/prtvol2csv.py +3 -3
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/completions.py +2 -2
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/version.py +2 -2
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/PKG-INFO +2 -2
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/SOURCES.txt +0 -8
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/entry_points.txt +0 -1
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/requires.txt +1 -1
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_check_swatinit_simulators.py +3 -3
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_interp_relperm.py +2 -2
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_presentvalue.py +4 -4
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.csv +1 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.obs +9 -1
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.yml +4 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/ri-obs.csv +1 -0
- subscript-1.1.0/docs/scripts/co2_containment.rst +0 -71
- subscript-1.1.0/docs/scripts/images/co2_containment_A.png +0 -0
- subscript-1.1.0/src/subscript/co2_containment/calculate.py +0 -205
- subscript-1.1.0/src/subscript/co2_containment/co2_calculation.py +0 -921
- subscript-1.1.0/src/subscript/co2_containment/co2_containment.py +0 -333
- subscript-1.1.0/tests/__init__.py +0 -0
- subscript-1.1.0/tests/test_co2_calculate.py +0 -301
- subscript-1.1.0/tests/test_co2_containment.py +0 -154
- {subscript-1.1.0 → subscript-1.1.1}/.flake8 +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/.github/workflows/codecov.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/.github/workflows/publish.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/.github/workflows/subscript.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/.gitignore +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/.pylintrc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/LICENSE +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/README.md +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/SECURITY.md +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/ci/testkomodo.sh +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/Makefile +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/_templates/layout.html +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/conf.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/contributing.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/history.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/index.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/make.bat +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/ri_wellmod.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/runeclipse.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/runrms.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/docs/usage.rst +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/setup.cfg +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/bjobsusers/bjobsusers.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/casegen_upcars/model.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/check_swatinit/plotter.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/CHECK_SWATINIT +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV2OFMVOL +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV_STACK +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLCOMPRESS +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLDIFF2ROFF +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLGRID2ROFF +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLINIT2ROFF +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLRST2ROFF +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/INTERP_RELPERM +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/MERGE_RFT_ERTOBS +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/OFMVOL2CSV +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/PARAMS2CSV +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/PRTVOL2CSV +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/RI_WELLMOD +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/SUNSCH +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/config_jobs/WELLTEST_DPDS +0 -0
- {subscript-1.1.0/src/subscript/co2_containment → subscript-1.1.1/src/subscript/convert_grid_format}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
- {subscript-1.1.0/src/subscript/convert_grid_format → subscript-1.1.1/src/subscript/csv2ofmvol}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/csv2ofmvol/csv2ofmvol.py +0 -0
- {subscript-1.1.0/src/subscript/csv2ofmvol → subscript-1.1.1/src/subscript/csv_merge}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/csv_merge/csv_merge.py +0 -0
- {subscript-1.1.0/src/subscript/csv_merge → subscript-1.1.1/src/subscript/csv_stack}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/csv_stack/csv_stack.py +0 -0
- {subscript-1.1.0/src/subscript/csv_stack → subscript-1.1.1/src/subscript/eclcompress}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/eclcompress/eclcompress.py +0 -0
- {subscript-1.1.0/src/subscript/eclcompress → subscript-1.1.1/src/subscript/ecldiff2roff}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/eclgrid2roff/eclgrid2roff.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/eclinit2roff/eclinit2roff.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/eclrst2roff/eclrst2roff.py +0 -0
- {subscript-1.1.0/src/subscript/ecldiff2roff → subscript-1.1.1/src/subscript/fmu_copy_revision}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
- {subscript-1.1.0/src/subscript/fmu_copy_revision → subscript-1.1.1/src/subscript/fmuobs}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/fmuobs/fmuobs.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/fmuobs/writers.py +0 -0
- {subscript-1.1.0/src/subscript/fmuobs → subscript-1.1.1/src/subscript/hook_implementations}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/hook_implementations/jobs.py +0 -0
- {subscript-1.1.0/src/subscript/hook_implementations → subscript-1.1.1/src/subscript/interp_relperm}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/duf +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/nosim +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.1.0/src/subscript/interp_relperm → subscript-1.1.1/src/subscript/merge_rft_ertobs}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +0 -0
- {subscript-1.1.0/src/subscript/merge_rft_ertobs → subscript-1.1.1/src/subscript/ofmvol2csv}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
- {subscript-1.1.0/src/subscript/ofmvol2csv → subscript-1.1.1/src/subscript/pack_sim}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/pack_sim/pack_sim.py +0 -0
- {subscript-1.1.0/src/subscript/pack_sim → subscript-1.1.1/src/subscript/params2csv}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/params2csv/params2csv.py +0 -0
- {subscript-1.1.0/src/subscript/params2csv → subscript-1.1.1/src/subscript/presentvalue}/__init__.py +0 -0
- {subscript-1.1.0/src/subscript/presentvalue → subscript-1.1.1/src/subscript/prtvol2csv}/__init__.py +0 -0
- {subscript-1.1.0/src/subscript/prtvol2csv → subscript-1.1.1/src/subscript/restartthinner}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/restartthinner/restartthinner.py +0 -0
- {subscript-1.1.0/src/subscript/restartthinner → subscript-1.1.1/src/subscript/ri_wellmod}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/ri_wellmod/ri_wellmod.py +0 -0
- {subscript-1.1.0/src/subscript/ri_wellmod → subscript-1.1.1/src/subscript/rmsecl_volumetrics}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
- {subscript-1.1.0/src/subscript/rmsecl_volumetrics → subscript-1.1.1/src/subscript/runrms}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/runrms/runrms.py +0 -0
- {subscript-1.1.0/src/subscript/runrms → subscript-1.1.1/src/subscript/sector2fluxnum}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_obj.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_util.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.1.0/src/subscript/sector2fluxnum → subscript-1.1.1/src/subscript/summaryplot}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/summaryplot/summaryplot.py +0 -0
- {subscript-1.1.0/src/subscript/summaryplot → subscript-1.1.1/src/subscript/sunsch}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sunsch/sunsch.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sunsch/time_vector.py +0 -0
- {subscript-1.1.0/src/subscript/sunsch → subscript-1.1.1/src/subscript/sw_model_utilities}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
- {subscript-1.1.0/src/subscript/sw_model_utilities → subscript-1.1.1/src/subscript/vfp2csv}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/vfp2csv/vfp2csv.py +0 -0
- {subscript-1.1.0/src/subscript/vfp2csv → subscript-1.1.1/src/subscript/welltest_dpds}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript/welltest_dpds/welltest_dpds.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.1.0/src/subscript/welltest_dpds → subscript-1.1.1/tests}/__init__.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/conftest.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/rms/README +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_bjobsusers.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_casegen_upcars.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_check_swatinit.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_convert_grid_format.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_csv2ofmvol.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_csv_merge.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_csv_stack.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_docs.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_eclcompress.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_ecldiff2roff.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_fmu_copy_revision.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_fmuobs.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_fmuobs_parsers.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_fmuobs_writers.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_hook_implementations.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_merge_rft_ertobs.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_ofmvol2csv.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_pack_sim.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_params2csv.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_prtvol2csv.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_restartthinner.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_ri_wellmod.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_rmsecl_volumetrics.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_runrms.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_sector2fluxnum.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_summaryplot.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_sunsch.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_sw_model_utilities.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_vfp2csv.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/test_welltest_dpds.py +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_runrms/runrms.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/config_v2.yml +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.1.0 → subscript-1.1.1}/tests/testdata_sunsch/options3.sch +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.1
|
|
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
|
|
@@ -699,7 +699,7 @@ Description-Content-Type: text/markdown
|
|
|
699
699
|
License-File: LICENSE
|
|
700
700
|
Requires-Dist: configsuite
|
|
701
701
|
Requires-Dist: resdata
|
|
702
|
-
Requires-Dist:
|
|
702
|
+
Requires-Dist: res2df
|
|
703
703
|
Requires-Dist: ert>=2.38.0b7
|
|
704
704
|
Requires-Dist: fmu-tools
|
|
705
705
|
Requires-Dist: matplotlib
|
|
@@ -130,5 +130,5 @@ file has been supplied defining the map from zones and regions to FIPNUM:
|
|
|
130
130
|
See also
|
|
131
131
|
--------
|
|
132
132
|
|
|
133
|
-
* https://equinor.github.io/
|
|
133
|
+
* https://equinor.github.io/res2df/usage/fipreports.html can be used to extract
|
|
134
134
|
more information from the PRT files.
|
|
@@ -37,7 +37,7 @@ dynamic = ["version"]
|
|
|
37
37
|
dependencies = [
|
|
38
38
|
"configsuite",
|
|
39
39
|
"resdata",
|
|
40
|
-
"
|
|
40
|
+
"res2df",
|
|
41
41
|
"ert>=2.38.0b7",
|
|
42
42
|
"fmu-tools",
|
|
43
43
|
"matplotlib",
|
|
@@ -91,7 +91,6 @@ Documentation = "https://equinor.github.io/subscript"
|
|
|
91
91
|
bjobsusers = "subscript.bjobsusers.bjobsusers:main"
|
|
92
92
|
casegen_upcars = "subscript.casegen_upcars.casegen_upcars:main"
|
|
93
93
|
check_swatinit = "subscript.check_swatinit.check_swatinit:main"
|
|
94
|
-
co2_containment = "subscript.co2_containment.co2_containment:main"
|
|
95
94
|
convert_grid_format = "subscript.convert_grid_format.convert_grid_format:main"
|
|
96
95
|
csv2ofmvol = "subscript.csv2ofmvol.csv2ofmvol:main"
|
|
97
96
|
csv_merge = "subscript.csv_merge.csv_merge:main"
|
|
@@ -3,9 +3,9 @@ import argparse
|
|
|
3
3
|
import sys
|
|
4
4
|
from typing import Any, Dict, List
|
|
5
5
|
|
|
6
|
-
import ecl2df
|
|
7
6
|
import numpy as np
|
|
8
7
|
import pandas as pd
|
|
8
|
+
import res2df
|
|
9
9
|
from matplotlib import pyplot
|
|
10
10
|
|
|
11
11
|
import subscript
|
|
@@ -58,7 +58,7 @@ def main() -> None:
|
|
|
58
58
|
if args.DATAFILE.endswith(".csv"):
|
|
59
59
|
qc_frame = pd.read_csv(args.DATAFILE)
|
|
60
60
|
else:
|
|
61
|
-
eclfiles =
|
|
61
|
+
eclfiles = res2df.ResdataFiles(args.DATAFILE)
|
|
62
62
|
|
|
63
63
|
# Fail hard if the deck is not suitable for this tool or
|
|
64
64
|
# give warnings/hints to the user:
|
|
@@ -102,11 +102,11 @@ def main() -> None:
|
|
|
102
102
|
pyplot.savefig(args.plotfile)
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def check_applicability(eclfiles:
|
|
105
|
+
def check_applicability(eclfiles: res2df.ResdataFiles) -> None:
|
|
106
106
|
"""Check that the input is relevant for usage with check_swatinit. This
|
|
107
107
|
function may raise exceptions, SystemExit or only give warnings"""
|
|
108
108
|
|
|
109
|
-
deck = eclfiles.
|
|
109
|
+
deck = eclfiles.get_deck()
|
|
110
110
|
|
|
111
111
|
init = eclfiles.get_initfile()
|
|
112
112
|
if (
|
|
@@ -212,7 +212,7 @@ def human_report_pc_scaling(qc_frame: pd.DataFrame) -> str:
|
|
|
212
212
|
return string
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
def make_qc_gridframe(eclfiles:
|
|
215
|
+
def make_qc_gridframe(eclfiles: res2df.ResdataFiles) -> pd.DataFrame:
|
|
216
216
|
"""Construct a dataframe with needed information for swatinit qc from an
|
|
217
217
|
Eclipse run.
|
|
218
218
|
|
|
@@ -220,7 +220,7 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
|
|
|
220
220
|
satfunc and equil merged in.
|
|
221
221
|
"""
|
|
222
222
|
|
|
223
|
-
grid_df =
|
|
223
|
+
grid_df = res2df.grid.df(
|
|
224
224
|
eclfiles,
|
|
225
225
|
vectors=[
|
|
226
226
|
# All of these are required.
|
|
@@ -242,14 +242,14 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
|
|
|
242
242
|
rstdates="first",
|
|
243
243
|
)
|
|
244
244
|
|
|
245
|
-
# Circumvent bug in
|
|
245
|
+
# Circumvent bug in res2df that will pick SWL from both INIT and restart file:
|
|
246
246
|
grid_df = grid_df.loc[:, ~grid_df.columns.duplicated()]
|
|
247
247
|
|
|
248
248
|
# Merge in PPCWMAX from the deck, it is not reported in binary output files:
|
|
249
|
-
if "PPCWMAX" in eclfiles.
|
|
249
|
+
if "PPCWMAX" in eclfiles.get_deck():
|
|
250
250
|
grid_df["PPCWMAX"] = ppcwmax_gridvector(eclfiles)
|
|
251
251
|
|
|
252
|
-
# This will be unneccessary from
|
|
252
|
+
# This will be unneccessary from res2df 0.13.0:
|
|
253
253
|
grid_df = grid_df.where(grid_df > -1e20 + 1e13)
|
|
254
254
|
|
|
255
255
|
if "SWL" not in grid_df:
|
|
@@ -257,7 +257,7 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
|
|
|
257
257
|
logger.warning("Consider adding FILLEPS to the PROPS section")
|
|
258
258
|
grid_df["SWL"] = 0.0
|
|
259
259
|
|
|
260
|
-
deck = eclfiles.
|
|
260
|
+
deck = eclfiles.get_deck()
|
|
261
261
|
if "SWATINIT" in deck:
|
|
262
262
|
swatinit_deckdata = deck["SWATINIT"][0][0].get_raw_data_list()
|
|
263
263
|
# This list includes non-active cells, we must map via GLOBAL_INDEX:
|
|
@@ -280,12 +280,12 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
|
|
|
280
280
|
del grid_df["SWATINIT_DECK"] # This is not needed
|
|
281
281
|
|
|
282
282
|
# Exposed to issues with endpoint scaling in peculiar decks:
|
|
283
|
-
satfunc_df =
|
|
283
|
+
satfunc_df = res2df.satfunc.df(eclfiles)
|
|
284
284
|
|
|
285
285
|
# Merge in the input pcmax pr. satnum for each cell:
|
|
286
286
|
grid_df = merge_pc_max(grid_df, satfunc_df)
|
|
287
287
|
|
|
288
|
-
grid_df = merge_equil(grid_df,
|
|
288
|
+
grid_df = merge_equil(grid_df, res2df.equil.df(eclfiles, keywords=["EQUIL"]))
|
|
289
289
|
|
|
290
290
|
grid_df = augment_grid_frame_qc_vectors(grid_df)
|
|
291
291
|
|
|
@@ -587,7 +587,7 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
|
|
|
587
587
|
return p_cap
|
|
588
588
|
|
|
589
589
|
|
|
590
|
-
def ppcwmax_gridvector(eclfiles:
|
|
590
|
+
def ppcwmax_gridvector(eclfiles: res2df.ResdataFiles) -> pd.Series:
|
|
591
591
|
"""Generate a vector of PPCWMAX data pr cell
|
|
592
592
|
|
|
593
593
|
PPCWMAX is pr. SATNUM in the input deck
|
|
@@ -596,11 +596,11 @@ def ppcwmax_gridvector(eclfiles: ecl2df.EclFiles) -> pd.Series:
|
|
|
596
596
|
eclfiles
|
|
597
597
|
|
|
598
598
|
Returns:
|
|
599
|
-
pd.Series, indexed according to
|
|
599
|
+
pd.Series, indexed according to res2df.grid.df(eclfiles)
|
|
600
600
|
"""
|
|
601
601
|
|
|
602
|
-
satnum_df =
|
|
603
|
-
deck = eclfiles.
|
|
602
|
+
satnum_df = res2df.grid.df(eclfiles, vectors="SATNUM")
|
|
603
|
+
deck = eclfiles.get_deck()
|
|
604
604
|
for satnum in satnum_df["SATNUM"].unique():
|
|
605
605
|
ppcwmax = deck["PPCWMAX"][satnum - 1][0].get_raw_data_list()[0]
|
|
606
606
|
satnum_df.loc[satnum_df["SATNUM"] == satnum, "PPCWMAX"] = ppcwmax
|
|
@@ -615,7 +615,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
615
615
|
assert "Z" in equil_df
|
|
616
616
|
assert "PRESSURE" in equil_df
|
|
617
617
|
|
|
618
|
-
# Be compatible with future change in
|
|
618
|
+
# Be compatible with future change in res2df:
|
|
619
619
|
equil_df.rename({"ACCURACY": "OIP_INIT"}, axis="columns", inplace=True)
|
|
620
620
|
|
|
621
621
|
contacts = list(set(["OWC", "GOC", "GWC"]).intersection(set(equil_df.columns)))
|
|
@@ -462,7 +462,11 @@ def resinsight_df2df(ri_dframe: pd.DataFrame) -> pd.DataFrame:
|
|
|
462
462
|
|
|
463
463
|
dframe = ri_dframe.copy()
|
|
464
464
|
dframe.rename({"VECTOR": "KEY"}, axis="columns", inplace=True)
|
|
465
|
-
dframe["LABEL"] =
|
|
465
|
+
dframe["LABEL"] = (
|
|
466
|
+
dframe["KEY"].astype(str)
|
|
467
|
+
+ "-"
|
|
468
|
+
+ (dframe.groupby("KEY").cumcount() + 1).astype(str)
|
|
469
|
+
)
|
|
466
470
|
dframe["CLASS"] = "SUMMARY_OBSERVATION"
|
|
467
471
|
if "DATE" in dframe:
|
|
468
472
|
dframe["DATE"] = pd.to_datetime(dframe["DATE"])
|
|
@@ -11,7 +11,7 @@ import pyscal
|
|
|
11
11
|
import yaml
|
|
12
12
|
from configsuite import MetaKeys as MK # lgtm [py/import-and-import-from]
|
|
13
13
|
from configsuite import types # lgtm [py/import-and-import-from]
|
|
14
|
-
from
|
|
14
|
+
from res2df import satfunc
|
|
15
15
|
|
|
16
16
|
import subscript
|
|
17
17
|
|
|
@@ -397,10 +397,10 @@ def main() -> None:
|
|
|
397
397
|
|
|
398
398
|
logger.setLevel(logging.INFO)
|
|
399
399
|
|
|
400
|
-
# Mute expected warnings from
|
|
400
|
+
# Mute expected warnings from res2df.inferdims, we get these
|
|
401
401
|
# because we don't tell the module how many SATNUMs there are in
|
|
402
402
|
# input files, which is slightly fragile for opm to parse.
|
|
403
|
-
logging.getLogger("
|
|
403
|
+
logging.getLogger("res2df.inferdims").setLevel(logging.ERROR)
|
|
404
404
|
|
|
405
405
|
# parse the config file
|
|
406
406
|
if not Path(args.configfile).exists():
|
|
@@ -5,9 +5,9 @@ import logging
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Dict, Optional
|
|
7
7
|
|
|
8
|
-
import ecl2df
|
|
9
8
|
import numpy as np
|
|
10
9
|
import pandas as pd
|
|
10
|
+
import res2df
|
|
11
11
|
import scipy.optimize
|
|
12
12
|
|
|
13
13
|
from subscript import __version__, getLogger
|
|
@@ -422,8 +422,8 @@ def get_yearly_summary(
|
|
|
422
422
|
vec.split(":")[0].endswith("T") for vec in [oilvector, gasvector, gasinjvector]
|
|
423
423
|
):
|
|
424
424
|
raise ValueError("Only cumulative Eclipse vectors can be used")
|
|
425
|
-
eclfiles =
|
|
426
|
-
sum_df =
|
|
425
|
+
eclfiles = res2df.ResdataFiles(eclfile)
|
|
426
|
+
sum_df = res2df.summary.df(
|
|
427
427
|
eclfiles, column_keys=[oilvector, gasvector, gasinjvector], time_index="yearly"
|
|
428
428
|
)
|
|
429
429
|
sum_df.rename(
|
|
@@ -7,8 +7,8 @@ import warnings
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import Optional
|
|
9
9
|
|
|
10
|
-
import ecl2df
|
|
11
10
|
import pandas as pd
|
|
11
|
+
import res2df
|
|
12
12
|
from fmu.tools.fipmapper.fipmapper import FipMapper
|
|
13
13
|
|
|
14
14
|
from subscript import __version__, getLogger
|
|
@@ -162,7 +162,7 @@ def currently_in_place_from_prt(
|
|
|
162
162
|
) -> pd.DataFrame:
|
|
163
163
|
"""Extracts currently-in-place volumes from a PRT file
|
|
164
164
|
|
|
165
|
-
This function uses
|
|
165
|
+
This function uses res2df.fipreports, and slices its
|
|
166
166
|
output for the purpose here.
|
|
167
167
|
|
|
168
168
|
Args:
|
|
@@ -174,7 +174,7 @@ def currently_in_place_from_prt(
|
|
|
174
174
|
Returns:
|
|
175
175
|
pd.DataFrame
|
|
176
176
|
"""
|
|
177
|
-
inplace_df =
|
|
177
|
+
inplace_df = res2df.fipreports.df(prt_file, fipname=fipname)
|
|
178
178
|
|
|
179
179
|
available_dates = inplace_df.sort_values("DATE")["DATE"].unique()
|
|
180
180
|
if date is None or date == "first":
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from
|
|
1
|
+
from res2df import ResdataFiles, compdat
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
def get_completion_list(ecl_data_file_name):
|
|
@@ -14,7 +14,7 @@ def get_completion_list(ecl_data_file_name):
|
|
|
14
14
|
List of completions associated to well names
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
ecl_file =
|
|
17
|
+
ecl_file = ResdataFiles(ecl_data_file_name)
|
|
18
18
|
compdat_df = compdat.df(ecl_file)
|
|
19
19
|
|
|
20
20
|
# Convert from ECL index
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.1
|
|
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
|
|
@@ -699,7 +699,7 @@ Description-Content-Type: text/markdown
|
|
|
699
699
|
License-File: LICENSE
|
|
700
700
|
Requires-Dist: configsuite
|
|
701
701
|
Requires-Dist: resdata
|
|
702
|
-
Requires-Dist:
|
|
702
|
+
Requires-Dist: res2df
|
|
703
703
|
Requires-Dist: ert>=2.38.0b7
|
|
704
704
|
Requires-Dist: fmu-tools
|
|
705
705
|
Requires-Dist: matplotlib
|
|
@@ -26,7 +26,6 @@ docs/_templates/layout.html
|
|
|
26
26
|
docs/scripts/bjobsusers.rst
|
|
27
27
|
docs/scripts/casegen_upcars.rst
|
|
28
28
|
docs/scripts/check_swatinit.rst
|
|
29
|
-
docs/scripts/co2_containment.rst
|
|
30
29
|
docs/scripts/convert_grid_format.rst
|
|
31
30
|
docs/scripts/csv2ofmvol.rst
|
|
32
31
|
docs/scripts/csv_merge.rst
|
|
@@ -62,7 +61,6 @@ docs/scripts/images/Workflow_sector2fluxnum.png
|
|
|
62
61
|
docs/scripts/images/casegen_upcars_geometry.png
|
|
63
62
|
docs/scripts/images/check_swatinit_scatter.png
|
|
64
63
|
docs/scripts/images/check_swatinit_volplot.png
|
|
65
|
-
docs/scripts/images/co2_containment_A.png
|
|
66
64
|
docs/scripts/images/ecl-swat-initialization.png
|
|
67
65
|
docs/scripts/images/make_check_swatinit_images.sh
|
|
68
66
|
docs/scripts/images/resinsight_wells_project_example.png
|
|
@@ -86,10 +84,6 @@ src/subscript/check_swatinit/check_swatinit.py
|
|
|
86
84
|
src/subscript/check_swatinit/constants.py
|
|
87
85
|
src/subscript/check_swatinit/pillarmodel.py
|
|
88
86
|
src/subscript/check_swatinit/plotter.py
|
|
89
|
-
src/subscript/co2_containment/__init__.py
|
|
90
|
-
src/subscript/co2_containment/calculate.py
|
|
91
|
-
src/subscript/co2_containment/co2_calculation.py
|
|
92
|
-
src/subscript/co2_containment/co2_containment.py
|
|
93
87
|
src/subscript/config_jobs/CHECK_SWATINIT
|
|
94
88
|
src/subscript/config_jobs/CSV2OFMVOL
|
|
95
89
|
src/subscript/config_jobs/CSV_STACK
|
|
@@ -183,8 +177,6 @@ tests/test_bjobsusers.py
|
|
|
183
177
|
tests/test_casegen_upcars.py
|
|
184
178
|
tests/test_check_swatinit.py
|
|
185
179
|
tests/test_check_swatinit_simulators.py
|
|
186
|
-
tests/test_co2_calculate.py
|
|
187
|
-
tests/test_co2_containment.py
|
|
188
180
|
tests/test_convert_grid_format.py
|
|
189
181
|
tests/test_csv2ofmvol.py
|
|
190
182
|
tests/test_csv_merge.py
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
bjobsusers = subscript.bjobsusers.bjobsusers:main
|
|
3
3
|
casegen_upcars = subscript.casegen_upcars.casegen_upcars:main
|
|
4
4
|
check_swatinit = subscript.check_swatinit.check_swatinit:main
|
|
5
|
-
co2_containment = subscript.co2_containment.co2_containment:main
|
|
6
5
|
convert_grid_format = subscript.convert_grid_format.convert_grid_format:main
|
|
7
6
|
csv2ofmvol = subscript.csv2ofmvol.csv2ofmvol:main
|
|
8
7
|
csv_merge = subscript.csv_merge.csv_merge:main
|
|
@@ -13,10 +13,10 @@ import subprocess
|
|
|
13
13
|
import time
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
|
|
16
|
-
import ecl2df
|
|
17
16
|
import numpy as np
|
|
18
17
|
import pandas as pd
|
|
19
18
|
import pytest
|
|
19
|
+
import res2df
|
|
20
20
|
|
|
21
21
|
from subscript.check_swatinit.check_swatinit import (
|
|
22
22
|
__HC_BELOW_FWL__,
|
|
@@ -85,7 +85,7 @@ def run_reservoir_simulator(simulator, resmodel, perform_qc=True):
|
|
|
85
85
|
raise AssertionError(f"reservoir simulator failed in {os.getcwd()}")
|
|
86
86
|
|
|
87
87
|
if perform_qc:
|
|
88
|
-
return make_qc_gridframe(
|
|
88
|
+
return make_qc_gridframe(res2df.ResdataFiles("FOO.DATA"))
|
|
89
89
|
return None
|
|
90
90
|
|
|
91
91
|
|
|
@@ -494,7 +494,7 @@ def test_swatinit_less_than_1_below_contact(simulator, tmp_path):
|
|
|
494
494
|
assert np.isclose(qc_frame["PC"], 0)
|
|
495
495
|
else:
|
|
496
496
|
# E100 will not report a PPCW in this case, libecl gives -1e20,
|
|
497
|
-
# which becomes a NaN through
|
|
497
|
+
# which becomes a NaN through res2df and then NaN columns are dropped.
|
|
498
498
|
if "PPCW" in qc_frame:
|
|
499
499
|
assert pd.isnull(qc_frame["PPCW"][0])
|
|
500
500
|
if "PC_SCALING" in qc_frame:
|
|
@@ -6,9 +6,9 @@ import configsuite
|
|
|
6
6
|
import pandas as pd
|
|
7
7
|
import pytest
|
|
8
8
|
import yaml
|
|
9
|
-
from ecl2df import satfunc
|
|
10
9
|
from pyscal import PyscalFactory
|
|
11
10
|
from pyscal.utils.testing import sat_table_str_ok
|
|
11
|
+
from res2df import satfunc
|
|
12
12
|
|
|
13
13
|
from subscript.interp_relperm import interp_relperm
|
|
14
14
|
|
|
@@ -201,7 +201,7 @@ def test_garbled_base_input(tmp_path):
|
|
|
201
201
|
|
|
202
202
|
def test_parse_satfunc_files():
|
|
203
203
|
"""Test that tables in Eclipse format can be converted
|
|
204
|
-
into dataframes (using
|
|
204
|
+
into dataframes (using res2df)"""
|
|
205
205
|
swoffn = TESTDATA / "swof_base.inc"
|
|
206
206
|
sgoffn = TESTDATA / "sgof_base.inc"
|
|
207
207
|
|
|
@@ -3,10 +3,10 @@ import shutil
|
|
|
3
3
|
import subprocess
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
import ecl2df
|
|
7
6
|
import numpy as np
|
|
8
7
|
import pandas as pd
|
|
9
8
|
import pytest
|
|
9
|
+
import res2df
|
|
10
10
|
from resdata.summary import Summary
|
|
11
11
|
|
|
12
12
|
from subscript.presentvalue import presentvalue
|
|
@@ -328,7 +328,7 @@ def test_no_gasinj(tmp_path):
|
|
|
328
328
|
)
|
|
329
329
|
smry["DATE"] = pd.to_datetime(smry["DATE"])
|
|
330
330
|
smry.set_index("DATE")
|
|
331
|
-
eclsum =
|
|
331
|
+
eclsum = res2df.summary.df2ressum(smry, "NOGASINJ")
|
|
332
332
|
Summary.fwrite(eclsum)
|
|
333
333
|
econ_df = presentvalue.prepare_econ_table(
|
|
334
334
|
oilprice=100, gasprice=0, usdtonok=10, discountrate=0
|
|
@@ -353,7 +353,7 @@ def test_no_gas(tmp_path):
|
|
|
353
353
|
)
|
|
354
354
|
smry["DATE"] = pd.to_datetime(smry["DATE"])
|
|
355
355
|
smry.set_index("DATE")
|
|
356
|
-
eclsum =
|
|
356
|
+
eclsum = res2df.summary.df2ressum(smry, "NOGAS")
|
|
357
357
|
Summary.fwrite(eclsum)
|
|
358
358
|
econ_df = presentvalue.prepare_econ_table(
|
|
359
359
|
oilprice=100, gasprice=0, usdtonok=10, discountrate=0
|
|
@@ -378,7 +378,7 @@ def test_no_oil(tmp_path):
|
|
|
378
378
|
)
|
|
379
379
|
smry["DATE"] = pd.to_datetime(smry["DATE"])
|
|
380
380
|
smry.set_index("DATE")
|
|
381
|
-
eclsum =
|
|
381
|
+
eclsum = res2df.summary.df2ressum(smry, "NOOIL")
|
|
382
382
|
Summary.fwrite(eclsum)
|
|
383
383
|
econ_df = presentvalue.prepare_econ_table(
|
|
384
384
|
oilprice=0, gasprice=10, usdtonok=10, discountrate=0
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
CLASS,LABEL,VALUE,ERROR,DATE,KEY,RESTART,DAYS,OBS,FIELD,I,J,K,SOURCE,DATA,OBS_FILE,INDEX_LIST,ERROR_MODE,ERROR_MIN,SEGMENT,START,STOP
|
|
2
2
|
SUMMARY_OBSERVATION,SEP_TEST_2005,100.0,5.0,2005-08-21,GOPR:BRENT,,,,,,,,,,,,,,,,
|
|
3
|
+
SUMMARY_OBSERVATION,SEP_TEST_2006,100.0,5.0,2006-08-21,GOPR:BRENT,,,,,,,,,,,,,,,,
|
|
3
4
|
SUMMARY_OBSERVATION,SEP_TEST_RST_2005,100.0,5.0,,GOPR:BRENT,42.0,,,,,,,,,,,,,,,
|
|
4
5
|
SUMMARY_OBSERVATION,SEP_TEST_2008,213.0,10.0,,GOPR:NESS,,911.0,,,,,,,,,,,,,,
|
|
5
6
|
BLOCK_OBSERVATION,RFT_2006,100.0,5.0,2006-10-22,,,,P1,PRESSURE,1.0,1.0,1.0,,,,,,,,,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
-- These observation data are copied from the ERT docs,
|
|
1
|
+
-- These observation data are mainly copied from the ERT docs,
|
|
2
2
|
-- https://github.com/equinor/ert/blob/master/docs/rst/manual/reference/configuration/observations.rst
|
|
3
3
|
|
|
4
4
|
SUMMARY_OBSERVATION SEP_TEST_2005
|
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
DATE = 21/08/2005;
|
|
9
9
|
KEY = GOPR:BRENT;
|
|
10
10
|
};
|
|
11
|
+
-- Duplicate key, but unique label and date.
|
|
12
|
+
SUMMARY_OBSERVATION SEP_TEST_2006
|
|
13
|
+
{
|
|
14
|
+
VALUE = 100.0;
|
|
15
|
+
ERROR = 5;
|
|
16
|
+
DATE = 21/08/2006;
|
|
17
|
+
KEY = GOPR:BRENT;
|
|
18
|
+
};
|
|
11
19
|
|
|
12
20
|
-- Giving the observation time in terms of restart number.
|
|
13
21
|
SUMMARY_OBSERVATION SEP_TEST_RST_2005
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
CO2_CONTAINMENT
|
|
3
|
-
===============
|
|
4
|
-
|
|
5
|
-
.. argparse::
|
|
6
|
-
:module: subscript.co2_containment.co2_containment
|
|
7
|
-
:func: get_parser
|
|
8
|
-
:prog: co2_containment
|
|
9
|
-
|
|
10
|
-
Calculates the amount of CO\ :sub:`2` inside and outside a given perimeter, and separates the result per formation and phase (gas/dissolved). Output is a table on CSV format.
|
|
11
|
-
|
|
12
|
-
The most common use of the script is to calculate CO\ :sub:`2` mass. Options for calculation type input:
|
|
13
|
-
|
|
14
|
-
* "mass": CO\ :sub:`2` mass (kg), the default option
|
|
15
|
-
* "cell_volume": CO\ :sub:`2` volume (m\ :sup:`3`), a simple calculation finding the grid cells with some CO\ :sub:`2` and summing the volume of those cells
|
|
16
|
-
* "actual_volume": CO\ :sub:`2` volume (m\ :sup:`3`), an attempt to calculate a more precise representative volume of CO\ :sub:`2`
|
|
17
|
-
|
|
18
|
-
CSV file example
|
|
19
|
-
----------------------------
|
|
20
|
-
Example of how the output CSV file is structured:
|
|
21
|
-
|
|
22
|
-
.. list-table:: CSV file of CO2 mass (kg)
|
|
23
|
-
:widths: 25 25 25 25 25 25 25 25 25 25
|
|
24
|
-
:header-rows: 1
|
|
25
|
-
|
|
26
|
-
* - date
|
|
27
|
-
- total
|
|
28
|
-
- total_contained
|
|
29
|
-
- total_outside
|
|
30
|
-
- total_hazardous
|
|
31
|
-
- total_gas
|
|
32
|
-
- total_aqueous
|
|
33
|
-
- gas_contained
|
|
34
|
-
- aqueous_contained
|
|
35
|
-
- . . .
|
|
36
|
-
* - 2020-01-01
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
* - 2060-01-01
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
* - 2100-01-01
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
.. figure:: images/co2_containment_A.png
|
|
68
|
-
:align: center
|
|
69
|
-
:width: 40%
|
|
70
|
-
|
|
71
|
-
Example plot of CO\ :sub:`2` mass made from a CO\ :sub:`2` containment output CSV file
|
|
Binary file
|