subscript 1.0.0__tar.gz → 1.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. {subscript-1.0.0 → subscript-1.1.1}/.github/workflows/subscript.yml +2 -6
  2. {subscript-1.0.0 → subscript-1.1.1}/PKG-INFO +3 -3
  3. {subscript-1.0.0 → subscript-1.1.1}/docs/overview.rst +0 -1
  4. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/eclcompress.rst +1 -3
  5. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.rst +1 -1
  6. {subscript-1.0.0 → subscript-1.1.1}/pyproject.toml +12 -3
  7. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/check_swatinit.py +17 -17
  8. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclcompress/eclcompress.py +12 -47
  9. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/parsers.py +5 -1
  10. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/interp_relperm/interp_relperm.py +3 -3
  11. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/presentvalue/presentvalue.py +3 -3
  12. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/prtvol2csv/prtvol2csv.py +3 -3
  13. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/restartthinner/restartthinner.py +13 -13
  14. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/completions.py +2 -2
  15. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_obj.py +14 -14
  16. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/flux_util.py +7 -7
  17. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/sector2fluxnum.py +13 -13
  18. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/summaryplot/summaryplot.py +13 -13
  19. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/version.py +2 -2
  20. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/welltest_dpds/welltest_dpds.py +3 -3
  21. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/PKG-INFO +3 -3
  22. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/SOURCES.txt +0 -9
  23. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/entry_points.txt +0 -1
  24. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/requires.txt +2 -2
  25. {subscript-1.0.0 → subscript-1.1.1}/tests/test_check_swatinit_simulators.py +3 -3
  26. {subscript-1.0.0 → subscript-1.1.1}/tests/test_eclcompress.py +0 -39
  27. {subscript-1.0.0 → subscript-1.1.1}/tests/test_interp_relperm.py +2 -2
  28. {subscript-1.0.0 → subscript-1.1.1}/tests/test_presentvalue.py +8 -8
  29. {subscript-1.0.0 → subscript-1.1.1}/tests/test_summaryplot.py +2 -2
  30. {subscript-1.0.0 → subscript-1.1.1}/tests/test_welltest_dpds.py +6 -6
  31. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.csv +1 -0
  32. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.obs +9 -1
  33. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ert-doc.yml +4 -0
  34. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/ri-obs.csv +1 -0
  35. subscript-1.0.0/docs/scripts/co2_containment.rst +0 -71
  36. subscript-1.0.0/docs/scripts/images/co2_containment_A.png +0 -0
  37. subscript-1.0.0/setup.py +0 -15
  38. subscript-1.0.0/src/subscript/co2_containment/calculate.py +0 -205
  39. subscript-1.0.0/src/subscript/co2_containment/co2_calculation.py +0 -921
  40. subscript-1.0.0/src/subscript/co2_containment/co2_containment.py +0 -333
  41. subscript-1.0.0/tests/__init__.py +0 -0
  42. subscript-1.0.0/tests/test_co2_calculate.py +0 -301
  43. subscript-1.0.0/tests/test_co2_containment.py +0 -154
  44. {subscript-1.0.0 → subscript-1.1.1}/.flake8 +0 -0
  45. {subscript-1.0.0 → subscript-1.1.1}/.github/workflows/codecov.yml +0 -0
  46. {subscript-1.0.0 → subscript-1.1.1}/.github/workflows/publish.yml +0 -0
  47. {subscript-1.0.0 → subscript-1.1.1}/.gitignore +0 -0
  48. {subscript-1.0.0 → subscript-1.1.1}/.pylintrc +0 -0
  49. {subscript-1.0.0 → subscript-1.1.1}/LICENSE +0 -0
  50. {subscript-1.0.0 → subscript-1.1.1}/README.md +0 -0
  51. {subscript-1.0.0 → subscript-1.1.1}/SECURITY.md +0 -0
  52. {subscript-1.0.0 → subscript-1.1.1}/ci/testkomodo.sh +0 -0
  53. {subscript-1.0.0 → subscript-1.1.1}/docs/Makefile +0 -0
  54. {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo.png +0 -0
  55. {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo2.jpg +0 -0
  56. {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor-logo2.png +0 -0
  57. {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor_logo.jpg +0 -0
  58. {subscript-1.0.0 → subscript-1.1.1}/docs/_static/equinor_logo_only.jpg +0 -0
  59. {subscript-1.0.0 → subscript-1.1.1}/docs/_templates/layout.html +0 -0
  60. {subscript-1.0.0 → subscript-1.1.1}/docs/conf.py +0 -0
  61. {subscript-1.0.0 → subscript-1.1.1}/docs/contributing.rst +0 -0
  62. {subscript-1.0.0 → subscript-1.1.1}/docs/history.rst +0 -0
  63. {subscript-1.0.0 → subscript-1.1.1}/docs/index.rst +0 -0
  64. {subscript-1.0.0 → subscript-1.1.1}/docs/make.bat +0 -0
  65. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/bjobsusers.rst +0 -0
  66. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/casegen_upcars.rst +0 -0
  67. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/check_swatinit.rst +0 -0
  68. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/convert_grid_format.rst +0 -0
  69. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv2ofmvol.rst +0 -0
  70. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv_merge.rst +0 -0
  71. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/csv_stack.rst +0 -0
  72. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ecldiff2roff.rst +0 -0
  73. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/fmu_copy_revision.rst +0 -0
  74. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/fmuobs.rst +0 -0
  75. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Pack_sim_overview.png +0 -0
  76. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
  77. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-ert.png +0 -0
  78. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
  79. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
  80. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
  81. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_scatter.png +0 -0
  82. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/check_swatinit_volplot.png +0 -0
  83. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/ecl-swat-initialization.png +0 -0
  84. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
  85. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
  86. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/interp_relperm.rst +0 -0
  87. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/merge_rft_ertobs.rst +0 -0
  88. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ofmvol2csv.rst +0 -0
  89. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/pack_sim.rst +0 -0
  90. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/params2csv.rst +0 -0
  91. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/presentvalue.rst +0 -0
  92. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/prtvol2csv.csv +0 -0
  93. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/restartthinner.rst +0 -0
  94. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/ri_wellmod.rst +0 -0
  95. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/rmsecl_volumetrics.rst +0 -0
  96. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/runeclipse.rst +0 -0
  97. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/runrms.rst +0 -0
  98. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sector2fluxnum.rst +0 -0
  99. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/summaryplot.rst +0 -0
  100. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sunsch.rst +0 -0
  101. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/sw_model_utilities.rst +0 -0
  102. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/vfp2csv.rst +0 -0
  103. {subscript-1.0.0 → subscript-1.1.1}/docs/scripts/welltest_dpds.rst +0 -0
  104. {subscript-1.0.0 → subscript-1.1.1}/docs/usage.rst +0 -0
  105. {subscript-1.0.0 → subscript-1.1.1}/setup.cfg +0 -0
  106. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/__init__.py +0 -0
  107. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/bjobsusers/__init__.py +0 -0
  108. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/bjobsusers/bjobsusers.py +0 -0
  109. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/__init__.py +0 -0
  110. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
  111. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/model.py +0 -0
  112. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf.py +0 -0
  113. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
  114. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/__init__.py +0 -0
  115. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/constants.py +0 -0
  116. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/pillarmodel.py +0 -0
  117. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/check_swatinit/plotter.py +0 -0
  118. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CHECK_SWATINIT +0 -0
  119. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV2OFMVOL +0 -0
  120. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/CSV_STACK +0 -0
  121. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLCOMPRESS +0 -0
  122. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLDIFF2ROFF +0 -0
  123. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLGRID2ROFF +0 -0
  124. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLINIT2ROFF +0 -0
  125. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/ECLRST2ROFF +0 -0
  126. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/INTERP_RELPERM +0 -0
  127. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/MERGE_RFT_ERTOBS +0 -0
  128. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/OFMVOL2CSV +0 -0
  129. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/PARAMS2CSV +0 -0
  130. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/PRTVOL2CSV +0 -0
  131. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/RI_WELLMOD +0 -0
  132. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/SUNSCH +0 -0
  133. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/config_jobs/WELLTEST_DPDS +0 -0
  134. {subscript-1.0.0/src/subscript/co2_containment → subscript-1.1.1/src/subscript/convert_grid_format}/__init__.py +0 -0
  135. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
  136. {subscript-1.0.0/src/subscript/convert_grid_format → subscript-1.1.1/src/subscript/csv2ofmvol}/__init__.py +0 -0
  137. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv2ofmvol/csv2ofmvol.py +0 -0
  138. {subscript-1.0.0/src/subscript/csv2ofmvol → subscript-1.1.1/src/subscript/csv_merge}/__init__.py +0 -0
  139. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv_merge/csv_merge.py +0 -0
  140. {subscript-1.0.0/src/subscript/csv_merge → subscript-1.1.1/src/subscript/csv_stack}/__init__.py +0 -0
  141. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/csv_stack/csv_stack.py +0 -0
  142. {subscript-1.0.0/src/subscript/csv_stack → subscript-1.1.1/src/subscript/eclcompress}/__init__.py +0 -0
  143. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclcompress/allowlist.py +0 -0
  144. {subscript-1.0.0/src/subscript/eclcompress → subscript-1.1.1/src/subscript/ecldiff2roff}/__init__.py +0 -0
  145. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
  146. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclgrid2roff/eclgrid2roff.py +0 -0
  147. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclinit2roff/eclinit2roff.py +0 -0
  148. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/eclrst2roff/eclrst2roff.py +0 -0
  149. {subscript-1.0.0/src/subscript/ecldiff2roff → subscript-1.1.1/src/subscript/fmu_copy_revision}/__init__.py +0 -0
  150. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
  151. {subscript-1.0.0/src/subscript/fmu_copy_revision → subscript-1.1.1/src/subscript/fmuobs}/__init__.py +0 -0
  152. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/fmuobs.py +0 -0
  153. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/util.py +0 -0
  154. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/fmuobs/writers.py +0 -0
  155. {subscript-1.0.0/src/subscript/fmuobs → subscript-1.1.1/src/subscript/hook_implementations}/__init__.py +0 -0
  156. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/hook_implementations/jobs.py +0 -0
  157. {subscript-1.0.0/src/subscript/hook_implementations → subscript-1.1.1/src/subscript/interp_relperm}/__init__.py +0 -0
  158. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/duf +0 -0
  159. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/eclmanual +0 -0
  160. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/ertwatch +0 -0
  161. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/list_rms_usage +0 -0
  162. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/nosim +0 -0
  163. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/legacy/runeclipse +0 -0
  164. {subscript-1.0.0/src/subscript/interp_relperm → subscript-1.1.1/src/subscript/merge_rft_ertobs}/__init__.py +0 -0
  165. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +0 -0
  166. {subscript-1.0.0/src/subscript/merge_rft_ertobs → subscript-1.1.1/src/subscript/ofmvol2csv}/__init__.py +0 -0
  167. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
  168. {subscript-1.0.0/src/subscript/ofmvol2csv → subscript-1.1.1/src/subscript/pack_sim}/__init__.py +0 -0
  169. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/pack_sim/pack_sim.py +0 -0
  170. {subscript-1.0.0/src/subscript/pack_sim → subscript-1.1.1/src/subscript/params2csv}/__init__.py +0 -0
  171. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/params2csv/params2csv.py +0 -0
  172. {subscript-1.0.0/src/subscript/params2csv → subscript-1.1.1/src/subscript/presentvalue}/__init__.py +0 -0
  173. {subscript-1.0.0/src/subscript/presentvalue → subscript-1.1.1/src/subscript/prtvol2csv}/__init__.py +0 -0
  174. {subscript-1.0.0/src/subscript/prtvol2csv → subscript-1.1.1/src/subscript/restartthinner}/__init__.py +0 -0
  175. {subscript-1.0.0/src/subscript/restartthinner → subscript-1.1.1/src/subscript/ri_wellmod}/__init__.py +0 -0
  176. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/ri_wellmod/ri_wellmod.py +0 -0
  177. {subscript-1.0.0/src/subscript/ri_wellmod → subscript-1.1.1/src/subscript/rmsecl_volumetrics}/__init__.py +0 -0
  178. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
  179. {subscript-1.0.0/src/subscript/rmsecl_volumetrics → subscript-1.1.1/src/subscript/runrms}/__init__.py +0 -0
  180. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/runrms/runrms.py +0 -0
  181. {subscript-1.0.0/src/subscript/runrms → subscript-1.1.1/src/subscript/sector2fluxnum}/__init__.py +0 -0
  182. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
  183. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
  184. {subscript-1.0.0/src/subscript/sector2fluxnum → subscript-1.1.1/src/subscript/summaryplot}/__init__.py +0 -0
  185. {subscript-1.0.0/src/subscript/summaryplot → subscript-1.1.1/src/subscript/sunsch}/__init__.py +0 -0
  186. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sunsch/sunsch.py +0 -0
  187. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sunsch/time_vector.py +0 -0
  188. {subscript-1.0.0/src/subscript/sunsch → subscript-1.1.1/src/subscript/sw_model_utilities}/__init__.py +0 -0
  189. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
  190. {subscript-1.0.0/src/subscript/sw_model_utilities → subscript-1.1.1/src/subscript/vfp2csv}/__init__.py +0 -0
  191. {subscript-1.0.0 → subscript-1.1.1}/src/subscript/vfp2csv/vfp2csv.py +0 -0
  192. {subscript-1.0.0/src/subscript/vfp2csv → subscript-1.1.1/src/subscript/welltest_dpds}/__init__.py +0 -0
  193. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/dependency_links.txt +0 -0
  194. {subscript-1.0.0 → subscript-1.1.1}/src/subscript.egg-info/top_level.txt +0 -0
  195. {subscript-1.0.0/src/subscript/welltest_dpds → subscript-1.1.1/tests}/__init__.py +0 -0
  196. {subscript-1.0.0 → subscript-1.1.1}/tests/conftest.py +0 -0
  197. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
  198. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
  199. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
  200. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
  201. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
  202. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
  203. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
  204. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
  205. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
  206. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
  207. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
  208. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
  209. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
  210. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
  211. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
  212. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
  213. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
  214. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
  215. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
  216. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
  217. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
  218. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
  219. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
  220. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
  221. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
  222. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
  223. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
  224. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
  225. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
  226. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/eclipse/model/parameters.txt +0 -0
  227. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/parameters.txt +0 -0
  228. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/README +0 -0
  229. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
  230. {subscript-1.0.0 → subscript-1.1.1}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
  231. {subscript-1.0.0 → subscript-1.1.1}/tests/data/vfp/GasProd.VFP +0 -0
  232. {subscript-1.0.0 → subscript-1.1.1}/tests/data/vfp/pd2.VFP +0 -0
  233. {subscript-1.0.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
  234. {subscript-1.0.0 → subscript-1.1.1}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
  235. {subscript-1.0.0 → subscript-1.1.1}/tests/test_bjobsusers.py +0 -0
  236. {subscript-1.0.0 → subscript-1.1.1}/tests/test_casegen_upcars.py +0 -0
  237. {subscript-1.0.0 → subscript-1.1.1}/tests/test_check_swatinit.py +0 -0
  238. {subscript-1.0.0 → subscript-1.1.1}/tests/test_convert_grid_format.py +0 -0
  239. {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv2ofmvol.py +0 -0
  240. {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv_merge.py +0 -0
  241. {subscript-1.0.0 → subscript-1.1.1}/tests/test_csv_stack.py +0 -0
  242. {subscript-1.0.0 → subscript-1.1.1}/tests/test_docs.py +0 -0
  243. {subscript-1.0.0 → subscript-1.1.1}/tests/test_ecldiff2roff.py +0 -0
  244. {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmu_copy_revision.py +0 -0
  245. {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs.py +0 -0
  246. {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs_parsers.py +0 -0
  247. {subscript-1.0.0 → subscript-1.1.1}/tests/test_fmuobs_writers.py +0 -0
  248. {subscript-1.0.0 → subscript-1.1.1}/tests/test_hook_implementations.py +0 -0
  249. {subscript-1.0.0 → subscript-1.1.1}/tests/test_merge_rft_ertobs.py +0 -0
  250. {subscript-1.0.0 → subscript-1.1.1}/tests/test_ofmvol2csv.py +0 -0
  251. {subscript-1.0.0 → subscript-1.1.1}/tests/test_pack_sim.py +0 -0
  252. {subscript-1.0.0 → subscript-1.1.1}/tests/test_params2csv.py +0 -0
  253. {subscript-1.0.0 → subscript-1.1.1}/tests/test_prtvol2csv.py +0 -0
  254. {subscript-1.0.0 → subscript-1.1.1}/tests/test_restartthinner.py +0 -0
  255. {subscript-1.0.0 → subscript-1.1.1}/tests/test_ri_wellmod.py +0 -0
  256. {subscript-1.0.0 → subscript-1.1.1}/tests/test_rmsecl_volumetrics.py +0 -0
  257. {subscript-1.0.0 → subscript-1.1.1}/tests/test_runrms.py +0 -0
  258. {subscript-1.0.0 → subscript-1.1.1}/tests/test_sector2fluxnum.py +0 -0
  259. {subscript-1.0.0 → subscript-1.1.1}/tests/test_subscriptlogger.py +0 -0
  260. {subscript-1.0.0 → subscript-1.1.1}/tests/test_sunsch.py +0 -0
  261. {subscript-1.0.0 → subscript-1.1.1}/tests/test_sw_model_utilities.py +0 -0
  262. {subscript-1.0.0 → subscript-1.1.1}/tests/test_vfp2csv.py +0 -0
  263. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
  264. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
  265. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
  266. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
  267. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
  268. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
  269. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
  270. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
  271. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
  272. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/cfg.yml +0 -0
  273. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
  274. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
  275. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
  276. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_base.inc +0 -0
  277. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
  278. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
  279. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
  280. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
  281. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
  282. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
  283. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
  284. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
  285. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
  286. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
  287. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
  288. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
  289. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
  290. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
  291. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
  292. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
  293. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
  294. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
  295. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
  296. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
  297. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
  298. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
  299. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
  300. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
  301. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
  302. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
  303. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_runrms/runrms.yml +0 -0
  304. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
  305. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
  306. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
  307. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
  308. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
  309. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
  310. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
  311. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
  312. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/config_v2.yml +0 -0
  313. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/emptyinit.sch +0 -0
  314. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/foo1.sch +0 -0
  315. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/footemplate.sch +0 -0
  316. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/initwithdates.sch +0 -0
  317. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/merge2.sch +0 -0
  318. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/mergeme.sch +0 -0
  319. {subscript-1.0.0 → subscript-1.1.1}/tests/testdata_sunsch/options3.sch +0 -0
@@ -66,7 +66,7 @@ jobs:
66
66
 
67
67
  - name: Lint with black
68
68
  if: ${{ always() }}
69
- run: black --check *.py src tests
69
+ run: black --check src tests
70
70
 
71
71
  - name: Lint with flake8
72
72
  if: ${{ always() }}
@@ -78,11 +78,7 @@ jobs:
78
78
 
79
79
  - name: Run tests
80
80
  if: ${{ always() }}
81
- run: |
82
- pytest -n auto tests
83
- # Check that repository is untainted by test code:
84
- git status --porcelain
85
- test -z "$(git status --porcelain)"
81
+ run: pytest -n auto tests
86
82
 
87
83
  - name: Syntax check documentation
88
84
  if: ${{ always() }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: subscript
3
- Version: 1.0.0
3
+ Version: 1.1.1
4
4
  Summary: Equinor's collection of subsurface reservoir modelling scripts
5
5
  Author-email: Equinor <rnyb@equinor.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -698,8 +698,8 @@ Requires-Python: >=3.8
698
698
  Description-Content-Type: text/markdown
699
699
  License-File: LICENSE
700
700
  Requires-Dist: configsuite
701
- Requires-Dist: ecl
702
- Requires-Dist: ecl2df
701
+ Requires-Dist: resdata
702
+ Requires-Dist: res2df
703
703
  Requires-Dist: ert>=2.38.0b7
704
704
  Requires-Dist: fmu-tools
705
705
  Requires-Dist: matplotlib
@@ -10,7 +10,6 @@ Script CLI ERT Forward Model ERT Workflow
10
10
  bjobsusers ✅ ⛔️ ⛔️
11
11
  casegen_upcars ✅ ⛔️ ⛔️
12
12
  check_swatinit ✅ ✅ ⛔️
13
- co2_containment ✅ ⛔️ ⛔️
14
13
  convert_grid_format [*]_ ✅ ✅ ⛔️
15
14
  csv2ofmvol ✅ ✅ ⛔️
16
15
  csv_merge ✅ ⛔️ ✅
@@ -76,9 +76,7 @@ Notes
76
76
  compressed file into account.
77
77
  - Eclipse loading time of the compressed file is probably reduced by the
78
78
  same factor as the compression factor.
79
- - Only known compressable keywords are compressed by default. If you wish
80
- to specify particular keywords or a regex instead this can be provided
81
- directly through the command line.
79
+ - Only known compressable keywords are compressed.
82
80
 
83
81
 
84
82
  Possible improvements
@@ -130,5 +130,5 @@ file has been supplied defining the map from zones and regions to FIPNUM:
130
130
  See also
131
131
  --------
132
132
 
133
- * https://equinor.github.io/ecl2df/usage/fipreports.html can be used to extract
133
+ * https://equinor.github.io/res2df/usage/fipreports.html can be used to extract
134
134
  more information from the PRT files.
@@ -36,8 +36,8 @@ classifiers = [
36
36
  dynamic = ["version"]
37
37
  dependencies = [
38
38
  "configsuite",
39
- "ecl",
40
- "ecl2df",
39
+ "resdata",
40
+ "res2df",
41
41
  "ert>=2.38.0b7",
42
42
  "fmu-tools",
43
43
  "matplotlib",
@@ -91,7 +91,6 @@ Documentation = "https://equinor.github.io/subscript"
91
91
  bjobsusers = "subscript.bjobsusers.bjobsusers:main"
92
92
  casegen_upcars = "subscript.casegen_upcars.casegen_upcars:main"
93
93
  check_swatinit = "subscript.check_swatinit.check_swatinit:main"
94
- co2_containment = "subscript.co2_containment.co2_containment:main"
95
94
  convert_grid_format = "subscript.convert_grid_format.convert_grid_format:main"
96
95
  csv2ofmvol = "subscript.csv2ofmvol.csv2ofmvol:main"
97
96
  csv_merge = "subscript.csv_merge.csv_merge:main"
@@ -125,6 +124,16 @@ CsvStack = "subscript.csv_stack.csv_stack"
125
124
  FmuObs = "subscript.fmuobs.fmuobs"
126
125
  Params2Csv = "subscript.params2csv.params2csv"
127
126
 
127
+ [tool.setuptools]
128
+ script-files = [
129
+ "src/subscript/legacy/duf",
130
+ "src/subscript/legacy/eclmanual",
131
+ "src/subscript/legacy/ertwatch",
132
+ "src/subscript/legacy/list_rms_usage",
133
+ "src/subscript/legacy/nosim",
134
+ "src/subscript/legacy/runeclipse",
135
+ ]
136
+
128
137
  [tool.black]
129
138
  line-length = 88
130
139
 
@@ -3,9 +3,9 @@ import argparse
3
3
  import sys
4
4
  from typing import Any, Dict, List
5
5
 
6
- import ecl2df
7
6
  import numpy as np
8
7
  import pandas as pd
8
+ import res2df
9
9
  from matplotlib import pyplot
10
10
 
11
11
  import subscript
@@ -58,7 +58,7 @@ def main() -> None:
58
58
  if args.DATAFILE.endswith(".csv"):
59
59
  qc_frame = pd.read_csv(args.DATAFILE)
60
60
  else:
61
- eclfiles = ecl2df.EclFiles(args.DATAFILE)
61
+ eclfiles = res2df.ResdataFiles(args.DATAFILE)
62
62
 
63
63
  # Fail hard if the deck is not suitable for this tool or
64
64
  # give warnings/hints to the user:
@@ -102,11 +102,11 @@ def main() -> None:
102
102
  pyplot.savefig(args.plotfile)
103
103
 
104
104
 
105
- def check_applicability(eclfiles: ecl2df.EclFiles) -> None:
105
+ def check_applicability(eclfiles: res2df.ResdataFiles) -> None:
106
106
  """Check that the input is relevant for usage with check_swatinit. This
107
107
  function may raise exceptions, SystemExit or only give warnings"""
108
108
 
109
- deck = eclfiles.get_ecldeck()
109
+ deck = eclfiles.get_deck()
110
110
 
111
111
  init = eclfiles.get_initfile()
112
112
  if (
@@ -212,7 +212,7 @@ def human_report_pc_scaling(qc_frame: pd.DataFrame) -> str:
212
212
  return string
213
213
 
214
214
 
215
- def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
215
+ def make_qc_gridframe(eclfiles: res2df.ResdataFiles) -> pd.DataFrame:
216
216
  """Construct a dataframe with needed information for swatinit qc from an
217
217
  Eclipse run.
218
218
 
@@ -220,7 +220,7 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
220
220
  satfunc and equil merged in.
221
221
  """
222
222
 
223
- grid_df = ecl2df.grid.df(
223
+ grid_df = res2df.grid.df(
224
224
  eclfiles,
225
225
  vectors=[
226
226
  # All of these are required.
@@ -242,14 +242,14 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
242
242
  rstdates="first",
243
243
  )
244
244
 
245
- # Circumvent bug in ecl2df that will pick SWL from both INIT and restart file:
245
+ # Circumvent bug in res2df that will pick SWL from both INIT and restart file:
246
246
  grid_df = grid_df.loc[:, ~grid_df.columns.duplicated()]
247
247
 
248
248
  # Merge in PPCWMAX from the deck, it is not reported in binary output files:
249
- if "PPCWMAX" in eclfiles.get_ecldeck():
249
+ if "PPCWMAX" in eclfiles.get_deck():
250
250
  grid_df["PPCWMAX"] = ppcwmax_gridvector(eclfiles)
251
251
 
252
- # This will be unneccessary from ecl2df 0.13.0:
252
+ # This will be unneccessary from res2df 0.13.0:
253
253
  grid_df = grid_df.where(grid_df > -1e20 + 1e13)
254
254
 
255
255
  if "SWL" not in grid_df:
@@ -257,7 +257,7 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
257
257
  logger.warning("Consider adding FILLEPS to the PROPS section")
258
258
  grid_df["SWL"] = 0.0
259
259
 
260
- deck = eclfiles.get_ecldeck()
260
+ deck = eclfiles.get_deck()
261
261
  if "SWATINIT" in deck:
262
262
  swatinit_deckdata = deck["SWATINIT"][0][0].get_raw_data_list()
263
263
  # This list includes non-active cells, we must map via GLOBAL_INDEX:
@@ -280,12 +280,12 @@ def make_qc_gridframe(eclfiles: ecl2df.EclFiles) -> pd.DataFrame:
280
280
  del grid_df["SWATINIT_DECK"] # This is not needed
281
281
 
282
282
  # Exposed to issues with endpoint scaling in peculiar decks:
283
- satfunc_df = ecl2df.satfunc.df(eclfiles)
283
+ satfunc_df = res2df.satfunc.df(eclfiles)
284
284
 
285
285
  # Merge in the input pcmax pr. satnum for each cell:
286
286
  grid_df = merge_pc_max(grid_df, satfunc_df)
287
287
 
288
- grid_df = merge_equil(grid_df, ecl2df.equil.df(eclfiles, keywords=["EQUIL"]))
288
+ grid_df = merge_equil(grid_df, res2df.equil.df(eclfiles, keywords=["EQUIL"]))
289
289
 
290
290
  grid_df = augment_grid_frame_qc_vectors(grid_df)
291
291
 
@@ -587,7 +587,7 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
587
587
  return p_cap
588
588
 
589
589
 
590
- def ppcwmax_gridvector(eclfiles: ecl2df.EclFiles) -> pd.Series:
590
+ def ppcwmax_gridvector(eclfiles: res2df.ResdataFiles) -> pd.Series:
591
591
  """Generate a vector of PPCWMAX data pr cell
592
592
 
593
593
  PPCWMAX is pr. SATNUM in the input deck
@@ -596,11 +596,11 @@ def ppcwmax_gridvector(eclfiles: ecl2df.EclFiles) -> pd.Series:
596
596
  eclfiles
597
597
 
598
598
  Returns:
599
- pd.Series, indexed according to ecl2df.grid.df(eclfiles)
599
+ pd.Series, indexed according to res2df.grid.df(eclfiles)
600
600
  """
601
601
 
602
- satnum_df = ecl2df.grid.df(eclfiles, vectors="SATNUM")
603
- deck = eclfiles.get_ecldeck()
602
+ satnum_df = res2df.grid.df(eclfiles, vectors="SATNUM")
603
+ deck = eclfiles.get_deck()
604
604
  for satnum in satnum_df["SATNUM"].unique():
605
605
  ppcwmax = deck["PPCWMAX"][satnum - 1][0].get_raw_data_list()[0]
606
606
  satnum_df.loc[satnum_df["SATNUM"] == satnum, "PPCWMAX"] = ppcwmax
@@ -615,7 +615,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
615
615
  assert "Z" in equil_df
616
616
  assert "PRESSURE" in equil_df
617
617
 
618
- # Be compatible with future change in ecl2df:
618
+ # Be compatible with future change in res2df:
619
619
  equil_df.rename({"ACCURACY": "OIP_INIT"}, axis="columns", inplace=True)
620
620
 
621
621
  contacts = list(set(["OWC", "GOC", "GWC"]).intersection(set(equil_df.columns)))
@@ -6,12 +6,10 @@ import glob
6
6
  import itertools
7
7
  import logging
8
8
  import os
9
- import re
10
9
  import shutil
11
10
  import textwrap
12
- import warnings
13
11
  from pathlib import Path
14
- from typing import List, Optional, Pattern, Tuple, Union
12
+ from typing import List, Tuple, Union
15
13
 
16
14
  import subscript
17
15
 
@@ -79,7 +77,6 @@ def eclcompress(
79
77
  files: Union[str, List[str]],
80
78
  keeporiginal: bool = False,
81
79
  dryrun: bool = False,
82
- eclkw_regexp: Optional[str] = None,
83
80
  ) -> int:
84
81
  """Run-length encode a set of grdecl files.
85
82
 
@@ -89,8 +86,7 @@ def eclcompress(
89
86
  files: Filenames to be compressed
90
87
  keeporiginal: Whether to copy the original to a backup file
91
88
  dryrun: If true, only print compression efficiency
92
- eclkw_regexp: Regular expression for locating Eclipse keywords.
93
- Default is [A-Z]{2-8}$
89
+
94
90
  Returns:
95
91
  Number of bytes saved by compression.
96
92
  """
@@ -98,12 +94,6 @@ def eclcompress(
98
94
  if not isinstance(files, list):
99
95
  files = [files] # List with one element
100
96
 
101
- if eclkw_regexp:
102
- warnings.warn(
103
- "Providing a keyword regex will be removed in Komodo 2023.11.",
104
- DeprecationWarning,
105
- )
106
-
107
97
  totalsavings = 0
108
98
 
109
99
  for filename in files:
@@ -137,7 +127,7 @@ def eclcompress(
137
127
  # Index the list of strings (the file contents) by the line numbers
138
128
  # where Eclipse keywords start, and where the first data record of the keyword
139
129
  # ends (compression is not attempted in record 2 and onwards for any keyword)
140
- keywordsets = find_keyword_sets(filelines, eclkw_regexp=eclkw_regexp)
130
+ keywordsets = find_keyword_sets(filelines)
141
131
 
142
132
  if not keywordsets:
143
133
  logger.info(
@@ -299,9 +289,7 @@ def compress_multiple_keywordsets(
299
289
  return compressedlines
300
290
 
301
291
 
302
- def find_keyword_sets(
303
- filelines: List[str], eclkw_regexp: Optional[Union[str, Pattern[str]]] = None
304
- ) -> List[Tuple[int, int]]:
292
+ def find_keyword_sets(filelines: List[str]) -> List[Tuple[int, int]]:
305
293
  """Parse list of strings, looking for Eclipse data sets that we want.
306
294
 
307
295
  Example:
@@ -335,9 +323,6 @@ def find_keyword_sets(
335
323
 
336
324
  Args:
337
325
  filelines: Eclipse deck lines (not necessarily complete decks)
338
- eclkw_regexp: Regular expression for locating Eclipse keywords.
339
- Default is None, in which it uses a predefined allowlist of
340
- keywords
341
326
 
342
327
  Return:
343
328
  2-tuples, with start and end line indices for datasets to
@@ -346,26 +331,19 @@ def find_keyword_sets(
346
331
  """
347
332
  keywordsets = []
348
333
  kwstart = None
349
- if eclkw_regexp:
350
- eclkw_regexp = re.compile(eclkw_regexp)
351
334
 
352
335
  for lineidx, line in enumerate(filelines):
353
336
  line = line.strip()
354
337
  if not line:
355
338
  continue
356
- if eclkw_regexp:
357
- if re.match(eclkw_regexp, line) and line not in DENYLIST_KEYWORDS:
358
- kwstart = lineidx
359
- continue
360
- else:
361
- # Remove embracing quotes if in a multi-keyword
362
- keyword = line.split(" ")[0].strip("'")
363
- if keyword in ALLOWLIST_KEYWORDS:
364
- kwstart = lineidx
365
- if "/" in line:
366
- keywordsets.append((kwstart, lineidx))
367
- kwstart = None
368
- continue
339
+ # Remove embracing quotes if in a multi-keyword
340
+ keyword = line.split(" ")[0].strip("'")
341
+ if keyword in ALLOWLIST_KEYWORDS:
342
+ kwstart = lineidx
343
+ if "/" in line:
344
+ keywordsets.append((kwstart, lineidx))
345
+ kwstart = None
346
+ continue
369
347
  if kwstart is not None and line[0:2] == "--":
370
348
  # This means we found a comment section within a data set
371
349
  # In that case it is vital to preserve the current line
@@ -453,14 +431,6 @@ def get_parser() -> argparse.ArgumentParser:
453
431
  "no files are specified on the command line."
454
432
  ),
455
433
  )
456
- parser.add_argument(
457
- "--eclkw_regexp",
458
- help=(
459
- "Regular expression to determine which Eclipse keyword "
460
- "to recognize. Default is None, using instead a list of known "
461
- "compressable keywords."
462
- ),
463
- )
464
434
  parser.add_argument(
465
435
  "--version",
466
436
  action="version",
@@ -506,7 +476,6 @@ def main():
506
476
  args.files,
507
477
  keeporiginal=args.keeporiginal,
508
478
  dryrun=args.dryrun,
509
- eclkw_regexp=args.eclkw_regexp,
510
479
  )
511
480
 
512
481
 
@@ -515,7 +484,6 @@ def main_eclcompress(
515
484
  wildcardfile: str,
516
485
  keeporiginal: bool = False,
517
486
  dryrun: bool = False,
518
- eclkw_regexp: Optional[str] = None,
519
487
  ) -> None:
520
488
  """Implements the command line functionality
521
489
 
@@ -525,8 +493,6 @@ def main_eclcompress(
525
493
  keeporiginal: Whether a backup file should be left behind
526
494
  dryrun: Nothing written to disk, only statistics for
527
495
  compression printed to terminal.
528
- eclkw_regexp: Regular expression for locating Eclipse keywords.
529
- Default is None
530
496
  """
531
497
  # A list of wildcards on the command line should always be compressed:
532
498
  if grdeclfiles:
@@ -558,7 +524,6 @@ def main_eclcompress(
558
524
  globbedfiles,
559
525
  keeporiginal=keeporiginal,
560
526
  dryrun=dryrun,
561
- eclkw_regexp=eclkw_regexp,
562
527
  )
563
528
  savings_mb = savings / 1024.0 / 1024.0
564
529
  print(f"eclcompress finished. Saved {savings_mb:.1f} Mb from compression")
@@ -462,7 +462,11 @@ def resinsight_df2df(ri_dframe: pd.DataFrame) -> pd.DataFrame:
462
462
 
463
463
  dframe = ri_dframe.copy()
464
464
  dframe.rename({"VECTOR": "KEY"}, axis="columns", inplace=True)
465
- dframe["LABEL"] = dframe["KEY"].astype(str) # + "-" + dframe["DATE"].astype(str)
465
+ dframe["LABEL"] = (
466
+ dframe["KEY"].astype(str)
467
+ + "-"
468
+ + (dframe.groupby("KEY").cumcount() + 1).astype(str)
469
+ )
466
470
  dframe["CLASS"] = "SUMMARY_OBSERVATION"
467
471
  if "DATE" in dframe:
468
472
  dframe["DATE"] = pd.to_datetime(dframe["DATE"])
@@ -11,7 +11,7 @@ import pyscal
11
11
  import yaml
12
12
  from configsuite import MetaKeys as MK # lgtm [py/import-and-import-from]
13
13
  from configsuite import types # lgtm [py/import-and-import-from]
14
- from ecl2df import satfunc
14
+ from res2df import satfunc
15
15
 
16
16
  import subscript
17
17
 
@@ -397,10 +397,10 @@ def main() -> None:
397
397
 
398
398
  logger.setLevel(logging.INFO)
399
399
 
400
- # Mute expected warnings from ecl2df.inferdims, we get these
400
+ # Mute expected warnings from res2df.inferdims, we get these
401
401
  # because we don't tell the module how many SATNUMs there are in
402
402
  # input files, which is slightly fragile for opm to parse.
403
- logging.getLogger("ecl2df.inferdims").setLevel(logging.ERROR)
403
+ logging.getLogger("res2df.inferdims").setLevel(logging.ERROR)
404
404
 
405
405
  # parse the config file
406
406
  if not Path(args.configfile).exists():
@@ -5,9 +5,9 @@ import logging
5
5
  from pathlib import Path
6
6
  from typing import Dict, Optional
7
7
 
8
- import ecl2df
9
8
  import numpy as np
10
9
  import pandas as pd
10
+ import res2df
11
11
  import scipy.optimize
12
12
 
13
13
  from subscript import __version__, getLogger
@@ -422,8 +422,8 @@ def get_yearly_summary(
422
422
  vec.split(":")[0].endswith("T") for vec in [oilvector, gasvector, gasinjvector]
423
423
  ):
424
424
  raise ValueError("Only cumulative Eclipse vectors can be used")
425
- eclfiles = ecl2df.EclFiles(eclfile)
426
- sum_df = ecl2df.summary.df(
425
+ eclfiles = res2df.ResdataFiles(eclfile)
426
+ sum_df = res2df.summary.df(
427
427
  eclfiles, column_keys=[oilvector, gasvector, gasinjvector], time_index="yearly"
428
428
  )
429
429
  sum_df.rename(
@@ -7,8 +7,8 @@ import warnings
7
7
  from pathlib import Path
8
8
  from typing import Optional
9
9
 
10
- import ecl2df
11
10
  import pandas as pd
11
+ import res2df
12
12
  from fmu.tools.fipmapper.fipmapper import FipMapper
13
13
 
14
14
  from subscript import __version__, getLogger
@@ -162,7 +162,7 @@ def currently_in_place_from_prt(
162
162
  ) -> pd.DataFrame:
163
163
  """Extracts currently-in-place volumes from a PRT file
164
164
 
165
- This function uses ecl2df.fipreports, and slices its
165
+ This function uses res2df.fipreports, and slices its
166
166
  output for the purpose here.
167
167
 
168
168
  Args:
@@ -174,7 +174,7 @@ def currently_in_place_from_prt(
174
174
  Returns:
175
175
  pd.DataFrame
176
176
  """
177
- inplace_df = ecl2df.fipreports.df(prt_file, fipname=fipname)
177
+ inplace_df = res2df.fipreports.df(prt_file, fipname=fipname)
178
178
 
179
179
  available_dates = inplace_df.sort_values("DATE")["DATE"].unique()
180
180
  if date is None or date == "first":
@@ -10,7 +10,7 @@ from pathlib import Path
10
10
 
11
11
  import numpy
12
12
  import pandas
13
- from ecl.eclfile import EclFile
13
+ from resdata.resfile import ResdataFile
14
14
 
15
15
  from subscript import __version__
16
16
 
@@ -26,8 +26,8 @@ written to the same filename (keeping the original is optional)
26
26
  """
27
27
 
28
28
 
29
- def find_libecl_app(toolname: str) -> str:
30
- """Locate path of apps in libecl.
29
+ def find_resdata_app(toolname: str) -> str:
30
+ """Locate path of apps in resdata.
31
31
 
32
32
  These have varying suffixes due through the history of libecl Makefiles.
33
33
 
@@ -61,10 +61,10 @@ def date_slicer(slicedates: list, restartdates: list, restartindices: list) -> d
61
61
  return slicedatemap
62
62
 
63
63
 
64
- def ecl_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
64
+ def rd_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
65
65
  """
66
66
  Wrapper for ecl_unpack.x and ecl_pack.x utilities. These
67
- utilities are from libecl.
67
+ utilities are from resdata.
68
68
 
69
69
  First unpacking a UNRST file, then deleting dates the dont't want, then
70
70
  pack the remainding files into a new UNRST file
@@ -79,11 +79,11 @@ def ecl_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
79
79
  out = ""
80
80
  # Error early if libecl tools are not available
81
81
  try:
82
- find_libecl_app("ecl_unpack")
83
- find_libecl_app("ecl_pack")
82
+ find_resdata_app("rd_unpack")
83
+ find_resdata_app("rd_pack")
84
84
  except IOError:
85
85
  sys.exit(
86
- "ERROR: ecl_unpack.x and/or ecl_pack.x not found.\n"
86
+ "ERROR: rd_unpack.x and/or rd_pack.x not found.\n"
87
87
  "These tools are required and must be installed separately"
88
88
  )
89
89
 
@@ -99,13 +99,13 @@ def ecl_repacker(rstfilename: str, slicerstindices: list, quiet: bool) -> None:
99
99
  )
100
100
  os.chdir(tempdir)
101
101
  os.system(
102
- find_libecl_app("ecl_unpack") + " " + os.path.basename(rstfilename) + out
102
+ find_resdata_app("rd_unpack") + " " + os.path.basename(rstfilename) + out
103
103
  )
104
104
  unpackedfiles = glob.glob("*.X*")
105
105
  for file in unpackedfiles:
106
106
  if int(file.split(".X")[1]) not in slicerstindices:
107
107
  os.remove(file)
108
- os.system(find_libecl_app("ecl_pack") + " *.X*" + out)
108
+ os.system(find_resdata_app("rd_pack") + " *.X*" + out)
109
109
  # We are inside the tmp directory, move file one step up:
110
110
  os.rename(
111
111
  os.path.join(os.getcwd(), os.path.basename(rstfilename)),
@@ -120,7 +120,7 @@ def get_restart_indices(rstfilename: str) -> list:
120
120
  """Extract a list of RST indices for a filename"""
121
121
  if Path(rstfilename).exists():
122
122
  # This function segfaults if file does not exist
123
- return EclFile.file_report_list(str(rstfilename))
123
+ return ResdataFile.file_report_list(str(rstfilename))
124
124
  raise FileNotFoundError(f"{rstfilename} not found")
125
125
 
126
126
 
@@ -134,7 +134,7 @@ def restartthinner(
134
134
  """
135
135
  Thin an existing UNRST file to selected number of restarts.
136
136
  """
137
- rst = EclFile(filename)
137
+ rst = ResdataFile(filename)
138
138
  restart_indices = get_restart_indices(filename)
139
139
  restart_dates = [
140
140
  rst.iget_restart_sim_time(index) for index in range(0, len(restart_indices))
@@ -177,7 +177,7 @@ def restartthinner(
177
177
  if not quiet:
178
178
  print(f"Info: Backing up {filename} to {backupname}")
179
179
  shutil.copyfile(filename, backupname)
180
- ecl_repacker(filename, slicerstindices, quiet)
180
+ rd_repacker(filename, slicerstindices, quiet)
181
181
  print(f"Written to {filename}")
182
182
 
183
183
 
@@ -1,4 +1,4 @@
1
- from ecl2df import EclFiles, compdat
1
+ from res2df import ResdataFiles, compdat
2
2
 
3
3
 
4
4
  def get_completion_list(ecl_data_file_name):
@@ -14,7 +14,7 @@ def get_completion_list(ecl_data_file_name):
14
14
  List of completions associated to well names
15
15
  """
16
16
 
17
- ecl_file = EclFiles(ecl_data_file_name)
17
+ ecl_file = ResdataFiles(ecl_data_file_name)
18
18
  compdat_df = compdat.df(ecl_file)
19
19
 
20
20
  # Convert from ECL index
@@ -1,9 +1,9 @@
1
1
  import os
2
2
  import sys
3
3
 
4
- from ecl import EclDataType
5
- from ecl.eclfile import EclKW
6
- from ecl.grid import EclRegion
4
+ from resdata import ResDataType
5
+ from resdata.grid import ResdataRegion
6
+ from resdata.resfile import ResdataKW
7
7
 
8
8
  from subscript.sector2fluxnum import flux_util
9
9
 
@@ -20,9 +20,9 @@ class Fluxnum:
20
20
 
21
21
  Creates a non-initialized FLUXNUM keyword
22
22
  """
23
- int_type = EclDataType.ECL_INT
23
+ int_type = ResDataType.RD_INT
24
24
  self.grid = grid
25
- self.fluxnum_kw = EclKW("FLUXNUM", grid.getGlobalSize(), int_type)
25
+ self.fluxnum_kw = ResdataKW("FLUXNUM", grid.getGlobalSize(), int_type)
26
26
  self.included_wells = []
27
27
  self.dummy_lgr_cell = []
28
28
  self.dummy_lgr_well = []
@@ -44,7 +44,7 @@ class Fluxnum:
44
44
 
45
45
  Initializes inner region used to define the FLUXNUM
46
46
  """
47
- self.inner_region = EclRegion(self.grid, False)
47
+ self.inner_region = ResdataRegion(self.grid, False)
48
48
  self.inner_region.select_all()
49
49
 
50
50
  def set_lgr_box_region(self, i, j, k):
@@ -54,7 +54,7 @@ class Fluxnum:
54
54
  Only works for Box regions
55
55
 
56
56
  """
57
- self.lgr_region = EclRegion(self.grid, False)
57
+ self.lgr_region = ResdataRegion(self.grid, False)
58
58
  ijk_list = flux_util.unpack_ijk(i, j, k)
59
59
 
60
60
  # Drags lgr boundaries one cell from box region
@@ -91,11 +91,11 @@ class Fluxnum:
91
91
  print("ERROR: FLUXNUM input file not found!")
92
92
  sys.exit(1)
93
93
 
94
- int_type = EclDataType.ECL_INT
94
+ int_type = ResDataType.RD_INT
95
95
 
96
96
  with open(fluxnum_file, "r", encoding="utf8") as file_handle:
97
- self.fluxnum_kw = EclKW.read_grdecl(
98
- file_handle, "FLUXNUM", ecl_type=int_type
97
+ self.fluxnum_kw = ResdataKW.read_grdecl(
98
+ file_handle, "FLUXNUM", rd_type=int_type
99
99
  )
100
100
 
101
101
  def get_fluxnum_kw(self):
@@ -203,11 +203,11 @@ class FluxnumBox(Fluxnum):
203
203
  self.set_outer_region(i_start, i_end, j_start, j_end, k_start, k_end)
204
204
 
205
205
  def set_inner_region(self, i_start, i_end, j_start, j_end, k_start, k_end):
206
- self.inner_region = EclRegion(self.grid, False)
206
+ self.inner_region = ResdataRegion(self.grid, False)
207
207
  self.inner_region.select_box((i_start, j_start, k_start), (i_end, j_end, k_end))
208
208
 
209
209
  def set_outer_region(self, i_start, i_end, j_start, j_end, k_start, k_end):
210
- self.outer_region = EclRegion(self.grid, False)
210
+ self.outer_region = ResdataRegion(self.grid, False)
211
211
  self.outer_region.select_box((i_start, j_start, k_start), (i_end, j_end, k_end))
212
212
  self.outer_region.invert()
213
213
 
@@ -247,8 +247,8 @@ class FluxnumFipnum(Fluxnum):
247
247
  raise Exception("ERROR: FIPNUM input file not found!")
248
248
 
249
249
  with open(fipnum_file, "r", encoding="utf8") as file_handle:
250
- fipnum = EclKW.read_grdecl(
251
- file_handle, "FIPNUM", ecl_type=EclDataType.ECL_INT
250
+ fipnum = ResdataKW.read_grdecl(
251
+ file_handle, "FIPNUM", rd_type=ResDataType.RD_INT
252
252
  )
253
253
 
254
254
  else: