subscript 1.14.2__tar.gz → 1.14.3__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.2 → subscript-1.14.3}/.github/workflows/codecov.yml +6 -4
- subscript-1.14.3/.github/workflows/linting.yml +58 -0
- {subscript-1.14.2 → subscript-1.14.3}/.github/workflows/subscript.yml +7 -17
- {subscript-1.14.2 → subscript-1.14.3}/PKG-INFO +6 -6
- {subscript-1.14.2 → subscript-1.14.3}/README.md +1 -1
- {subscript-1.14.2 → subscript-1.14.3}/ci/testkomodo.sh +1 -1
- {subscript-1.14.2 → subscript-1.14.3}/docs/overview.rst +0 -1
- {subscript-1.14.2 → subscript-1.14.3}/pyproject.toml +27 -7
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/__init__.py +1 -2
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/bjobsusers/bjobsusers.py +1 -1
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/casegen_upcars/casegen_upcars.py +2 -2
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/casegen_upcars/model.py +4 -9
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/casegen_upcars/udf.py +1 -2
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/check_swatinit/check_swatinit.py +31 -27
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/check_swatinit/pillarmodel.py +18 -25
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/check_swatinit/plotter.py +39 -39
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/convert_grid_format/convert_grid_format.py +2 -5
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv2ofmvol/csv2ofmvol.py +7 -5
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv_merge/csv_merge.py +2 -9
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv_stack/csv_stack.py +3 -6
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/eclcompress/eclcompress.py +11 -15
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/ecldiff2roff/ecldiff2roff.py +4 -8
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/field_statistics/field_statistics.py +70 -21
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +1 -1
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmuobs/fmuobs.py +16 -25
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmuobs/parsers.py +8 -10
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmuobs/writers.py +7 -7
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/grav_subs_maps/grav_subs_maps.py +10 -11
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/grav_subs_points/grav_subs_points.py +13 -15
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/hook_implementations/forward_model_steps.py +19 -92
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/interp_relperm/interp_relperm.py +20 -21
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +2 -7
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/ofmvol2csv/ofmvol2csv.py +13 -22
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/pack_sim/pack_sim.py +14 -14
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/params2csv/params2csv.py +0 -4
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/presentvalue/presentvalue.py +12 -16
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/prtvol2csv/prtvol2csv.py +10 -15
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/restartthinner/restartthinner.py +7 -4
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +8 -6
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/datafile_obj.py +4 -20
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/flux_obj.py +4 -4
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/fluxfile_obj.py +6 -4
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/summaryplot/summaryplot.py +6 -8
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sunsch/sunsch.py +32 -33
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sunsch/time_vector.py +9 -31
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sw_model_utilities/sw_model_utilities.py +14 -19
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/version.py +3 -3
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/vfp2csv/vfp2csv.py +2 -1
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/welltest_dpds/welltest_dpds.py +0 -2
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/PKG-INFO +6 -6
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/SOURCES.txt +1 -13
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/entry_points.txt +0 -1
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/requires.txt +4 -4
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_csv_merge.py +7 -3
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_csv_stack.py +2 -4
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_eclcompress.py +2 -2
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_field_statistics.py +175 -9
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_hook_implementations.py +0 -1
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_pack_sim.py +1 -3
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_params2csv.py +8 -16
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_prtvol2csv.py +2 -4
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_rmsecl_volumetrics.py +4 -5
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_summaryplot.py +2 -2
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_sunsch.py +1 -1
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/config_example.yml +15 -1
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/fmuconfig/output/global_variables.yml +3 -2
- {subscript-1.14.2 → subscript-1.14.3}/tests/utils.py +5 -7
- subscript-1.14.2/.pylintrc +0 -11
- subscript-1.14.2/docs/scripts/ri_wellmod.rst +0 -85
- subscript-1.14.2/src/subscript/ri_wellmod/ri_wellmod.py +0 -786
- subscript-1.14.2/tests/__init__.py +0 -0
- subscript-1.14.2/tests/test_ri_wellmod.py +0 -312
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -108146
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -14871
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -44938
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -35084
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -53941
- subscript-1.14.2/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -2787
- subscript-1.14.2/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -1377
- subscript-1.14.2/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -1704
- {subscript-1.14.2 → subscript-1.14.3}/.github/workflows/publish.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/.gitignore +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/LICENSE +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/SECURITY.md +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/Makefile +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/_templates/layout.html +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/conf.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/contributing.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/history.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/index.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/make.bat +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/field_statistics.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/grav_subs_maps.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/grav_subs_points.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/merge_unrst_files.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/prtvol2csv.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/docs/usage.rst +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/setup.cfg +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/convert_grid_format/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv2ofmvol/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv_merge/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/csv_stack/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/eclcompress/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/ecldiff2roff/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/field_statistics/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmu_copy_revision/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmuobs/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/grav_subs_maps/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/grav_subs_points/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/hook_implementations/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/interp_relperm/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/duf +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/nosim +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/merge_rft_ertobs/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/merge_unrst_files/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/merge_unrst_files/merge_unrst_files.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/ofmvol2csv/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/pack_sim/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/params2csv/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/presentvalue/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/prtvol2csv/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/restartthinner/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/ri_wellmod → subscript-1.14.3/src/subscript/rmsecl_volumetrics}/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/rmsecl_volumetrics → subscript-1.14.3/src/subscript/sector2fluxnum}/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/completions.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/flux_util.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.14.2/src/subscript/sector2fluxnum → subscript-1.14.3/src/subscript/summaryplot}/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/summaryplot → subscript-1.14.3/src/subscript/sunsch}/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/sunsch → subscript-1.14.3/src/subscript/sw_model_utilities}/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/sw_model_utilities → subscript-1.14.3/src/subscript/vfp2csv}/__init__.py +0 -0
- {subscript-1.14.2/src/subscript/vfp2csv → subscript-1.14.3/src/subscript/welltest_dpds}/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.14.2/src/subscript/welltest_dpds → subscript-1.14.3/tests}/__init__.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args0.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args1.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args10.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args11.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args2.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args3.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args4.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args5.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args6.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args7.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args8.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/baseline/test_summaryplotter_mpl_test_cmd_args9.png +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/conftest.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/edit/drogon.trans +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.faults +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.grid +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.multnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.multregt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.perm +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/grid/drogon.poro +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/props/drogon.pvt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/props/drogon.sattab +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/props/drogon.swatinit +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/regions/drogon.eqlnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/regions/drogon.fipnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/regions/drogon.fipzon +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/regions/drogon.pvtnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/regions/drogon.satnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/runspec/drogon.dimens +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/runspec/drogon.eqldims +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/runspec/drogon.gridopts +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/runspec/drogon.regdims +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/runspec/drogon.tabdims +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/55_33-1.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/55_33-1.wells +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/drogon_hist.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/vfp/A-1.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/vfp/A-2.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/vfp/A-3.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/schedule/vfp/A-4.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/solution/drogon.equil +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/solution/drogon.rxvd +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/solution/drogon.thpres +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/include/summary/drogon.summary +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/drogon/eclipse/model/DROGON-0.DATA +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/rms/README +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_bjobsusers.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_casegen_upcars.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_check_swatinit.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_check_swatinit_simulators.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_convert_grid_format.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_csv2ofmvol.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_docs.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_ecldiff2roff.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_eclinit2roff.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_fmu_copy_revision.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_fmuobs.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_fmuobs_parsers.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_fmuobs_writers.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_grav_subs_maps.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_grav_subs_points.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_interp_relperm.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_merge_rft_ertobs.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_merge_unrst_files.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_ofmvol2csv.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_presentvalue.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_restartthinner.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_sector2fluxnum.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_sw_model_utilities.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_vfp2csv.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/test_welltest_dpds.py +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/ERTBOX.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/Geogrid.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/files.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_0.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_3.roff +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/ert/model/0readme +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_field_statistics/rms/output/aps/ERTBOX.EGRID +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/ert-doc.csv +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/ert-doc.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/ert-doc.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_fmuobs/ri-obs.csv +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/HIST.EGRID +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/HIST.INIT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/HIST.UNRST +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/global_variables.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/grav_subs_maps.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/grav_subs_points.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/seabed.gri +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_gravity/station_coordinates.csv +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_unrst_files/HIST.UNRST +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_merge_unrst_files/PRED.UNRST +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/0readme.txt +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/DROGON_FIPNUM.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/DROGON_FIPZON.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/DROGON_INACTIVE_FIPNUM.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE_FLOW.PRT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/config.yml +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.14.2 → subscript-1.14.3}/tests/testdata_sunsch/options3.sch +0 -0
|
@@ -5,6 +5,10 @@ on:
|
|
|
5
5
|
push:
|
|
6
6
|
branches: [main]
|
|
7
7
|
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
11
|
+
|
|
8
12
|
jobs:
|
|
9
13
|
coverage:
|
|
10
14
|
runs-on: ${{ matrix.os }}
|
|
@@ -36,23 +40,21 @@ jobs:
|
|
|
36
40
|
enable-cache: true
|
|
37
41
|
python-version: "3.12"
|
|
38
42
|
|
|
39
|
-
- name: Install OPM-flow
|
|
43
|
+
- name: Install OPM-flow (for testing)
|
|
40
44
|
run: |
|
|
41
45
|
sudo apt-get install software-properties-common
|
|
42
46
|
sudo apt-add-repository ppa:opm/ppa
|
|
43
47
|
sudo apt-get update
|
|
44
48
|
sudo apt-get install mpi-default-bin
|
|
45
49
|
sudo apt-get install libopm-simulators-bin
|
|
46
|
-
sudo apt-get install resinsight
|
|
47
50
|
|
|
48
51
|
- name: Install subscript and test dependencies
|
|
49
52
|
run: |
|
|
50
53
|
uv pip install ".[tests]"
|
|
51
54
|
|
|
52
|
-
- name: Log OPM-Flow
|
|
55
|
+
- name: Log OPM-Flow version
|
|
53
56
|
run: |
|
|
54
57
|
flow --version
|
|
55
|
-
ResInsight --console --version
|
|
56
58
|
|
|
57
59
|
- name: Generate coverage report
|
|
58
60
|
run: |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
release:
|
|
11
|
+
types:
|
|
12
|
+
- published
|
|
13
|
+
schedule:
|
|
14
|
+
# Run nightly to check that tests are working with latest dependencies
|
|
15
|
+
- cron: "0 0 * * *"
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
UV_SYSTEM_PYTHON: 1
|
|
19
|
+
|
|
20
|
+
concurrency:
|
|
21
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
22
|
+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
lint:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
strategy:
|
|
28
|
+
matrix:
|
|
29
|
+
python-version: ["3.12"]
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout commit locally
|
|
33
|
+
uses: actions/checkout@v5
|
|
34
|
+
with:
|
|
35
|
+
fetch-depth: 0
|
|
36
|
+
|
|
37
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
38
|
+
uses: actions/setup-python@v5
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python-version }}
|
|
41
|
+
|
|
42
|
+
- name: Install uv
|
|
43
|
+
uses: astral-sh/setup-uv@v6
|
|
44
|
+
with:
|
|
45
|
+
enable-cache: true
|
|
46
|
+
python-version: ${{ matrix.python-version }}
|
|
47
|
+
|
|
48
|
+
- name: Install subscript with dependencies
|
|
49
|
+
run: |
|
|
50
|
+
uv pip install ".[tests, docs]"
|
|
51
|
+
|
|
52
|
+
- name: Format and lint with ruff
|
|
53
|
+
run: |
|
|
54
|
+
ruff format . --check
|
|
55
|
+
ruff check .
|
|
56
|
+
|
|
57
|
+
- name: Check typing with mypy
|
|
58
|
+
run: mypy src/subscript
|
|
@@ -18,6 +18,10 @@ env:
|
|
|
18
18
|
MPLBACKEND: Agg
|
|
19
19
|
UV_SYSTEM_PYTHON: 1
|
|
20
20
|
|
|
21
|
+
concurrency:
|
|
22
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
23
|
+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
24
|
+
|
|
21
25
|
jobs:
|
|
22
26
|
subscript:
|
|
23
27
|
runs-on: ubuntu-latest
|
|
@@ -48,43 +52,29 @@ jobs:
|
|
|
48
52
|
enable-cache: true
|
|
49
53
|
python-version: ${{ matrix.python-version }}
|
|
50
54
|
|
|
51
|
-
- name: Install OPM-flow
|
|
55
|
+
- name: Install OPM-flow (for testing)
|
|
52
56
|
run: |
|
|
53
57
|
sudo apt-get install software-properties-common
|
|
54
58
|
sudo apt-add-repository ppa:opm/ppa
|
|
55
59
|
sudo apt-get update
|
|
56
60
|
sudo apt-get install mpi-default-bin
|
|
57
61
|
sudo apt-get install libopm-simulators-bin
|
|
58
|
-
sudo apt-get install resinsight
|
|
59
62
|
|
|
60
63
|
- name: Install subscript with dependencies
|
|
61
64
|
if: ${{ always() }}
|
|
62
65
|
run: |
|
|
63
66
|
uv pip install ".[tests, docs]"
|
|
64
67
|
|
|
65
|
-
- name: Log OPM-Flow
|
|
68
|
+
- name: Log OPM-Flow version
|
|
66
69
|
run: |
|
|
67
70
|
flow --version
|
|
68
|
-
ResInsight --console --version
|
|
69
71
|
|
|
70
72
|
- name: List all installed packages
|
|
71
73
|
run: uv pip freeze
|
|
72
74
|
|
|
73
|
-
- name: Format with ruff
|
|
74
|
-
if: ${{ always() }}
|
|
75
|
-
run: ruff format . --check
|
|
76
|
-
|
|
77
|
-
- name: Lint with ruff
|
|
78
|
-
if: ${{ always() }}
|
|
79
|
-
run: ruff check .
|
|
80
|
-
|
|
81
|
-
- name: Check typing with mypy
|
|
82
|
-
if: ${{ always() }}
|
|
83
|
-
run: mypy src/subscript
|
|
84
|
-
|
|
85
75
|
- name: Run tests
|
|
86
76
|
if: ${{ always() }}
|
|
87
|
-
run: pytest -n
|
|
77
|
+
run: pytest -n logical tests --mpl
|
|
88
78
|
|
|
89
79
|
- name: Syntax check documentation
|
|
90
80
|
if: ${{ always() }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.3
|
|
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
|
|
@@ -705,14 +705,11 @@ Requires-Dist: matplotlib
|
|
|
705
705
|
Requires-Dist: numpy
|
|
706
706
|
Requires-Dist: opm>=2023.04
|
|
707
707
|
Requires-Dist: pandas
|
|
708
|
+
Requires-Dist: pydantic
|
|
708
709
|
Requires-Dist: pyscal
|
|
709
710
|
Requires-Dist: pyyaml
|
|
710
|
-
Requires-Dist: rips
|
|
711
711
|
Requires-Dist: scipy
|
|
712
712
|
Requires-Dist: seaborn
|
|
713
|
-
Requires-Dist: segyio
|
|
714
|
-
Requires-Dist: shapely
|
|
715
|
-
Requires-Dist: xlrd
|
|
716
713
|
Requires-Dist: xtgeo
|
|
717
714
|
Provides-Extra: tests
|
|
718
715
|
Requires-Dist: mypy; extra == "tests"
|
|
@@ -727,6 +724,9 @@ Requires-Dist: ruff; extra == "tests"
|
|
|
727
724
|
Requires-Dist: types-Jinja2; extra == "tests"
|
|
728
725
|
Requires-Dist: types-PyYAML; extra == "tests"
|
|
729
726
|
Requires-Dist: types-python-dateutil; extra == "tests"
|
|
727
|
+
Requires-Dist: pandas-stubs; extra == "tests"
|
|
728
|
+
Requires-Dist: types-seaborn; extra == "tests"
|
|
729
|
+
Requires-Dist: scipy-stubs; extra == "tests"
|
|
730
730
|
Provides-Extra: docs
|
|
731
731
|
Requires-Dist: autoapi; extra == "docs"
|
|
732
732
|
Requires-Dist: sphinx; extra == "docs"
|
|
@@ -740,7 +740,7 @@ Dynamic: license-file
|
|
|
740
740
|
# subscript
|
|
741
741
|
|
|
742
742
|
[](https://github.com/equinor/subscript/actions/workflows/subscript.yml)
|
|
743
|
-
[](https://codecov.io/gh/equinor/subscript)
|
|
744
744
|

|
|
745
745
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
746
746
|
[](https://github.com/astral-sh/ruff)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# subscript
|
|
2
2
|
|
|
3
3
|
[](https://github.com/equinor/subscript/actions/workflows/subscript.yml)
|
|
4
|
-
[](https://codecov.io/gh/equinor/subscript)
|
|
5
5
|

|
|
6
6
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
7
7
|
[](https://github.com/astral-sh/ruff)
|
|
@@ -36,6 +36,6 @@ start_tests () {
|
|
|
36
36
|
# (this script becomes flaky if set -e is active)
|
|
37
37
|
source /prog/res/ecl/script/eclrun.bash
|
|
38
38
|
eval "$SHELLOPTS_BEFORE"
|
|
39
|
-
|
|
39
|
+
export PATH=$PATH:/global/bin # For bjobsusers tests
|
|
40
40
|
pytest -n auto --flow-simulator="/project/res/$os_arch/bin/flowdaily" --eclipse-simulator="eclrun"
|
|
41
41
|
}
|
|
@@ -42,14 +42,11 @@ dependencies = [
|
|
|
42
42
|
"numpy",
|
|
43
43
|
"opm>=2023.04",
|
|
44
44
|
"pandas",
|
|
45
|
+
"pydantic",
|
|
45
46
|
"pyscal",
|
|
46
47
|
"pyyaml",
|
|
47
|
-
"rips",
|
|
48
48
|
"scipy",
|
|
49
49
|
"seaborn",
|
|
50
|
-
"segyio",
|
|
51
|
-
"shapely",
|
|
52
|
-
"xlrd",
|
|
53
50
|
"xtgeo",
|
|
54
51
|
]
|
|
55
52
|
|
|
@@ -67,6 +64,9 @@ tests = [
|
|
|
67
64
|
"types-Jinja2",
|
|
68
65
|
"types-PyYAML",
|
|
69
66
|
"types-python-dateutil",
|
|
67
|
+
"pandas-stubs",
|
|
68
|
+
"types-seaborn",
|
|
69
|
+
"scipy-stubs",
|
|
70
70
|
]
|
|
71
71
|
docs = [
|
|
72
72
|
"autoapi",
|
|
@@ -106,7 +106,6 @@ params2csv = "subscript.params2csv.params2csv:main"
|
|
|
106
106
|
presentvalue = "subscript.presentvalue.presentvalue:main"
|
|
107
107
|
prtvol2csv = "subscript.prtvol2csv.prtvol2csv:main"
|
|
108
108
|
restartthinner = "subscript.restartthinner.restartthinner:main"
|
|
109
|
-
ri_wellmod = "subscript.ri_wellmod.ri_wellmod:main"
|
|
110
109
|
rmsecl_volumetrics = "subscript.rmsecl_volumetrics.rmsecl_volumetrics:main"
|
|
111
110
|
sector2fluxnum = "subscript.sector2fluxnum.sector2fluxnum:main"
|
|
112
111
|
summaryplot = "subscript.summaryplot.summaryplot:main"
|
|
@@ -136,6 +135,26 @@ script-files = [
|
|
|
136
135
|
]
|
|
137
136
|
|
|
138
137
|
[tool.mypy]
|
|
138
|
+
|
|
139
|
+
plugins = ["pydantic.mypy"]
|
|
140
|
+
|
|
141
|
+
strict_equality = true
|
|
142
|
+
extra_checks = true
|
|
143
|
+
|
|
144
|
+
[[tool.mypy.overrides]]
|
|
145
|
+
module = [
|
|
146
|
+
"xtgeo.*",
|
|
147
|
+
"opm.*",
|
|
148
|
+
"resdata.*",
|
|
149
|
+
"res2df.*",
|
|
150
|
+
"ert",
|
|
151
|
+
"resfo",
|
|
152
|
+
"grid3d_maps.*",
|
|
153
|
+
"fmu.tools.*",
|
|
154
|
+
"pyscal",
|
|
155
|
+
"cwrap",
|
|
156
|
+
"grpc"
|
|
157
|
+
]
|
|
139
158
|
ignore_missing_imports = true
|
|
140
159
|
|
|
141
160
|
[tool.pylint]
|
|
@@ -152,11 +171,10 @@ norecursedirs = [
|
|
|
152
171
|
"build",
|
|
153
172
|
"opm-common",
|
|
154
173
|
]
|
|
155
|
-
addopts = "-ra --strict-markers --ignore=docs/conf.py --ignore
|
|
174
|
+
addopts = "-ra --strict-markers --ignore=docs/conf.py --ignore=.eggs"
|
|
156
175
|
markers = [
|
|
157
176
|
"integration: Marks a test as an integration test",
|
|
158
177
|
"plot: Marks a test as interactive, plots will flash to the screen",
|
|
159
|
-
"ri_dev: A test using a dev version of ResInsight, skipped by default"
|
|
160
178
|
]
|
|
161
179
|
|
|
162
180
|
[tool.rstcheck]
|
|
@@ -179,6 +197,8 @@ select = [
|
|
|
179
197
|
"SIM",
|
|
180
198
|
"W",
|
|
181
199
|
"PD",
|
|
200
|
+
"UP",
|
|
201
|
+
"RUF",
|
|
182
202
|
]
|
|
183
203
|
ignore = [
|
|
184
204
|
"C901",
|
|
@@ -15,7 +15,7 @@ def detect_os(release_file: Path = Path("/etc/redhat-release")) -> str:
|
|
|
15
15
|
default_os_version = "x86_64_RH_7"
|
|
16
16
|
|
|
17
17
|
if release_file.is_file():
|
|
18
|
-
with open(release_file,
|
|
18
|
+
with open(release_file, encoding="utf-8") as buffer:
|
|
19
19
|
tokens = buffer.read().split()
|
|
20
20
|
for t in tokens:
|
|
21
21
|
if "." in t:
|
|
@@ -26,7 +26,6 @@ def detect_os(release_file: Path = Path("/etc/redhat-release")) -> str:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def getLogger(module_name="subscript"):
|
|
29
|
-
# pylint: disable=invalid-name
|
|
30
29
|
"""Provides a unified logger for subscript scripts.
|
|
31
30
|
|
|
32
31
|
Scripts in subscript are encouraged to use logging.info() instead of
|
|
@@ -59,7 +59,7 @@ def main():
|
|
|
59
59
|
parser = arg_parse.parse_args()
|
|
60
60
|
|
|
61
61
|
# YAML format
|
|
62
|
-
with open(parser.config_file,
|
|
62
|
+
with open(parser.config_file, encoding="utf8") as file_handle:
|
|
63
63
|
config = load(file_handle.read(), Loader=Loader)
|
|
64
64
|
|
|
65
65
|
general = config["General"]
|
|
@@ -518,7 +518,7 @@ def main():
|
|
|
518
518
|
[vug1_swatinit, vug2_swatinit],
|
|
519
519
|
)
|
|
520
520
|
|
|
521
|
-
with open(template_file,
|
|
521
|
+
with open(template_file, encoding="utf8") as file_handle:
|
|
522
522
|
buffer_ = mask_token(file_handle.read(), unmask=False)
|
|
523
523
|
case_template = env.from_string(buffer_)
|
|
524
524
|
ast = env.parse(buffer_)
|
|
@@ -601,7 +601,6 @@ Initializing model
|
|
|
601
601
|
def _create_property(
|
|
602
602
|
self, keyword, matrix_property, streak_property, fracture_property, vug_property
|
|
603
603
|
):
|
|
604
|
-
# pylint: disable=too-many-arguments
|
|
605
604
|
streak_property = listify(streak_property, len(self._streak_k))
|
|
606
605
|
assert len(streak_property) == len(self._streak_k), (
|
|
607
606
|
f"Number of input {keyword} is not equal to number of streak"
|
|
@@ -630,7 +629,6 @@ Initializing model
|
|
|
630
629
|
fracture_y_property,
|
|
631
630
|
vug_property,
|
|
632
631
|
):
|
|
633
|
-
# pylint: disable=too-many-arguments
|
|
634
632
|
"""Distribute property in the cell with anisotropy in fracture property"""
|
|
635
633
|
streak_property = listify(streak_property, len(self._streak_k))
|
|
636
634
|
assert len(streak_property) == len(self._streak_k), (
|
|
@@ -704,7 +702,6 @@ Initializing model
|
|
|
704
702
|
def export_props(
|
|
705
703
|
self, filename, keyword, matrix_prop, streak_prop, frac_props, vug_prop
|
|
706
704
|
):
|
|
707
|
-
# pylint: disable=too-many-arguments
|
|
708
705
|
"""Print out grid property to Eclipse format file"""
|
|
709
706
|
buffer_ = io.StringIO()
|
|
710
707
|
print(
|
|
@@ -805,8 +802,7 @@ Initializing model
|
|
|
805
802
|
for _i in range(self._xv.shape[0]):
|
|
806
803
|
for _j in range(self._xv.shape[1]):
|
|
807
804
|
print(
|
|
808
|
-
#
|
|
809
|
-
"{{x:{0}}} {{y:{0}}} {{z:{0}}} "
|
|
805
|
+
"{{x:{0}}} {{y:{0}}} {{z:{0}}} " # noqa: UP032
|
|
810
806
|
"{{x:{0}}} {{y:{0}}} {{z:{0}}}".format(
|
|
811
807
|
self._eclipse_output_float
|
|
812
808
|
).format(x=self._xv[_i, _j], y=self._yv[_i, _j], z=0.0),
|
|
@@ -873,7 +869,6 @@ Initializing model
|
|
|
873
869
|
self._vug_idx.fill(0)
|
|
874
870
|
|
|
875
871
|
def bounded_box(self, i_1, i_2, j_1, j_2, k_1, k_2):
|
|
876
|
-
# pylint: disable=too-many-arguments
|
|
877
872
|
"""Make sure the box is within model domain"""
|
|
878
873
|
return [
|
|
879
874
|
max(i_1, 0),
|
|
@@ -1183,13 +1178,13 @@ Initializing model
|
|
|
1183
1178
|
> 1 : N/S- or E/W- blocks are larger than center blocks
|
|
1184
1179
|
< 1 : center blocks are larger than N/S- or E/W- blocks
|
|
1185
1180
|
"""
|
|
1186
|
-
result = [0] * 2
|
|
1181
|
+
result = [0.0] * 2
|
|
1187
1182
|
for idx, val in enumerate([self._matrix_x_arr, self._matrix_y_arr]):
|
|
1188
1183
|
if len(val) < 3:
|
|
1189
1184
|
result[idx] = 0.0
|
|
1190
1185
|
else:
|
|
1191
|
-
idx_start =
|
|
1192
|
-
idx_end =
|
|
1186
|
+
idx_start = round(len(val) / 3.0)
|
|
1187
|
+
idx_end = round(len(val) * 2.0 / 3.0)
|
|
1193
1188
|
center_block = sum(val[idx_start:idx_end])
|
|
1194
1189
|
result[idx] = 0.5 * (sum(val) - center_block - 1)
|
|
1195
1190
|
return result[0], result[1]
|
|
@@ -22,8 +22,7 @@ def iter_flatten(iterable):
|
|
|
22
22
|
it_obj = iter(iterable)
|
|
23
23
|
for enum_obj in it_obj:
|
|
24
24
|
if isinstance(enum_obj, (list, tuple)):
|
|
25
|
-
|
|
26
|
-
yield flatten_obj
|
|
25
|
+
yield from iter_flatten(enum_obj)
|
|
27
26
|
else:
|
|
28
27
|
yield enum_obj
|
|
29
28
|
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
4
|
import sys
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
|
+
import matplotlib.pyplot as plt
|
|
7
8
|
import numpy as np
|
|
9
|
+
import numpy.typing as npt
|
|
8
10
|
import pandas as pd
|
|
9
11
|
import res2df
|
|
10
|
-
from matplotlib import pyplot
|
|
11
12
|
|
|
12
13
|
import subscript
|
|
13
14
|
from subscript.check_swatinit import plotter
|
|
@@ -76,9 +77,9 @@ def main() -> None:
|
|
|
76
77
|
plotter.wvol_waterfall(qc_vols)
|
|
77
78
|
if args.volplotfile:
|
|
78
79
|
print(f"Dumping volume plot to {args.volplotfile}")
|
|
79
|
-
|
|
80
|
+
plt.savefig(args.volplotfile)
|
|
80
81
|
if args.volplot:
|
|
81
|
-
|
|
82
|
+
plt.show()
|
|
82
83
|
|
|
83
84
|
if (args.plotfile or args.plot) and args.eqlnum not in qc_frame[
|
|
84
85
|
"EQLNUM"
|
|
@@ -88,9 +89,9 @@ def main() -> None:
|
|
|
88
89
|
plotter.plot_qc_panels(qc_frame[qc_frame["EQLNUM"] == args.eqlnum])
|
|
89
90
|
if args.plotfile:
|
|
90
91
|
print(f"Dumping plot to {args.plotfile}")
|
|
91
|
-
|
|
92
|
+
plt.savefig(args.plotfile)
|
|
92
93
|
if args.plot:
|
|
93
|
-
|
|
94
|
+
plt.show()
|
|
94
95
|
|
|
95
96
|
|
|
96
97
|
def check_applicability(eclfiles: res2df.ResdataFiles) -> None:
|
|
@@ -137,7 +138,7 @@ def reorder_dframe_for_nonnans(dframe: pd.DataFrame) -> pd.DataFrame:
|
|
|
137
138
|
)
|
|
138
139
|
|
|
139
140
|
|
|
140
|
-
def human_report_qc_vols(qc_vols:
|
|
141
|
+
def human_report_qc_vols(qc_vols: dict[str, float]) -> str:
|
|
141
142
|
"""Produce a string with a human report for volumes
|
|
142
143
|
|
|
143
144
|
Arguments:
|
|
@@ -299,7 +300,7 @@ def make_qc_gridframe(eclfiles: res2df.ResdataFiles) -> pd.DataFrame:
|
|
|
299
300
|
return grid_df
|
|
300
301
|
|
|
301
302
|
|
|
302
|
-
def qc_flag(qc_frame: pd.DataFrame) -> pd.
|
|
303
|
+
def qc_flag(qc_frame: pd.DataFrame) -> pd.Series:
|
|
303
304
|
"""Compute a series categorizing the QC type of the cell, determining
|
|
304
305
|
how SWATINIT behaved in that cell
|
|
305
306
|
|
|
@@ -414,7 +415,7 @@ def qc_flag(qc_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
414
415
|
return qc_col.fillna(__UNKNOWN__)
|
|
415
416
|
|
|
416
417
|
|
|
417
|
-
def qc_volumes(qc_frame: pd.DataFrame) ->
|
|
418
|
+
def qc_volumes(qc_frame: pd.DataFrame) -> dict[str, float]:
|
|
418
419
|
"""Compute numbers relevant for QC of saturation initialization of a
|
|
419
420
|
reservoir model.
|
|
420
421
|
|
|
@@ -428,17 +429,17 @@ def qc_volumes(qc_frame: pd.DataFrame) -> Dict[str, float]:
|
|
|
428
429
|
dict: Summed water and hydrocarbon reservoir volumes for different cell
|
|
429
430
|
groupings.
|
|
430
431
|
"""
|
|
431
|
-
watergains:
|
|
432
|
+
watergains: dict[str, float]
|
|
432
433
|
watergains = {}
|
|
433
434
|
|
|
434
435
|
if "QC_FLAG" in qc_frame:
|
|
435
436
|
# Ensure all categories are represented:
|
|
436
|
-
for
|
|
437
|
-
watergains[
|
|
437
|
+
for qc_categ in QC_FLAGS:
|
|
438
|
+
watergains[qc_categ] = 0.0
|
|
438
439
|
|
|
439
440
|
# Overwrite dict values with correct figures:
|
|
440
441
|
for qc_cat, qc_subframe in qc_frame.groupby("QC_FLAG"):
|
|
441
|
-
watergains[qc_cat] = (
|
|
442
|
+
watergains[str(qc_cat)] = (
|
|
442
443
|
(qc_subframe["SWAT"] - qc_subframe["SWATINIT"]) * qc_subframe["PORV"]
|
|
443
444
|
).sum()
|
|
444
445
|
|
|
@@ -458,14 +459,14 @@ def qc_volumes(qc_frame: pd.DataFrame) -> Dict[str, float]:
|
|
|
458
459
|
|
|
459
460
|
|
|
460
461
|
def _evaluate_pc(
|
|
461
|
-
swats:
|
|
462
|
-
scale_vert:
|
|
463
|
-
swls:
|
|
464
|
-
swus:
|
|
462
|
+
swats: npt.NDArray[np.float64],
|
|
463
|
+
scale_vert: npt.NDArray[np.float64],
|
|
464
|
+
swls: npt.NDArray[np.float64] | None,
|
|
465
|
+
swus: npt.NDArray[np.float64] | None,
|
|
465
466
|
satfunc: pd.DataFrame,
|
|
466
467
|
sat_name: str = "SW",
|
|
467
468
|
pc_name: str = "PCOW",
|
|
468
|
-
) ->
|
|
469
|
+
) -> list[Any]:
|
|
469
470
|
"""Evaluate pc as a function of saturation on a scaled Pc-curve
|
|
470
471
|
|
|
471
472
|
Args:
|
|
@@ -488,9 +489,9 @@ def _evaluate_pc(
|
|
|
488
489
|
sw_min = satfunc[sat_name].min()
|
|
489
490
|
sw_max = satfunc[sat_name].max()
|
|
490
491
|
if swls is None:
|
|
491
|
-
swls =
|
|
492
|
+
swls = np.full(len(swats), sw_min)
|
|
492
493
|
if swus is None:
|
|
493
|
-
swus =
|
|
494
|
+
swus = np.full(len(swats), sw_max)
|
|
494
495
|
for swat, pc_scaling, swl, swu in zip(swats, scale_vert, swls, swus):
|
|
495
496
|
p_cap.append(
|
|
496
497
|
np.interp(
|
|
@@ -533,18 +534,21 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
|
|
|
533
534
|
|
|
534
535
|
if "SATNUM" not in qc_frame or "PC_SCALING" not in qc_frame:
|
|
535
536
|
return p_cap
|
|
536
|
-
|
|
537
537
|
for satnum, satnum_frame in qc_frame.groupby("SATNUM"):
|
|
538
538
|
if "SWLPC" in satnum_frame:
|
|
539
|
-
swls = satnum_frame["SWLPC"].to_numpy()
|
|
539
|
+
swls = satnum_frame["SWLPC"].to_numpy(dtype=np.float64)
|
|
540
540
|
elif "SWL" in satnum_frame:
|
|
541
|
-
swls = satnum_frame["SWL"].to_numpy()
|
|
541
|
+
swls = satnum_frame["SWL"].to_numpy(dtype=np.float64)
|
|
542
542
|
else:
|
|
543
543
|
swls = None
|
|
544
|
-
swus =
|
|
544
|
+
swus = (
|
|
545
|
+
satnum_frame["SWU"].to_numpy(dtype=np.float64)
|
|
546
|
+
if "SWU" in satnum_frame
|
|
547
|
+
else None
|
|
548
|
+
)
|
|
545
549
|
p_cap[satnum_frame.index] = _evaluate_pc(
|
|
546
|
-
satnum_frame["SWAT"].to_numpy(),
|
|
547
|
-
satnum_frame["PC_SCALING"].to_numpy(),
|
|
550
|
+
satnum_frame["SWAT"].to_numpy(dtype=np.float64),
|
|
551
|
+
satnum_frame["PC_SCALING"].to_numpy(dtype=np.float64),
|
|
548
552
|
swls,
|
|
549
553
|
swus,
|
|
550
554
|
satfunc_df[satfunc_df["SATNUM"] == satnum],
|
|
@@ -607,7 +611,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
607
611
|
)
|
|
608
612
|
if "KEYWORD" in equil_df:
|
|
609
613
|
equil_df = equil_df[equil_df["KEYWORD"] == "EQUIL"]
|
|
610
|
-
equil_df = equil_df[["Z_DATUM", "PRESSURE_DATUM", "EQLNUM", "OIP_INIT"
|
|
614
|
+
equil_df = equil_df[["Z_DATUM", "PRESSURE_DATUM", "EQLNUM", "OIP_INIT", *contacts]]
|
|
611
615
|
equil_df["EQLNUM"] = equil_df["EQLNUM"].astype(int)
|
|
612
616
|
assert not pd.isna(equil_df).any().any(), (
|
|
613
617
|
f"BUG: NaNs in equil dataframe:\n{equil_df}"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import textwrap
|
|
2
|
-
from typing import List, Optional, Union
|
|
3
2
|
|
|
4
3
|
import numpy as np
|
|
5
4
|
|
|
@@ -11,31 +10,26 @@ class PillarModel:
|
|
|
11
10
|
The reservoir model is parametrizable in terms of options related
|
|
12
11
|
to SWATINIT analysis"""
|
|
13
12
|
|
|
14
|
-
# pylint: disable=too-many-arguments,too-many-instance-attributes,too-many-locals
|
|
15
13
|
def __init__(
|
|
16
14
|
self,
|
|
17
15
|
cells: int = 1,
|
|
18
16
|
apex: int = 1000,
|
|
19
|
-
phases:
|
|
20
|
-
perm:
|
|
21
|
-
poro:
|
|
22
|
-
swatinit:
|
|
23
|
-
satnum:
|
|
24
|
-
swl:
|
|
25
|
-
swlpc:
|
|
26
|
-
|
|
27
|
-
] = None, #
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
] = None, # One value pr. eqlnum region, also used for gwc.
|
|
36
|
-
goc: Optional[
|
|
37
|
-
Union[List[float], List[str]]
|
|
38
|
-
] = None, # One value pr. eqlnum region
|
|
17
|
+
phases: list[str] | None = None,
|
|
18
|
+
perm: list[float] | None = None,
|
|
19
|
+
poro: list[float] | None = None,
|
|
20
|
+
swatinit: list[float] | None = None,
|
|
21
|
+
satnum: list[int] | None = None, # one value pr. cell
|
|
22
|
+
swl: list[float] | None = None, # first saturation in swof, one pr. satnum
|
|
23
|
+
swlpc: list[float]
|
|
24
|
+
| None = None, # swl scaler for pc only, leaving kr unmodified
|
|
25
|
+
swu: list[float] | None = None, # maximum saturation in swof, one pr. satnum
|
|
26
|
+
maxpc: list[float] | None = None, # max pc in SWOF
|
|
27
|
+
minpc: list[float] | None = None, # pc at sw=1 in SWOF
|
|
28
|
+
ppcwmax: list[float] | None = None, # PPCWMAX keyword.
|
|
29
|
+
eqlnum: list[int] | None = None, # One value pr cell
|
|
30
|
+
owc: list[float]
|
|
31
|
+
| None = None, # One value pr. eqlnum region, also used for gwc.
|
|
32
|
+
goc: list[float] | list[str] | None = None, # One value pr. eqlnum region
|
|
39
33
|
oip_init: int = 0, # EQUIL item 9. Eclipse default is -5
|
|
40
34
|
filleps: str = "FILLEPS",
|
|
41
35
|
rptrst: str = "ALLPROPS",
|
|
@@ -117,7 +111,7 @@ class PillarModel:
|
|
|
117
111
|
else:
|
|
118
112
|
self.owc = owc
|
|
119
113
|
|
|
120
|
-
self.goc:
|
|
114
|
+
self.goc: list[str] | list[float]
|
|
121
115
|
if goc is None:
|
|
122
116
|
self.goc = ["1*"] * max(self.eqlnum)
|
|
123
117
|
else:
|
|
@@ -149,7 +143,7 @@ class PillarModel:
|
|
|
149
143
|
# we should not output SWATINIT keyword.
|
|
150
144
|
else:
|
|
151
145
|
# Mock a SWATINIT (constant above contact)
|
|
152
|
-
self.swatinit = [0] * self.cells
|
|
146
|
+
self.swatinit = [0.0] * self.cells
|
|
153
147
|
for cell_idx, _ in enumerate(self.midpoints):
|
|
154
148
|
if self.midpoints[cell_idx] <= self.owc[self.eqlnum[cell_idx] - 1]:
|
|
155
149
|
self.swatinit[cell_idx] = 0.4
|
|
@@ -362,7 +356,6 @@ PVDG
|
|
|
362
356
|
return string
|
|
363
357
|
|
|
364
358
|
def schedule(self) -> str:
|
|
365
|
-
# pylint: disable=no-self-use
|
|
366
359
|
"""Make a string for the SCHEDULE section"""
|
|
367
360
|
string = "SCHEDULE\n\n"
|
|
368
361
|
string += "TSTEP \n 1 / \n"
|