subscript 1.14.0__tar.gz → 1.14.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {subscript-1.14.0 → subscript-1.14.2}/.github/workflows/codecov.yml +13 -7
- {subscript-1.14.0 → subscript-1.14.2}/.github/workflows/subscript.yml +11 -12
- {subscript-1.14.0 → subscript-1.14.2}/PKG-INFO +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/pyproject.toml +13 -9
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/check_swatinit/check_swatinit.py +23 -21
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/check_swatinit/plotter.py +7 -7
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv2ofmvol/csv2ofmvol.py +2 -2
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv_merge/csv_merge.py +1 -1
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv_stack/csv_stack.py +1 -1
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmuobs/parsers.py +1 -2
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmuobs/writers.py +33 -32
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/interp_relperm/interp_relperm.py +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +2 -2
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/params2csv/params2csv.py +3 -4
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/presentvalue/presentvalue.py +12 -9
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/prtvol2csv/prtvol2csv.py +5 -4
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/restartthinner/restartthinner.py +1 -1
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/summaryplot/summaryplot.py +32 -39
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/version.py +3 -3
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/vfp2csv/vfp2csv.py +5 -5
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/PKG-INFO +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/SOURCES.txt +12 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/requires.txt +3 -3
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args0.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args1.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args10.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args11.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args2.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args3.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args4.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args5.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args6.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args7.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args8.png +0 -0
- subscript-1.14.2/tests/baseline/test_summaryplotter_mpl_test_cmd_args9.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_check_swatinit.py +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_check_swatinit_simulators.py +9 -9
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_csv_stack.py +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_fmuobs.py +16 -19
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_merge_rft_ertobs.py +2 -2
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_ofmvol2csv.py +3 -2
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_params2csv.py +4 -4
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_presentvalue.py +1 -1
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_prtvol2csv.py +30 -12
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_summaryplot.py +32 -0
- {subscript-1.14.0 → subscript-1.14.2}/.github/workflows/publish.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/.gitignore +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/.pylintrc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/LICENSE +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/README.md +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/SECURITY.md +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/ci/testkomodo.sh +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/Makefile +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/_templates/layout.html +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/conf.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/contributing.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/history.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/index.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/make.bat +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/overview.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/field_statistics.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/grav_subs_maps.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/grav_subs_points.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/merge_unrst_files.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/prtvol2csv.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/ri_wellmod.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/docs/usage.rst +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/setup.cfg +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/bjobsusers/bjobsusers.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/casegen_upcars/model.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/casegen_upcars/udf.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/convert_grid_format/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv2ofmvol/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv_merge/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/csv_stack/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/eclcompress/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/eclcompress/eclcompress.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ecldiff2roff/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/field_statistics/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/field_statistics/field_statistics.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmu_copy_revision/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmuobs/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmuobs/fmuobs.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/grav_subs_maps/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/grav_subs_maps/grav_subs_maps.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/grav_subs_points/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/grav_subs_points/grav_subs_points.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/hook_implementations/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/hook_implementations/forward_model_steps.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/interp_relperm/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/duf +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/nosim +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/merge_rft_ertobs/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/merge_unrst_files/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/merge_unrst_files/merge_unrst_files.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ofmvol2csv/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/pack_sim/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/pack_sim/pack_sim.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/params2csv/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/presentvalue/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/prtvol2csv/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/restartthinner/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ri_wellmod/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/ri_wellmod/ri_wellmod.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/rmsecl_volumetrics/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/completions.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/flux_obj.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/flux_util.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/summaryplot/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sunsch/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sunsch/sunsch.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sunsch/time_vector.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sw_model_utilities/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/vfp2csv/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/welltest_dpds/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript/welltest_dpds/welltest_dpds.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/entry_points.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/__init__.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/conftest.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/edit/drogon.trans +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.faults +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.grid +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.multnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.multregt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.perm +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/grid/drogon.poro +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/props/drogon.pvt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/props/drogon.sattab +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/props/drogon.swatinit +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/regions/drogon.eqlnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/regions/drogon.fipnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/regions/drogon.fipzon +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/regions/drogon.pvtnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/regions/drogon.satnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/runspec/drogon.dimens +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/runspec/drogon.eqldims +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/runspec/drogon.gridopts +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/runspec/drogon.regdims +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/runspec/drogon.tabdims +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/55_33-1.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/55_33-1.wells +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/drogon_hist.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/vfp/A-1.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/vfp/A-2.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/vfp/A-3.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/schedule/vfp/A-4.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/solution/drogon.equil +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/solution/drogon.rxvd +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/solution/drogon.thpres +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/include/summary/drogon.summary +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/drogon/eclipse/model/DROGON-0.DATA +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/rms/README +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_bjobsusers.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_casegen_upcars.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_convert_grid_format.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_csv2ofmvol.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_csv_merge.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_docs.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_eclcompress.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_ecldiff2roff.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_eclinit2roff.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_field_statistics.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_fmu_copy_revision.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_fmuobs_parsers.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_fmuobs_writers.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_grav_subs_maps.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_grav_subs_points.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_hook_implementations.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_interp_relperm.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_merge_unrst_files.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_pack_sim.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_restartthinner.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_ri_wellmod.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_rmsecl_volumetrics.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_sector2fluxnum.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_sunsch.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_sw_model_utilities.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_vfp2csv.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/test_welltest_dpds.py +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/config_example.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/ERTBOX.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/Geogrid.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/files.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_0.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_3.roff +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/ert/model/0readme +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/fmuconfig/output/global_variables.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_field_statistics/rms/output/aps/ERTBOX.EGRID +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/ert-doc.csv +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/ert-doc.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/ert-doc.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_fmuobs/ri-obs.csv +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/HIST.EGRID +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/HIST.INIT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/HIST.UNRST +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/global_variables.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/grav_subs_maps.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/grav_subs_points.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/seabed.gri +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_gravity/station_coordinates.csv +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_unrst_files/HIST.UNRST +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_merge_unrst_files/PRED.UNRST +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/0readme.txt +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/DROGON_FIPNUM.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/DROGON_FIPZON.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/DROGON_INACTIVE_FIPNUM.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE_FLOW.PRT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/config.yml +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/testdata_sunsch/options3.sch +0 -0
- {subscript-1.14.0 → subscript-1.14.2}/tests/utils.py +0 -0
|
@@ -14,6 +14,7 @@ jobs:
|
|
|
14
14
|
env:
|
|
15
15
|
OS: ${{ matrix.os }}
|
|
16
16
|
PYTHON: '3.12'
|
|
17
|
+
UV_SYSTEM_PYTHON: 1
|
|
17
18
|
|
|
18
19
|
steps:
|
|
19
20
|
|
|
@@ -22,13 +23,19 @@ jobs:
|
|
|
22
23
|
sudo apt-get update
|
|
23
24
|
sudo apt-get install libegl1
|
|
24
25
|
|
|
25
|
-
- uses: actions/checkout@
|
|
26
|
+
- uses: actions/checkout@v5
|
|
26
27
|
|
|
27
28
|
- name: Setup Python
|
|
28
29
|
uses: actions/setup-python@v5
|
|
29
30
|
with:
|
|
30
31
|
python-version: 3.12
|
|
31
32
|
|
|
33
|
+
- name: Install uv
|
|
34
|
+
uses: astral-sh/setup-uv@v6
|
|
35
|
+
with:
|
|
36
|
+
enable-cache: true
|
|
37
|
+
python-version: "3.12"
|
|
38
|
+
|
|
32
39
|
- name: Install OPM-flow and ResInsight (for testing)
|
|
33
40
|
run: |
|
|
34
41
|
sudo apt-get install software-properties-common
|
|
@@ -40,19 +47,18 @@ jobs:
|
|
|
40
47
|
|
|
41
48
|
- name: Install subscript and test dependencies
|
|
42
49
|
run: |
|
|
43
|
-
pip install
|
|
44
|
-
pip install .[tests]
|
|
50
|
+
uv pip install ".[tests]"
|
|
45
51
|
|
|
46
|
-
- name:
|
|
52
|
+
- name: Log OPM-Flow and ResInsight version
|
|
47
53
|
run: |
|
|
48
|
-
|
|
49
|
-
ResInsight --console --
|
|
54
|
+
flow --version
|
|
55
|
+
ResInsight --console --version
|
|
50
56
|
|
|
51
57
|
- name: Generate coverage report
|
|
52
58
|
run: |
|
|
53
59
|
pytest tests --disable-warnings --cov=subscript --cov-report=xml
|
|
54
60
|
|
|
55
61
|
- name: Upload coverage to Codecov
|
|
56
|
-
uses: codecov/codecov-action@
|
|
62
|
+
uses: codecov/codecov-action@v5
|
|
57
63
|
with:
|
|
58
64
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -16,6 +16,7 @@ on:
|
|
|
16
16
|
|
|
17
17
|
env:
|
|
18
18
|
MPLBACKEND: Agg
|
|
19
|
+
UV_SYSTEM_PYTHON: 1
|
|
19
20
|
|
|
20
21
|
jobs:
|
|
21
22
|
subscript:
|
|
@@ -32,7 +33,7 @@ jobs:
|
|
|
32
33
|
sudo apt-get install libegl1
|
|
33
34
|
|
|
34
35
|
- name: Checkout commit locally
|
|
35
|
-
uses: actions/checkout@
|
|
36
|
+
uses: actions/checkout@v5
|
|
36
37
|
with:
|
|
37
38
|
fetch-depth: 0
|
|
38
39
|
|
|
@@ -41,6 +42,12 @@ jobs:
|
|
|
41
42
|
with:
|
|
42
43
|
python-version: ${{ matrix.python-version }}
|
|
43
44
|
|
|
45
|
+
- name: Install uv
|
|
46
|
+
uses: astral-sh/setup-uv@v6
|
|
47
|
+
with:
|
|
48
|
+
enable-cache: true
|
|
49
|
+
python-version: ${{ matrix.python-version }}
|
|
50
|
+
|
|
44
51
|
- name: Install OPM-flow and ResInsight (for testing)
|
|
45
52
|
run: |
|
|
46
53
|
sudo apt-get install software-properties-common
|
|
@@ -53,15 +60,7 @@ jobs:
|
|
|
53
60
|
- name: Install subscript with dependencies
|
|
54
61
|
if: ${{ always() }}
|
|
55
62
|
run: |
|
|
56
|
-
pip install
|
|
57
|
-
pip install .[tests,docs]
|
|
58
|
-
|
|
59
|
-
- name: Force correct RIPS version
|
|
60
|
-
run: |
|
|
61
|
-
ResInsight --console --help | grep "ResInsight v. 2021.06" \
|
|
62
|
-
&& pip install rips==2021.6.0.1 || true
|
|
63
|
-
ResInsight --console --help | grep "ResInsight v. 2020.10" \
|
|
64
|
-
&& pip install rips==2020.10.0.2 || true
|
|
63
|
+
uv pip install ".[tests, docs]"
|
|
65
64
|
|
|
66
65
|
- name: Log OPM-Flow and ResInsight version
|
|
67
66
|
run: |
|
|
@@ -69,7 +68,7 @@ jobs:
|
|
|
69
68
|
ResInsight --console --version
|
|
70
69
|
|
|
71
70
|
- name: List all installed packages
|
|
72
|
-
run: pip freeze
|
|
71
|
+
run: uv pip freeze
|
|
73
72
|
|
|
74
73
|
- name: Format with ruff
|
|
75
74
|
if: ${{ always() }}
|
|
@@ -85,7 +84,7 @@ jobs:
|
|
|
85
84
|
|
|
86
85
|
- name: Run tests
|
|
87
86
|
if: ${{ always() }}
|
|
88
|
-
run: pytest -n auto tests
|
|
87
|
+
run: pytest -n auto tests --mpl
|
|
89
88
|
|
|
90
89
|
- name: Syntax check documentation
|
|
91
90
|
if: ${{ always() }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.2
|
|
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
|
|
@@ -719,8 +719,8 @@ Requires-Dist: mypy; extra == "tests"
|
|
|
719
719
|
Requires-Dist: pytest; extra == "tests"
|
|
720
720
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
721
721
|
Requires-Dist: pytest-mock; extra == "tests"
|
|
722
|
+
Requires-Dist: pytest-mpl; extra == "tests"
|
|
722
723
|
Requires-Dist: pytest-xdist; extra == "tests"
|
|
723
|
-
Requires-Dist: PyQt5-sip; extra == "tests"
|
|
724
724
|
Requires-Dist: rstcheck; extra == "tests"
|
|
725
725
|
Requires-Dist: rstcheck-core; extra == "tests"
|
|
726
726
|
Requires-Dist: ruff; extra == "tests"
|
|
@@ -729,9 +729,9 @@ Requires-Dist: types-PyYAML; extra == "tests"
|
|
|
729
729
|
Requires-Dist: types-python-dateutil; extra == "tests"
|
|
730
730
|
Provides-Extra: docs
|
|
731
731
|
Requires-Dist: autoapi; extra == "docs"
|
|
732
|
-
Requires-Dist: sphinx
|
|
732
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
733
733
|
Requires-Dist: sphinx-argparse; extra == "docs"
|
|
734
|
-
Requires-Dist: sphinx-autodoc-typehints
|
|
734
|
+
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
|
|
735
735
|
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
736
736
|
Requires-Dist: sphinx-togglebutton; extra == "docs"
|
|
737
737
|
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
requires = [
|
|
3
3
|
"setuptools>=45.0",
|
|
4
4
|
"setuptools_scm[toml]>=6.2",
|
|
5
|
-
"wheel>=0.38.1",
|
|
6
5
|
]
|
|
7
6
|
build-backend = "setuptools.build_meta"
|
|
8
7
|
|
|
@@ -60,8 +59,8 @@ tests = [
|
|
|
60
59
|
"pytest",
|
|
61
60
|
"pytest-cov",
|
|
62
61
|
"pytest-mock",
|
|
62
|
+
"pytest-mpl",
|
|
63
63
|
"pytest-xdist",
|
|
64
|
-
"PyQt5-sip",
|
|
65
64
|
"rstcheck",
|
|
66
65
|
"rstcheck-core",
|
|
67
66
|
"ruff",
|
|
@@ -71,9 +70,9 @@ tests = [
|
|
|
71
70
|
]
|
|
72
71
|
docs = [
|
|
73
72
|
"autoapi",
|
|
74
|
-
"sphinx
|
|
73
|
+
"sphinx",
|
|
75
74
|
"sphinx-argparse",
|
|
76
|
-
"sphinx-autodoc-typehints
|
|
75
|
+
"sphinx-autodoc-typehints",
|
|
77
76
|
"sphinx-copybutton",
|
|
78
77
|
"sphinx-togglebutton",
|
|
79
78
|
"sphinx_rtd_theme",
|
|
@@ -164,10 +163,11 @@ markers = [
|
|
|
164
163
|
ignore_directives = ["argparse", "automodule"]
|
|
165
164
|
|
|
166
165
|
[tool.ruff]
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
lint
|
|
166
|
+
src = ["src"]
|
|
167
|
+
line-length = 88
|
|
168
|
+
|
|
169
|
+
[tool.ruff.lint]
|
|
170
|
+
select = [
|
|
171
171
|
"C",
|
|
172
172
|
"E",
|
|
173
173
|
"F",
|
|
@@ -178,8 +178,12 @@ lint.select = [
|
|
|
178
178
|
"RSE",
|
|
179
179
|
"SIM",
|
|
180
180
|
"W",
|
|
181
|
+
"PD",
|
|
182
|
+
]
|
|
183
|
+
ignore = [
|
|
184
|
+
"C901",
|
|
185
|
+
"PD013",
|
|
181
186
|
]
|
|
182
|
-
line-length = 88
|
|
183
187
|
|
|
184
188
|
[tool.ruff.lint.isort]
|
|
185
189
|
combine-as-imports = true
|
|
@@ -74,21 +74,23 @@ def main() -> None:
|
|
|
74
74
|
|
|
75
75
|
if args.volplot or args.volplotfile:
|
|
76
76
|
plotter.wvol_waterfall(qc_vols)
|
|
77
|
-
if args.volplot:
|
|
78
|
-
pyplot.show()
|
|
79
77
|
if args.volplotfile:
|
|
80
78
|
print(f"Dumping volume plot to {args.volplotfile}")
|
|
81
79
|
pyplot.savefig(args.volplotfile)
|
|
80
|
+
if args.volplot:
|
|
81
|
+
pyplot.show()
|
|
82
82
|
|
|
83
|
-
if (args.plotfile or args.plot) and args.eqlnum not in qc_frame[
|
|
83
|
+
if (args.plotfile or args.plot) and args.eqlnum not in qc_frame[
|
|
84
|
+
"EQLNUM"
|
|
85
|
+
].to_numpy():
|
|
84
86
|
sys.exit(f"Error: EQLNUM {args.eqlnum} does not exist in grid. No plotting.")
|
|
85
87
|
if args.plot or args.plotfile:
|
|
86
88
|
plotter.plot_qc_panels(qc_frame[qc_frame["EQLNUM"] == args.eqlnum])
|
|
87
|
-
if args.plot:
|
|
88
|
-
pyplot.show()
|
|
89
89
|
if args.plotfile:
|
|
90
90
|
print(f"Dumping plot to {args.plotfile}")
|
|
91
91
|
pyplot.savefig(args.plotfile)
|
|
92
|
+
if args.plot:
|
|
93
|
+
pyplot.show()
|
|
92
94
|
|
|
93
95
|
|
|
94
96
|
def check_applicability(eclfiles: res2df.ResdataFiles) -> None:
|
|
@@ -129,7 +131,7 @@ def reorder_dframe_for_nonnans(dframe: pd.DataFrame) -> pd.DataFrame:
|
|
|
129
131
|
will aid data analysis application to deduce correct datatypes for
|
|
130
132
|
columns"""
|
|
131
133
|
null_count = "__NULL_COUNT__"
|
|
132
|
-
dframe[null_count] = dframe.
|
|
134
|
+
dframe[null_count] = dframe.isna().sum(axis=1)
|
|
133
135
|
return (
|
|
134
136
|
dframe.sort_values(null_count).drop(null_count, axis=1).reset_index(drop=True)
|
|
135
137
|
)
|
|
@@ -253,11 +255,11 @@ def make_qc_gridframe(eclfiles: res2df.ResdataFiles) -> pd.DataFrame:
|
|
|
253
255
|
# GLOBAL_INDEX is 0-indexed.
|
|
254
256
|
grid_df["SWATINIT_DECK"] = pd.Series(swatinit_deckdata)[
|
|
255
257
|
grid_df["GLOBAL_INDEX"].astype(int).tolist()
|
|
256
|
-
].
|
|
258
|
+
].to_numpy()
|
|
257
259
|
|
|
258
260
|
if "SWATINIT" not in grid_df:
|
|
259
261
|
# OPM-flow does not include SWATINIT in the INIT file.
|
|
260
|
-
grid_df.rename({"SWATINIT_DECK": "SWATINIT"}, axis="columns"
|
|
262
|
+
grid_df = grid_df.rename({"SWATINIT_DECK": "SWATINIT"}, axis="columns")
|
|
261
263
|
elif "SWATINIT_DECK" in grid_df:
|
|
262
264
|
# (if SWATINIT is inputted using binary data in Eclipse deck, the code above
|
|
263
265
|
# is not able to extract it)
|
|
@@ -352,7 +354,7 @@ def qc_flag(qc_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
352
354
|
qc_col[
|
|
353
355
|
(~np.isclose(qc_frame["OIP_INIT"], 0))
|
|
354
356
|
& (~np.isclose(qc_frame["SWAT"], qc_frame["SWATINIT"], atol=1e-6))
|
|
355
|
-
& (~pd.
|
|
357
|
+
& (~pd.isna(qc_frame["PC_SCALING"]))
|
|
356
358
|
] = __FINE_EQUIL__
|
|
357
359
|
|
|
358
360
|
# SWATINIT=1 above contact:
|
|
@@ -409,9 +411,7 @@ def qc_flag(qc_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
409
411
|
|
|
410
412
|
# Tag the remainder with "unknown", when/if this happens, it is a bug or a
|
|
411
413
|
# feature request:
|
|
412
|
-
qc_col.fillna(__UNKNOWN__
|
|
413
|
-
|
|
414
|
-
return qc_col
|
|
414
|
+
return qc_col.fillna(__UNKNOWN__)
|
|
415
415
|
|
|
416
416
|
|
|
417
417
|
def qc_volumes(qc_frame: pd.DataFrame) -> Dict[str, float]:
|
|
@@ -496,8 +496,10 @@ def _evaluate_pc(
|
|
|
496
496
|
np.interp(
|
|
497
497
|
swat,
|
|
498
498
|
swl
|
|
499
|
-
+ (satfunc[sat_name].
|
|
500
|
-
|
|
499
|
+
+ (satfunc[sat_name].to_numpy() - sw_min)
|
|
500
|
+
/ (sw_max - sw_min)
|
|
501
|
+
* (swu - swl),
|
|
502
|
+
satfunc[pc_name].to_numpy() * pc_scaling,
|
|
501
503
|
)
|
|
502
504
|
)
|
|
503
505
|
return p_cap
|
|
@@ -534,15 +536,15 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
|
|
|
534
536
|
|
|
535
537
|
for satnum, satnum_frame in qc_frame.groupby("SATNUM"):
|
|
536
538
|
if "SWLPC" in satnum_frame:
|
|
537
|
-
swls = satnum_frame["SWLPC"].
|
|
539
|
+
swls = satnum_frame["SWLPC"].to_numpy()
|
|
538
540
|
elif "SWL" in satnum_frame:
|
|
539
|
-
swls = satnum_frame["SWL"].
|
|
541
|
+
swls = satnum_frame["SWL"].to_numpy()
|
|
540
542
|
else:
|
|
541
543
|
swls = None
|
|
542
|
-
swus = satnum_frame["SWU"].
|
|
544
|
+
swus = satnum_frame["SWU"].to_numpy() if "SWU" in satnum_frame else None
|
|
543
545
|
p_cap[satnum_frame.index] = _evaluate_pc(
|
|
544
|
-
satnum_frame["SWAT"].
|
|
545
|
-
satnum_frame["PC_SCALING"].
|
|
546
|
+
satnum_frame["SWAT"].to_numpy(),
|
|
547
|
+
satnum_frame["PC_SCALING"].to_numpy(),
|
|
546
548
|
swls,
|
|
547
549
|
swus,
|
|
548
550
|
satfunc_df[satfunc_df["SATNUM"] == satnum],
|
|
@@ -596,7 +598,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
596
598
|
assert "PRESSURE" in equil_df
|
|
597
599
|
|
|
598
600
|
# Be compatible with future change in res2df:
|
|
599
|
-
equil_df.rename({"ACCURACY": "OIP_INIT"}, axis="columns"
|
|
601
|
+
equil_df = equil_df.rename({"ACCURACY": "OIP_INIT"}, axis="columns")
|
|
600
602
|
|
|
601
603
|
contacts = list({"OWC", "GOC", "GWC"}.intersection(set(equil_df.columns)))
|
|
602
604
|
# Rename and slice the equil dataframe:
|
|
@@ -607,7 +609,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
607
609
|
equil_df = equil_df[equil_df["KEYWORD"] == "EQUIL"]
|
|
608
610
|
equil_df = equil_df[["Z_DATUM", "PRESSURE_DATUM", "EQLNUM", "OIP_INIT"] + contacts]
|
|
609
611
|
equil_df["EQLNUM"] = equil_df["EQLNUM"].astype(int)
|
|
610
|
-
assert not pd.
|
|
612
|
+
assert not pd.isna(equil_df).any().any(), (
|
|
611
613
|
f"BUG: NaNs in equil dataframe:\n{equil_df}"
|
|
612
614
|
)
|
|
613
615
|
return grid_df.merge(equil_df, on="EQLNUM", how="left")
|
|
@@ -63,8 +63,8 @@ def plot_qc_panels(
|
|
|
63
63
|
pyplot.subplot(2, 2, 4)
|
|
64
64
|
pc_depth(qc_frame)
|
|
65
65
|
|
|
66
|
-
oip_init = qc_frame["OIP_INIT"].
|
|
67
|
-
eqlnum = qc_frame["EQLNUM"].
|
|
66
|
+
oip_init = qc_frame["OIP_INIT"].to_numpy()[0]
|
|
67
|
+
eqlnum = qc_frame["EQLNUM"].to_numpy()[0]
|
|
68
68
|
pyplot.suptitle(f"EQLNUM: {eqlnum}, OIP_INIT: {oip_init}")
|
|
69
69
|
if show:
|
|
70
70
|
pyplot.show()
|
|
@@ -150,15 +150,15 @@ def pc_depth(
|
|
|
150
150
|
def add_contacts_to_plot(qc_frame: pd.DataFrame, axis: pyplot.Axes) -> None:
|
|
151
151
|
"""Annotate axes with named horizontal lines for contacts."""
|
|
152
152
|
if "OWC" in qc_frame:
|
|
153
|
-
owc = qc_frame["OWC"].
|
|
153
|
+
owc = qc_frame["OWC"].to_numpy()[0] # OWC is assumed constant in the dataframe
|
|
154
154
|
axis.axhline(owc, color="black", linestyle="--", linewidth=1)
|
|
155
155
|
axis.annotate(f"OWC={owc:g}", (0, owc))
|
|
156
156
|
if "GOC" in qc_frame:
|
|
157
|
-
goc = qc_frame["GOC"].
|
|
157
|
+
goc = qc_frame["GOC"].to_numpy()[0]
|
|
158
158
|
axis.axhline(goc, color="black", linestyle="--", linewidth=1)
|
|
159
159
|
axis.annotate(f"GOC={goc:g}", (0, goc))
|
|
160
160
|
if "GWC" in qc_frame:
|
|
161
|
-
gwc = qc_frame["GWC"].
|
|
161
|
+
gwc = qc_frame["GWC"].to_numpy()[0]
|
|
162
162
|
axis.axhline(gwc, color="black", linestyle="--", linewidth=1)
|
|
163
163
|
axis.annotate(f"GWC={gwc:g}", (0, gwc))
|
|
164
164
|
|
|
@@ -199,10 +199,10 @@ def wvol_waterfall(qc_vols: Dict[str, float]) -> None:
|
|
|
199
199
|
blank.loc["SWAT_WVOL"] = 0
|
|
200
200
|
|
|
201
201
|
fig = trans.plot(kind="bar", alpha=0.7, stacked=True, legend=None, bottom=blank)
|
|
202
|
-
fig.plot(step.index, step.
|
|
202
|
+
fig.plot(step.index, step.to_numpy(), "k")
|
|
203
203
|
pyplot.gcf().subplots_adjust(bottom=0.25)
|
|
204
204
|
|
|
205
|
-
blanktrans = blank.
|
|
205
|
+
blanktrans = blank.to_numpy() + trans["volume"].to_numpy()
|
|
206
206
|
span = blank.max() - blanktrans[1:-1].min()
|
|
207
207
|
|
|
208
208
|
if np.isclose(span, 0.0):
|
|
@@ -116,7 +116,7 @@ def read_pdm_csv_files(
|
|
|
116
116
|
# Reindex:
|
|
117
117
|
data = data.set_index(["WELL", "DATE"])
|
|
118
118
|
|
|
119
|
-
if not [data.columns.
|
|
119
|
+
if not [data.columns.to_numpy()]:
|
|
120
120
|
raise ValueError("No data columns found")
|
|
121
121
|
|
|
122
122
|
# Drop duplicate multiindices (WELL, DATE)
|
|
@@ -220,7 +220,7 @@ def df2vol(data: pd.DataFrame) -> str:
|
|
|
220
220
|
|
|
221
221
|
# Fill empty cells with zeros, empty cells can stem from concatenation
|
|
222
222
|
# of dataframes with gas and water injectors.
|
|
223
|
-
voldata.fillna(value=0.0
|
|
223
|
+
voldata = voldata.fillna(value=0.0)
|
|
224
224
|
|
|
225
225
|
volstr = ""
|
|
226
226
|
volstr += "*METRIC\n"
|
|
@@ -307,7 +307,7 @@ def csv_merge_main(
|
|
|
307
307
|
if len(merged_df[col].unique()) == 1:
|
|
308
308
|
columnstodelete.append(col)
|
|
309
309
|
logger.info("Dropping constant columns %s", str(columnstodelete))
|
|
310
|
-
merged_df.drop(columnstodelete,
|
|
310
|
+
merged_df = merged_df.drop(columnstodelete, axis=1)
|
|
311
311
|
|
|
312
312
|
if merged_df.empty:
|
|
313
313
|
logger.error("No data to output")
|
|
@@ -311,7 +311,7 @@ def csv_stack(
|
|
|
311
311
|
|
|
312
312
|
# Stack the multiindex columns, this will add a lot of rows to
|
|
313
313
|
# our ensemble, and condense the number of columns
|
|
314
|
-
dframe = dframe.stack()
|
|
314
|
+
dframe = dframe.stack(future_stack=True)
|
|
315
315
|
|
|
316
316
|
# The values from non-multiindex-columns must be propagated to
|
|
317
317
|
# the rows that emerged from the stacking. If you use the
|
|
@@ -458,8 +458,7 @@ def resinsight_df2df(ri_dframe: pd.DataFrame) -> pd.DataFrame:
|
|
|
458
458
|
if ri_dframe.empty:
|
|
459
459
|
return pd.DataFrame()
|
|
460
460
|
|
|
461
|
-
dframe = ri_dframe.copy()
|
|
462
|
-
dframe.rename({"VECTOR": "KEY"}, axis="columns", inplace=True)
|
|
461
|
+
dframe = ri_dframe.copy().rename({"VECTOR": "KEY"}, axis="columns")
|
|
463
462
|
dframe["LABEL"] = (
|
|
464
463
|
dframe["KEY"].astype(str)
|
|
465
464
|
+ "-"
|
|
@@ -33,20 +33,20 @@ def dfsummary2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
33
33
|
for _, row in smry_df.iterrows():
|
|
34
34
|
ertobs_str += "SUMMARY_OBSERVATION " + str(row["LABEL"]) + "\n"
|
|
35
35
|
ertobs_str += "{\n"
|
|
36
|
-
if "COMMENT" in row and not pd.
|
|
36
|
+
if "COMMENT" in row and not pd.isna(row["COMMENT"]):
|
|
37
37
|
ertobs_str += (
|
|
38
38
|
" -- "
|
|
39
39
|
+ str(row["COMMENT"]).replace("\n", "\n -- ").strip()
|
|
40
40
|
+ "\n"
|
|
41
41
|
)
|
|
42
|
-
if "DATE" in row and not pd.
|
|
42
|
+
if "DATE" in row and not pd.isna(row["DATE"]):
|
|
43
43
|
ertobs_str += (
|
|
44
44
|
" DATE = "
|
|
45
45
|
+ str(pd.to_datetime(row["DATE"]).strftime(ERT_ISO_DATE_FORMAT))
|
|
46
46
|
+ ";\n"
|
|
47
47
|
)
|
|
48
48
|
for dataname in ["KEY", "DAYS", "RESTART", "VALUE", "ERROR", "SOURCE"]:
|
|
49
|
-
if dataname in row and not pd.
|
|
49
|
+
if dataname in row and not pd.isna(row[dataname]):
|
|
50
50
|
ertobs_str += " " + dataname + " = " + str(row[dataname]) + ";\n"
|
|
51
51
|
ertobs_str += "};\n"
|
|
52
52
|
return ertobs_str
|
|
@@ -70,12 +70,14 @@ def dfblock2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
70
70
|
)
|
|
71
71
|
for obslabel, block_df in block_obs_df.groupby("LABEL"):
|
|
72
72
|
ertobs_str += "BLOCK_OBSERVATION " + obslabel + "\n{\n"
|
|
73
|
-
if "COMMENT" in block_df and not pd.
|
|
73
|
+
if "COMMENT" in block_df and not pd.isna(block_df["COMMENT"]).any():
|
|
74
74
|
if len(block_df["COMMENT"].dropna().unique()) != 1:
|
|
75
75
|
logger.warning("Inconsistency in COMMENT in block dataframe")
|
|
76
76
|
ertobs_str += (
|
|
77
77
|
" -- "
|
|
78
|
-
+ str(block_df["COMMENT"].
|
|
78
|
+
+ str(block_df["COMMENT"].to_numpy()[0])
|
|
79
|
+
.replace("\n", "\n -- ")
|
|
80
|
+
.strip()
|
|
79
81
|
+ "\n"
|
|
80
82
|
)
|
|
81
83
|
for dataname in ["FIELD", "DATE"]:
|
|
@@ -85,7 +87,7 @@ def dfblock2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
85
87
|
" "
|
|
86
88
|
+ dataname
|
|
87
89
|
+ " = "
|
|
88
|
-
+ str(block_df[dataname].
|
|
90
|
+
+ str(block_df[dataname].to_numpy()[0])
|
|
89
91
|
+ ";\n"
|
|
90
92
|
)
|
|
91
93
|
else:
|
|
@@ -94,7 +96,7 @@ def dfblock2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
94
96
|
f"block dataframe for one label has multiple {dataname}"
|
|
95
97
|
)
|
|
96
98
|
for _, row in block_df.iterrows():
|
|
97
|
-
if "SUBCOMMENT" in row and not pd.
|
|
99
|
+
if "SUBCOMMENT" in row and not pd.isna("SUBCOMMENT"):
|
|
98
100
|
ertobs_str += (
|
|
99
101
|
" -- "
|
|
100
102
|
+ str(row["SUBCOMMENT"]).strip().replace("\n", "\n -- ").strip()
|
|
@@ -102,7 +104,7 @@ def dfblock2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
102
104
|
)
|
|
103
105
|
ertobs_str += " OBS " + row["OBS"] + " {"
|
|
104
106
|
for dataname in ["I", "J", "K", "VALUE", "ERROR", "SOURCE"]:
|
|
105
|
-
if dataname in row and not pd.
|
|
107
|
+
if dataname in row and not pd.isna(row[dataname]):
|
|
106
108
|
ertobs_str += " " + dataname + " = " + str(row[dataname]) + ";"
|
|
107
109
|
ertobs_str += "};\n"
|
|
108
110
|
ertobs_str += "};\n"
|
|
@@ -138,17 +140,17 @@ def dfhistory2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
138
140
|
.to_dict(orient="records")[0]
|
|
139
141
|
)
|
|
140
142
|
for dataname in ["ERROR", "ERROR_MODE", "ERROR_MIN"]:
|
|
141
|
-
if dataname in default_row and not pd.
|
|
143
|
+
if dataname in default_row and not pd.isna(default_row[dataname]):
|
|
142
144
|
ertobs_str += (
|
|
143
145
|
" " + dataname + " = " + str(default_row[dataname]) + ";\n"
|
|
144
146
|
)
|
|
145
147
|
for _, row in history_df.iterrows():
|
|
146
|
-
if "SEGMENT" in row and not pd.
|
|
148
|
+
if "SEGMENT" in row and not pd.isna(row["SEGMENT"]):
|
|
147
149
|
if row["SEGMENT"] == "DEFAULT":
|
|
148
150
|
continue
|
|
149
151
|
ertobs_str += " SEGMENT " + row["SEGMENT"] + " {"
|
|
150
152
|
for dataname in ["START", "STOP", "ERROR", "ERROR_MODE"]:
|
|
151
|
-
if dataname in row and not pd.
|
|
153
|
+
if dataname in row and not pd.isna(row[dataname]):
|
|
152
154
|
ertobs_str += " " + dataname + " = " + str(row[dataname]) + ";"
|
|
153
155
|
ertobs_str += "};\n"
|
|
154
156
|
ertobs_str += "};\n"
|
|
@@ -185,7 +187,7 @@ def dfgeneral2ertobs(obs_df: pd.DataFrame) -> str:
|
|
|
185
187
|
"INDEX_LIST",
|
|
186
188
|
"ERROR_COVAR",
|
|
187
189
|
]:
|
|
188
|
-
if dataname in row and not pd.
|
|
190
|
+
if dataname in row and not pd.isna(row[dataname]):
|
|
189
191
|
ertobs_str += " " + dataname + " = " + str(row[dataname]) + ";\n"
|
|
190
192
|
ertobs_str += "};\n"
|
|
191
193
|
|
|
@@ -240,11 +242,11 @@ def summary_df2obsdict(smry_df: pd.DataFrame) -> List[dict]:
|
|
|
240
242
|
assert isinstance(smry_df, pd.DataFrame)
|
|
241
243
|
if "CLASS" in smry_df:
|
|
242
244
|
assert len(smry_df["CLASS"].unique()) == 1
|
|
243
|
-
smry_df.drop("CLASS", axis=1
|
|
245
|
+
smry_df = smry_df.drop("CLASS", axis=1)
|
|
244
246
|
|
|
245
247
|
smry_obs_list = []
|
|
246
248
|
if isinstance(smry_df, pd.DataFrame):
|
|
247
|
-
smry_df.dropna(axis=1, how="all"
|
|
249
|
+
smry_df = smry_df.dropna(axis=1, how="all")
|
|
248
250
|
|
|
249
251
|
if "DATE" not in smry_df:
|
|
250
252
|
raise ValueError("Can't have summary observation without a date")
|
|
@@ -258,10 +260,10 @@ def summary_df2obsdict(smry_df: pd.DataFrame) -> List[dict]:
|
|
|
258
260
|
for smrykey, smrykey_df in smry_df.groupby("KEY"):
|
|
259
261
|
smry_obs_element = {}
|
|
260
262
|
smry_obs_element["key"] = smrykey
|
|
261
|
-
if "COMMENT" in smrykey_df and not pd.
|
|
263
|
+
if "COMMENT" in smrykey_df and not pd.isna(smrykey_df["COMMENT"]).all():
|
|
262
264
|
smry_obs_element["comment"] = smrykey_df["COMMENT"].unique()[0]
|
|
263
265
|
if isinstance(smrykey_df, pd.DataFrame):
|
|
264
|
-
smrykey_df.drop("KEY", axis=1
|
|
266
|
+
smrykey_df = smrykey_df.drop("KEY", axis=1)
|
|
265
267
|
if "SUBCOMMENT" in smrykey_df:
|
|
266
268
|
smrykey_df["COMMENT"] = smrykey_df["SUBCOMMENT"]
|
|
267
269
|
del smrykey_df["SUBCOMMENT"]
|
|
@@ -290,13 +292,14 @@ def convert_dframe_date_to_str(dframe: pd.DataFrame) -> pd.DataFrame:
|
|
|
290
292
|
pd.DataFrame: DATE as a string type
|
|
291
293
|
"""
|
|
292
294
|
if "DATE" in dframe:
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
dframe["DATE"]
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
295
|
+
with pd.option_context("future.no_silent_downcasting", True):
|
|
296
|
+
dframe = dframe.copy()
|
|
297
|
+
dframe["DATE"] = (
|
|
298
|
+
dframe["DATE"]
|
|
299
|
+
.astype(str)
|
|
300
|
+
.replace(["NaT", "NaN", "nan"], np.nan)
|
|
301
|
+
.infer_objects(copy=False)
|
|
302
|
+
)
|
|
300
303
|
|
|
301
304
|
return dframe
|
|
302
305
|
|
|
@@ -317,14 +320,12 @@ def block_df2obsdict(block_df: pd.DataFrame) -> List[dict]:
|
|
|
317
320
|
block_obs_list = []
|
|
318
321
|
if "CLASS" in block_df:
|
|
319
322
|
assert len(block_df["CLASS"].unique()) == 1
|
|
320
|
-
block_df.drop("CLASS", axis=1
|
|
323
|
+
block_df = block_df.drop("CLASS", axis=1)
|
|
321
324
|
|
|
322
325
|
if "DATE" not in block_df:
|
|
323
326
|
raise ValueError("Can't have rft/block observation without a date")
|
|
324
327
|
|
|
325
|
-
block_df = convert_dframe_date_to_str(block_df)
|
|
326
|
-
|
|
327
|
-
block_df.dropna(axis=1, how="all", inplace=True)
|
|
328
|
+
block_df = convert_dframe_date_to_str(block_df).dropna(axis=1, how="all")
|
|
328
329
|
|
|
329
330
|
for blocklabel, blocklabel_df in block_df.groupby(["LABEL", "DATE"]):
|
|
330
331
|
blocklabel_dict = {}
|
|
@@ -372,13 +373,13 @@ def df2obsdict(obs_df: pd.DataFrame) -> dict:
|
|
|
372
373
|
return {}
|
|
373
374
|
|
|
374
375
|
# Process SUMMARY_OBSERVATION:
|
|
375
|
-
if "SUMMARY_OBSERVATION" in obs_df["CLASS"].
|
|
376
|
+
if "SUMMARY_OBSERVATION" in obs_df["CLASS"].to_numpy():
|
|
376
377
|
obsdict[CLASS_SHORTNAME["SUMMARY_OBSERVATION"]] = summary_df2obsdict(
|
|
377
378
|
obs_df.set_index("CLASS").loc[["SUMMARY_OBSERVATION"]]
|
|
378
379
|
)
|
|
379
380
|
|
|
380
381
|
# Process BLOCK_OBSERVATION:
|
|
381
|
-
if "BLOCK_OBSERVATION" in obs_df["CLASS"].
|
|
382
|
+
if "BLOCK_OBSERVATION" in obs_df["CLASS"].to_numpy():
|
|
382
383
|
obsdict[CLASS_SHORTNAME["BLOCK_OBSERVATION"]] = block_df2obsdict(
|
|
383
384
|
obs_df.set_index("CLASS").loc[["BLOCK_OBSERVATION"]]
|
|
384
385
|
)
|
|
@@ -408,9 +409,9 @@ def df2resinsight_df(obs_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
408
409
|
ri_dframe = obs_df.copy()
|
|
409
410
|
|
|
410
411
|
# Only SUMMARY_OBSERVATION is supported:
|
|
411
|
-
ri_dframe = ri_dframe[ri_dframe["CLASS"] == "SUMMARY_OBSERVATION"]
|
|
412
|
-
|
|
413
|
-
|
|
412
|
+
ri_dframe = ri_dframe[ri_dframe["CLASS"] == "SUMMARY_OBSERVATION"].rename(
|
|
413
|
+
{"KEY": "VECTOR"}, axis="columns"
|
|
414
|
+
)
|
|
414
415
|
|
|
415
416
|
# Ensure all vectors are present:
|
|
416
417
|
for ri_vec in ri_column_names:
|
|
@@ -169,7 +169,7 @@ def make_wateroilgas(dframe: pd.DataFrame, delta_s: float) -> pyscal.WaterOilGas
|
|
|
169
169
|
|
|
170
170
|
# If we have parsed family 2 input, KRO and KROW are not
|
|
171
171
|
# on the same row. Merge the rows into family 1 style:
|
|
172
|
-
if "KEYWORD" in dframe and "SOF3" in dframe["KEYWORD"].
|
|
172
|
+
if "KEYWORD" in dframe and "SOF3" in dframe["KEYWORD"].to_numpy():
|
|
173
173
|
sof3_rows = dframe["KEYWORD"] == "SOF3"
|
|
174
174
|
dframe.loc[sof3_rows, "SW"] = 1 - dframe[sof3_rows]["SO"]
|
|
175
175
|
swl = dframe["SW"].min()
|
|
@@ -406,9 +406,9 @@ def process_config(cfg: Dict[str, Any], root_path: Optional[Path] = None) -> Non
|
|
|
406
406
|
set(base_df.columns) == set(low_df.columns)
|
|
407
407
|
and set(base_df.columns) == set(high_df.columns)
|
|
408
408
|
):
|
|
409
|
-
logger.error("Base input had columns: %s", str(base_df.columns.
|
|
410
|
-
logger.error("Low input had columns: %s", str(low_df.columns.
|
|
411
|
-
logger.error("High input had columns: %s", str(high_df.columns.
|
|
409
|
+
logger.error("Base input had columns: %s", str(base_df.columns.to_numpy()))
|
|
410
|
+
logger.error("Low input had columns: %s", str(low_df.columns.to_numpy()))
|
|
411
|
+
logger.error("High input had columns: %s", str(high_df.columns.to_numpy()))
|
|
412
412
|
logger.error("Inconsistent input data, check keywords in input files")
|
|
413
413
|
sys.exit(1)
|
|
414
414
|
|
|
@@ -237,9 +237,9 @@ def merge_rft_ertobs(gendatacsv: str, obsdir: str) -> pd.DataFrame:
|
|
|
237
237
|
logger.info("Found %s active observation points", str(len(obs_df)))
|
|
238
238
|
|
|
239
239
|
if "report_step" in sim_df.columns:
|
|
240
|
-
return
|
|
240
|
+
return sim_df.merge(obs_df, how="left", on=["well", "order", "report_step"])
|
|
241
241
|
# Ensure backward compatibility where gendata_rft doesn't have report_step
|
|
242
|
-
return
|
|
242
|
+
return sim_df.merge(obs_df, how="left", on=["well", "order"])
|
|
243
243
|
|
|
244
244
|
|
|
245
245
|
def main() -> None:
|
|
@@ -176,10 +176,9 @@ def params2csv_main(args: argparse.Namespace) -> None:
|
|
|
176
176
|
header=None,
|
|
177
177
|
usecols=[0, 1],
|
|
178
178
|
sep=r"\s+",
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
"key", keep="last", inplace=True
|
|
179
|
+
).drop_duplicates(
|
|
180
|
+
"key",
|
|
181
|
+
keep="last",
|
|
183
182
|
) # if key is repeated, keep the last one.
|
|
184
183
|
transposed = paramtable.set_index("key").transpose()
|
|
185
184
|
if args.filenamecolumnname in transposed.columns:
|