subscript 1.0.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.0.0 → subscript-1.1.1}/.github/workflows/subscript.yml +2 -6
- {subscript-1.0.0 → subscript-1.1.1}/PKG-INFO +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/docs/overview.rst +0 -1
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/eclcompress.rst +1 -3
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.rst +1 -1
- {subscript-1.0.0 → subscript-1.1.1}/pyproject.toml +12 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/check_swatinit.py +17 -17
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclcompress/eclcompress.py +12 -47
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/parsers.py +5 -1
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/interp_relperm/interp_relperm.py +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/presentvalue/presentvalue.py +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/prtvol2csv/prtvol2csv.py +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/restartthinner/restartthinner.py +13 -13
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/completions.py +2 -2
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_obj.py +14 -14
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_util.py +7 -7
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/sector2fluxnum.py +13 -13
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/summaryplot/summaryplot.py +13 -13
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/version.py +2 -2
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/welltest_dpds/welltest_dpds.py +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/PKG-INFO +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/SOURCES.txt +0 -9
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/entry_points.txt +0 -1
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/requires.txt +2 -2
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_check_swatinit_simulators.py +3 -3
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_eclcompress.py +0 -39
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_interp_relperm.py +2 -2
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_presentvalue.py +8 -8
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_summaryplot.py +2 -2
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_welltest_dpds.py +6 -6
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.csv +1 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.obs +9 -1
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.yml +4 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ri-obs.csv +1 -0
- subscript-1.0.0/docs/scripts/co2_containment.rst +0 -71
- subscript-1.0.0/docs/scripts/images/co2_containment_A.png +0 -0
- subscript-1.0.0/setup.py +0 -15
- subscript-1.0.0/src/subscript/co2_containment/calculate.py +0 -205
- subscript-1.0.0/src/subscript/co2_containment/co2_calculation.py +0 -921
- subscript-1.0.0/src/subscript/co2_containment/co2_containment.py +0 -333
- subscript-1.0.0/tests/__init__.py +0 -0
- subscript-1.0.0/tests/test_co2_calculate.py +0 -301
- subscript-1.0.0/tests/test_co2_containment.py +0 -154
- {subscript-1.0.0 → subscript-1.1.1}/.flake8 +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/.github/workflows/codecov.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/.github/workflows/publish.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/.gitignore +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/.pylintrc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/LICENSE +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/README.md +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/SECURITY.md +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/ci/testkomodo.sh +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/Makefile +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/_templates/layout.html +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/conf.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/contributing.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/history.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/index.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/make.bat +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ri_wellmod.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/runeclipse.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/runrms.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/docs/usage.rst +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/setup.cfg +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/bjobsusers/bjobsusers.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/model.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/plotter.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CHECK_SWATINIT +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV2OFMVOL +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV_STACK +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLCOMPRESS +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLDIFF2ROFF +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLGRID2ROFF +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLINIT2ROFF +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLRST2ROFF +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/INTERP_RELPERM +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/MERGE_RFT_ERTOBS +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/OFMVOL2CSV +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/PARAMS2CSV +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/PRTVOL2CSV +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/RI_WELLMOD +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/SUNSCH +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/WELLTEST_DPDS +0 -0
- {subscript-1.0.0/src/subscript/co2_containment → subscript-1.1.1/src/subscript/convert_grid_format}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
- {subscript-1.0.0/src/subscript/convert_grid_format → subscript-1.1.1/src/subscript/csv2ofmvol}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv2ofmvol/csv2ofmvol.py +0 -0
- {subscript-1.0.0/src/subscript/csv2ofmvol → subscript-1.1.1/src/subscript/csv_merge}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv_merge/csv_merge.py +0 -0
- {subscript-1.0.0/src/subscript/csv_merge → subscript-1.1.1/src/subscript/csv_stack}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv_stack/csv_stack.py +0 -0
- {subscript-1.0.0/src/subscript/csv_stack → subscript-1.1.1/src/subscript/eclcompress}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.0.0/src/subscript/eclcompress → subscript-1.1.1/src/subscript/ecldiff2roff}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclgrid2roff/eclgrid2roff.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclinit2roff/eclinit2roff.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclrst2roff/eclrst2roff.py +0 -0
- {subscript-1.0.0/src/subscript/ecldiff2roff → subscript-1.1.1/src/subscript/fmu_copy_revision}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
- {subscript-1.0.0/src/subscript/fmu_copy_revision → subscript-1.1.1/src/subscript/fmuobs}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/fmuobs.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/writers.py +0 -0
- {subscript-1.0.0/src/subscript/fmuobs → subscript-1.1.1/src/subscript/hook_implementations}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/hook_implementations/jobs.py +0 -0
- {subscript-1.0.0/src/subscript/hook_implementations → subscript-1.1.1/src/subscript/interp_relperm}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/duf +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/nosim +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.0.0/src/subscript/interp_relperm → subscript-1.1.1/src/subscript/merge_rft_ertobs}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +0 -0
- {subscript-1.0.0/src/subscript/merge_rft_ertobs → subscript-1.1.1/src/subscript/ofmvol2csv}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
- {subscript-1.0.0/src/subscript/ofmvol2csv → subscript-1.1.1/src/subscript/pack_sim}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/pack_sim/pack_sim.py +0 -0
- {subscript-1.0.0/src/subscript/pack_sim → subscript-1.1.1/src/subscript/params2csv}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/params2csv/params2csv.py +0 -0
- {subscript-1.0.0/src/subscript/params2csv → subscript-1.1.1/src/subscript/presentvalue}/__init__.py +0 -0
- {subscript-1.0.0/src/subscript/presentvalue → subscript-1.1.1/src/subscript/prtvol2csv}/__init__.py +0 -0
- {subscript-1.0.0/src/subscript/prtvol2csv → subscript-1.1.1/src/subscript/restartthinner}/__init__.py +0 -0
- {subscript-1.0.0/src/subscript/restartthinner → subscript-1.1.1/src/subscript/ri_wellmod}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ri_wellmod/ri_wellmod.py +0 -0
- {subscript-1.0.0/src/subscript/ri_wellmod → subscript-1.1.1/src/subscript/rmsecl_volumetrics}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
- {subscript-1.0.0/src/subscript/rmsecl_volumetrics → subscript-1.1.1/src/subscript/runrms}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/runrms/runrms.py +0 -0
- {subscript-1.0.0/src/subscript/runrms → subscript-1.1.1/src/subscript/sector2fluxnum}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
- {subscript-1.0.0/src/subscript/sector2fluxnum → subscript-1.1.1/src/subscript/summaryplot}/__init__.py +0 -0
- {subscript-1.0.0/src/subscript/summaryplot → subscript-1.1.1/src/subscript/sunsch}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sunsch/sunsch.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sunsch/time_vector.py +0 -0
- {subscript-1.0.0/src/subscript/sunsch → subscript-1.1.1/src/subscript/sw_model_utilities}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
- {subscript-1.0.0/src/subscript/sw_model_utilities → subscript-1.1.1/src/subscript/vfp2csv}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript/vfp2csv/vfp2csv.py +0 -0
- {subscript-1.0.0/src/subscript/vfp2csv → subscript-1.1.1/src/subscript/welltest_dpds}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.0.0/src/subscript/welltest_dpds → subscript-1.1.1/tests}/__init__.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/conftest.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/README +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_bjobsusers.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_casegen_upcars.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_check_swatinit.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_convert_grid_format.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv2ofmvol.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv_merge.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv_stack.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_docs.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_ecldiff2roff.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmu_copy_revision.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs_parsers.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs_writers.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_hook_implementations.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_merge_rft_ertobs.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_ofmvol2csv.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_pack_sim.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_params2csv.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_prtvol2csv.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_restartthinner.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_ri_wellmod.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_rmsecl_volumetrics.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_runrms.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_sector2fluxnum.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_sunsch.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_sw_model_utilities.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/test_vfp2csv.py +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_runrms/runrms.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/config_v2.yml +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/options3.sch +0 -0
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
|
|
67
67
|
- name: Lint with black
|
|
68
68
|
if: ${{ always() }}
|
|
69
|
-
run: black --check
|
|
69
|
+
run: black --check src tests
|
|
70
70
|
|
|
71
71
|
- name: Lint with flake8
|
|
72
72
|
if: ${{ always() }}
|
|
@@ -78,11 +78,7 @@ jobs:
|
|
|
78
78
|
|
|
79
79
|
- name: Run tests
|
|
80
80
|
if: ${{ always() }}
|
|
81
|
-
run:
|
|
82
|
-
pytest -n auto tests
|
|
83
|
-
# Check that repository is untainted by test code:
|
|
84
|
-
git status --porcelain
|
|
85
|
-
test -z "$(git status --porcelain)"
|
|
81
|
+
run: pytest -n auto tests
|
|
86
82
|
|
|
87
83
|
- name: Syntax check documentation
|
|
88
84
|
if: ${{ always() }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 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
|
|
@@ -698,8 +698,8 @@ Requires-Python: >=3.8
|
|
|
698
698
|
Description-Content-Type: text/markdown
|
|
699
699
|
License-File: LICENSE
|
|
700
700
|
Requires-Dist: configsuite
|
|
701
|
-
Requires-Dist:
|
|
702
|
-
Requires-Dist:
|
|
701
|
+
Requires-Dist: resdata
|
|
702
|
+
Requires-Dist: res2df
|
|
703
703
|
Requires-Dist: ert>=2.38.0b7
|
|
704
704
|
Requires-Dist: fmu-tools
|
|
705
705
|
Requires-Dist: matplotlib
|
|
@@ -76,9 +76,7 @@ Notes
|
|
|
76
76
|
compressed file into account.
|
|
77
77
|
- Eclipse loading time of the compressed file is probably reduced by the
|
|
78
78
|
same factor as the compression factor.
|
|
79
|
-
- Only known compressable keywords are compressed
|
|
80
|
-
to specify particular keywords or a regex instead this can be provided
|
|
81
|
-
directly through the command line.
|
|
79
|
+
- Only known compressable keywords are compressed.
|
|
82
80
|
|
|
83
81
|
|
|
84
82
|
Possible improvements
|
|
@@ -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.
|
|
@@ -36,8 +36,8 @@ classifiers = [
|
|
|
36
36
|
dynamic = ["version"]
|
|
37
37
|
dependencies = [
|
|
38
38
|
"configsuite",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
39
|
+
"resdata",
|
|
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"
|
|
@@ -125,6 +124,16 @@ CsvStack = "subscript.csv_stack.csv_stack"
|
|
|
125
124
|
FmuObs = "subscript.fmuobs.fmuobs"
|
|
126
125
|
Params2Csv = "subscript.params2csv.params2csv"
|
|
127
126
|
|
|
127
|
+
[tool.setuptools]
|
|
128
|
+
script-files = [
|
|
129
|
+
"src/subscript/legacy/duf",
|
|
130
|
+
"src/subscript/legacy/eclmanual",
|
|
131
|
+
"src/subscript/legacy/ertwatch",
|
|
132
|
+
"src/subscript/legacy/list_rms_usage",
|
|
133
|
+
"src/subscript/legacy/nosim",
|
|
134
|
+
"src/subscript/legacy/runeclipse",
|
|
135
|
+
]
|
|
136
|
+
|
|
128
137
|
[tool.black]
|
|
129
138
|
line-length = 88
|
|
130
139
|
|
|
@@ -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)))
|
|
@@ -6,12 +6,10 @@ import glob
|
|
|
6
6
|
import itertools
|
|
7
7
|
import logging
|
|
8
8
|
import os
|
|
9
|
-
import re
|
|
10
9
|
import shutil
|
|
11
10
|
import textwrap
|
|
12
|
-
import warnings
|
|
13
11
|
from pathlib import Path
|
|
14
|
-
from typing import List,
|
|
12
|
+
from typing import List, Tuple, Union
|
|
15
13
|
|
|
16
14
|
import subscript
|
|
17
15
|
|
|
@@ -79,7 +77,6 @@ def eclcompress(
|
|
|
79
77
|
files: Union[str, List[str]],
|
|
80
78
|
keeporiginal: bool = False,
|
|
81
79
|
dryrun: bool = False,
|
|
82
|
-
eclkw_regexp: Optional[str] = None,
|
|
83
80
|
) -> int:
|
|
84
81
|
"""Run-length encode a set of grdecl files.
|
|
85
82
|
|
|
@@ -89,8 +86,7 @@ def eclcompress(
|
|
|
89
86
|
files: Filenames to be compressed
|
|
90
87
|
keeporiginal: Whether to copy the original to a backup file
|
|
91
88
|
dryrun: If true, only print compression efficiency
|
|
92
|
-
|
|
93
|
-
Default is [A-Z]{2-8}$
|
|
89
|
+
|
|
94
90
|
Returns:
|
|
95
91
|
Number of bytes saved by compression.
|
|
96
92
|
"""
|
|
@@ -98,12 +94,6 @@ def eclcompress(
|
|
|
98
94
|
if not isinstance(files, list):
|
|
99
95
|
files = [files] # List with one element
|
|
100
96
|
|
|
101
|
-
if eclkw_regexp:
|
|
102
|
-
warnings.warn(
|
|
103
|
-
"Providing a keyword regex will be removed in Komodo 2023.11.",
|
|
104
|
-
DeprecationWarning,
|
|
105
|
-
)
|
|
106
|
-
|
|
107
97
|
totalsavings = 0
|
|
108
98
|
|
|
109
99
|
for filename in files:
|
|
@@ -137,7 +127,7 @@ def eclcompress(
|
|
|
137
127
|
# Index the list of strings (the file contents) by the line numbers
|
|
138
128
|
# where Eclipse keywords start, and where the first data record of the keyword
|
|
139
129
|
# ends (compression is not attempted in record 2 and onwards for any keyword)
|
|
140
|
-
keywordsets = find_keyword_sets(filelines
|
|
130
|
+
keywordsets = find_keyword_sets(filelines)
|
|
141
131
|
|
|
142
132
|
if not keywordsets:
|
|
143
133
|
logger.info(
|
|
@@ -299,9 +289,7 @@ def compress_multiple_keywordsets(
|
|
|
299
289
|
return compressedlines
|
|
300
290
|
|
|
301
291
|
|
|
302
|
-
def find_keyword_sets(
|
|
303
|
-
filelines: List[str], eclkw_regexp: Optional[Union[str, Pattern[str]]] = None
|
|
304
|
-
) -> List[Tuple[int, int]]:
|
|
292
|
+
def find_keyword_sets(filelines: List[str]) -> List[Tuple[int, int]]:
|
|
305
293
|
"""Parse list of strings, looking for Eclipse data sets that we want.
|
|
306
294
|
|
|
307
295
|
Example:
|
|
@@ -335,9 +323,6 @@ def find_keyword_sets(
|
|
|
335
323
|
|
|
336
324
|
Args:
|
|
337
325
|
filelines: Eclipse deck lines (not necessarily complete decks)
|
|
338
|
-
eclkw_regexp: Regular expression for locating Eclipse keywords.
|
|
339
|
-
Default is None, in which it uses a predefined allowlist of
|
|
340
|
-
keywords
|
|
341
326
|
|
|
342
327
|
Return:
|
|
343
328
|
2-tuples, with start and end line indices for datasets to
|
|
@@ -346,26 +331,19 @@ def find_keyword_sets(
|
|
|
346
331
|
"""
|
|
347
332
|
keywordsets = []
|
|
348
333
|
kwstart = None
|
|
349
|
-
if eclkw_regexp:
|
|
350
|
-
eclkw_regexp = re.compile(eclkw_regexp)
|
|
351
334
|
|
|
352
335
|
for lineidx, line in enumerate(filelines):
|
|
353
336
|
line = line.strip()
|
|
354
337
|
if not line:
|
|
355
338
|
continue
|
|
356
|
-
if
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
kwstart = lineidx
|
|
365
|
-
if "/" in line:
|
|
366
|
-
keywordsets.append((kwstart, lineidx))
|
|
367
|
-
kwstart = None
|
|
368
|
-
continue
|
|
339
|
+
# Remove embracing quotes if in a multi-keyword
|
|
340
|
+
keyword = line.split(" ")[0].strip("'")
|
|
341
|
+
if keyword in ALLOWLIST_KEYWORDS:
|
|
342
|
+
kwstart = lineidx
|
|
343
|
+
if "/" in line:
|
|
344
|
+
keywordsets.append((kwstart, lineidx))
|
|
345
|
+
kwstart = None
|
|
346
|
+
continue
|
|
369
347
|
if kwstart is not None and line[0:2] == "--":
|
|
370
348
|
# This means we found a comment section within a data set
|
|
371
349
|
# In that case it is vital to preserve the current line
|
|
@@ -453,14 +431,6 @@ def get_parser() -> argparse.ArgumentParser:
|
|
|
453
431
|
"no files are specified on the command line."
|
|
454
432
|
),
|
|
455
433
|
)
|
|
456
|
-
parser.add_argument(
|
|
457
|
-
"--eclkw_regexp",
|
|
458
|
-
help=(
|
|
459
|
-
"Regular expression to determine which Eclipse keyword "
|
|
460
|
-
"to recognize. Default is None, using instead a list of known "
|
|
461
|
-
"compressable keywords."
|
|
462
|
-
),
|
|
463
|
-
)
|
|
464
434
|
parser.add_argument(
|
|
465
435
|
"--version",
|
|
466
436
|
action="version",
|
|
@@ -506,7 +476,6 @@ def main():
|
|
|
506
476
|
args.files,
|
|
507
477
|
keeporiginal=args.keeporiginal,
|
|
508
478
|
dryrun=args.dryrun,
|
|
509
|
-
eclkw_regexp=args.eclkw_regexp,
|
|
510
479
|
)
|
|
511
480
|
|
|
512
481
|
|
|
@@ -515,7 +484,6 @@ def main_eclcompress(
|
|
|
515
484
|
wildcardfile: str,
|
|
516
485
|
keeporiginal: bool = False,
|
|
517
486
|
dryrun: bool = False,
|
|
518
|
-
eclkw_regexp: Optional[str] = None,
|
|
519
487
|
) -> None:
|
|
520
488
|
"""Implements the command line functionality
|
|
521
489
|
|
|
@@ -525,8 +493,6 @@ def main_eclcompress(
|
|
|
525
493
|
keeporiginal: Whether a backup file should be left behind
|
|
526
494
|
dryrun: Nothing written to disk, only statistics for
|
|
527
495
|
compression printed to terminal.
|
|
528
|
-
eclkw_regexp: Regular expression for locating Eclipse keywords.
|
|
529
|
-
Default is None
|
|
530
496
|
"""
|
|
531
497
|
# A list of wildcards on the command line should always be compressed:
|
|
532
498
|
if grdeclfiles:
|
|
@@ -558,7 +524,6 @@ def main_eclcompress(
|
|
|
558
524
|
globbedfiles,
|
|
559
525
|
keeporiginal=keeporiginal,
|
|
560
526
|
dryrun=dryrun,
|
|
561
|
-
eclkw_regexp=eclkw_regexp,
|
|
562
527
|
)
|
|
563
528
|
savings_mb = savings / 1024.0 / 1024.0
|
|
564
529
|
print(f"eclcompress finished. Saved {savings_mb:.1f} Mb from compression")
|
|
@@ -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":
|
|
@@ -10,7 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
import numpy
|
|
12
12
|
import pandas
|
|
13
|
-
from
|
|
13
|
+
from resdata.resfile import ResdataFile
|
|
14
14
|
|
|
15
15
|
from subscript import __version__
|
|
16
16
|
|
|
@@ -26,8 +26,8 @@ written to the same filename (keeping the original is optional)
|
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def
|
|
30
|
-
"""Locate path of apps in
|
|
29
|
+
def find_resdata_app(toolname: str) -> str:
|
|
30
|
+
"""Locate path of apps in resdata.
|
|
31
31
|
|
|
32
32
|
These have varying suffixes due through the history of libecl Makefiles.
|
|
33
33
|
|
|
@@ -61,10 +61,10 @@ def date_slicer(slicedates: list, restartdates: list, restartindices: list) -> d
|
|
|
61
61
|
return slicedatemap
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
def
|
|
64
|
+
def rd_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
|
|
65
65
|
"""
|
|
66
66
|
Wrapper for ecl_unpack.x and ecl_pack.x utilities. These
|
|
67
|
-
utilities are from
|
|
67
|
+
utilities are from resdata.
|
|
68
68
|
|
|
69
69
|
First unpacking a UNRST file, then deleting dates the dont't want, then
|
|
70
70
|
pack the remainding files into a new UNRST file
|
|
@@ -79,11 +79,11 @@ def ecl_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
|
|
|
79
79
|
out = ""
|
|
80
80
|
# Error early if libecl tools are not available
|
|
81
81
|
try:
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
find_resdata_app("rd_unpack")
|
|
83
|
+
find_resdata_app("rd_pack")
|
|
84
84
|
except IOError:
|
|
85
85
|
sys.exit(
|
|
86
|
-
"ERROR:
|
|
86
|
+
"ERROR: rd_unpack.x and/or rd_pack.x not found.\n"
|
|
87
87
|
"These tools are required and must be installed separately"
|
|
88
88
|
)
|
|
89
89
|
|
|
@@ -99,13 +99,13 @@ def ecl_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
|
|
|
99
99
|
)
|
|
100
100
|
os.chdir(tempdir)
|
|
101
101
|
os.system(
|
|
102
|
-
|
|
102
|
+
find_resdata_app("rd_unpack") + " " + os.path.basename(rstfilename) + out
|
|
103
103
|
)
|
|
104
104
|
unpackedfiles = glob.glob("*.X*")
|
|
105
105
|
for file in unpackedfiles:
|
|
106
106
|
if int(file.split(".X")[1]) not in slicerstindices:
|
|
107
107
|
os.remove(file)
|
|
108
|
-
os.system(
|
|
108
|
+
os.system(find_resdata_app("rd_pack") + " *.X*" + out)
|
|
109
109
|
# We are inside the tmp directory, move file one step up:
|
|
110
110
|
os.rename(
|
|
111
111
|
os.path.join(os.getcwd(), os.path.basename(rstfilename)),
|
|
@@ -120,7 +120,7 @@ def get_restart_indices(rstfilename: str) -> list:
|
|
|
120
120
|
"""Extract a list of RST indices for a filename"""
|
|
121
121
|
if Path(rstfilename).exists():
|
|
122
122
|
# This function segfaults if file does not exist
|
|
123
|
-
return
|
|
123
|
+
return ResdataFile.file_report_list(str(rstfilename))
|
|
124
124
|
raise FileNotFoundError(f"{rstfilename} not found")
|
|
125
125
|
|
|
126
126
|
|
|
@@ -134,7 +134,7 @@ def restartthinner(
|
|
|
134
134
|
"""
|
|
135
135
|
Thin an existing UNRST file to selected number of restarts.
|
|
136
136
|
"""
|
|
137
|
-
rst =
|
|
137
|
+
rst = ResdataFile(filename)
|
|
138
138
|
restart_indices = get_restart_indices(filename)
|
|
139
139
|
restart_dates = [
|
|
140
140
|
rst.iget_restart_sim_time(index) for index in range(0, len(restart_indices))
|
|
@@ -177,7 +177,7 @@ def restartthinner(
|
|
|
177
177
|
if not quiet:
|
|
178
178
|
print(f"Info: Backing up {filename} to {backupname}")
|
|
179
179
|
shutil.copyfile(filename, backupname)
|
|
180
|
-
|
|
180
|
+
rd_repacker(filename, slicerstindices, quiet)
|
|
181
181
|
print(f"Written to {filename}")
|
|
182
182
|
|
|
183
183
|
|
|
@@ -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,9 +1,9 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
3
|
|
|
4
|
-
from
|
|
5
|
-
from
|
|
6
|
-
from
|
|
4
|
+
from resdata import ResDataType
|
|
5
|
+
from resdata.grid import ResdataRegion
|
|
6
|
+
from resdata.resfile import ResdataKW
|
|
7
7
|
|
|
8
8
|
from subscript.sector2fluxnum import flux_util
|
|
9
9
|
|
|
@@ -20,9 +20,9 @@ class Fluxnum:
|
|
|
20
20
|
|
|
21
21
|
Creates a non-initialized FLUXNUM keyword
|
|
22
22
|
"""
|
|
23
|
-
int_type =
|
|
23
|
+
int_type = ResDataType.RD_INT
|
|
24
24
|
self.grid = grid
|
|
25
|
-
self.fluxnum_kw =
|
|
25
|
+
self.fluxnum_kw = ResdataKW("FLUXNUM", grid.getGlobalSize(), int_type)
|
|
26
26
|
self.included_wells = []
|
|
27
27
|
self.dummy_lgr_cell = []
|
|
28
28
|
self.dummy_lgr_well = []
|
|
@@ -44,7 +44,7 @@ class Fluxnum:
|
|
|
44
44
|
|
|
45
45
|
Initializes inner region used to define the FLUXNUM
|
|
46
46
|
"""
|
|
47
|
-
self.inner_region =
|
|
47
|
+
self.inner_region = ResdataRegion(self.grid, False)
|
|
48
48
|
self.inner_region.select_all()
|
|
49
49
|
|
|
50
50
|
def set_lgr_box_region(self, i, j, k):
|
|
@@ -54,7 +54,7 @@ class Fluxnum:
|
|
|
54
54
|
Only works for Box regions
|
|
55
55
|
|
|
56
56
|
"""
|
|
57
|
-
self.lgr_region =
|
|
57
|
+
self.lgr_region = ResdataRegion(self.grid, False)
|
|
58
58
|
ijk_list = flux_util.unpack_ijk(i, j, k)
|
|
59
59
|
|
|
60
60
|
# Drags lgr boundaries one cell from box region
|
|
@@ -91,11 +91,11 @@ class Fluxnum:
|
|
|
91
91
|
print("ERROR: FLUXNUM input file not found!")
|
|
92
92
|
sys.exit(1)
|
|
93
93
|
|
|
94
|
-
int_type =
|
|
94
|
+
int_type = ResDataType.RD_INT
|
|
95
95
|
|
|
96
96
|
with open(fluxnum_file, "r", encoding="utf8") as file_handle:
|
|
97
|
-
self.fluxnum_kw =
|
|
98
|
-
file_handle, "FLUXNUM",
|
|
97
|
+
self.fluxnum_kw = ResdataKW.read_grdecl(
|
|
98
|
+
file_handle, "FLUXNUM", rd_type=int_type
|
|
99
99
|
)
|
|
100
100
|
|
|
101
101
|
def get_fluxnum_kw(self):
|
|
@@ -203,11 +203,11 @@ class FluxnumBox(Fluxnum):
|
|
|
203
203
|
self.set_outer_region(i_start, i_end, j_start, j_end, k_start, k_end)
|
|
204
204
|
|
|
205
205
|
def set_inner_region(self, i_start, i_end, j_start, j_end, k_start, k_end):
|
|
206
|
-
self.inner_region =
|
|
206
|
+
self.inner_region = ResdataRegion(self.grid, False)
|
|
207
207
|
self.inner_region.select_box((i_start, j_start, k_start), (i_end, j_end, k_end))
|
|
208
208
|
|
|
209
209
|
def set_outer_region(self, i_start, i_end, j_start, j_end, k_start, k_end):
|
|
210
|
-
self.outer_region =
|
|
210
|
+
self.outer_region = ResdataRegion(self.grid, False)
|
|
211
211
|
self.outer_region.select_box((i_start, j_start, k_start), (i_end, j_end, k_end))
|
|
212
212
|
self.outer_region.invert()
|
|
213
213
|
|
|
@@ -247,8 +247,8 @@ class FluxnumFipnum(Fluxnum):
|
|
|
247
247
|
raise Exception("ERROR: FIPNUM input file not found!")
|
|
248
248
|
|
|
249
249
|
with open(fipnum_file, "r", encoding="utf8") as file_handle:
|
|
250
|
-
fipnum =
|
|
251
|
-
file_handle, "FIPNUM",
|
|
250
|
+
fipnum = ResdataKW.read_grdecl(
|
|
251
|
+
file_handle, "FIPNUM", rd_type=ResDataType.RD_INT
|
|
252
252
|
)
|
|
253
253
|
|
|
254
254
|
else:
|