From c1d5c6e75955f1b734976c61b548d52563e7fc82 Mon Sep 17 00:00:00 2001
From: David Landa Marban
Date: Mon, 17 Aug 2026 13:30:50 +0200
Subject: [PATCH] Improving the cli parsing
---
docs/pycopm.core.pycopm.html | 6 +--
docs/pycopm.utils.coarsening.html | 2 +-
docs/pycopm.utils.generate_decks.html | 2 +-
docs/pycopm.utils.input_values.html | 2 +-
docs/pycopm.utils.refinement.html | 2 +-
docs/searchindex.js | 2 +-
src/pycopm/core/pycopm.py | 75 +++++++++++++--------------
src/pycopm/utils/coarsening.py | 13 +++--
src/pycopm/utils/generate_decks.py | 3 +-
src/pycopm/utils/input_values.py | 67 ++++++++++++------------
src/pycopm/utils/refinement.py | 13 +++--
tests/scripts/docs_check_outputs.sh | 56 ++++++++++----------
tests/test_8_dual.py | 1 -
13 files changed, 123 insertions(+), 121 deletions(-)
diff --git a/docs/pycopm.core.pycopm.html b/docs/pycopm.core.pycopm.html
index 836ba88..60a532e 100644
--- a/docs/pycopm.core.pycopm.html
+++ b/docs/pycopm.core.pycopm.html
@@ -99,7 +99,7 @@
file-generation details are implemented in the utility modules.
-
-pycopm.core.pycopm._check_cmdargs(cmdargs: dict[str, str]) → None
+pycopm.core.pycopm._check_cmdargs(cmdargs: Namespace) → None
Validate command-line arguments and incompatible operations.
The checks cover input type, Flow availability, coarsening and refinement
syntax, aggregation methods, vicinity selections, transformations, and
@@ -140,7 +140,7 @@
-
-pycopm.core.pycopm._parse_arguments(argv: Sequence[str] | None = None) → dict[str, str]
+pycopm.core.pycopm._parse_arguments(argv: list[str] | None = None) → Namespace
Parse supported command-line arguments.
Unknown arguments are left unprocessed for compatibility with external
launchers.
@@ -159,7 +159,7 @@
-
-pycopm.core.pycopm.main(argv: Sequence[str] | None = None) → None
+pycopm.core.pycopm.main(argv: list[str] | None = None) → None
Run the deck-based or TOML-based pycopm workflow.
OPM .DATA decks can be coarsened, refined, transformed, or reduced to
a submodel. TOML configurations generate coarsened Norne or Drogon cases
diff --git a/docs/pycopm.utils.coarsening.html b/docs/pycopm.utils.coarsening.html
index 28d8be0..0eaa530 100644
--- a/docs/pycopm.utils.coarsening.html
+++ b/docs/pycopm.utils.coarsening.html
@@ -426,7 +426,7 @@
-
-pycopm.utils.coarsening.create_coarsening_maps(dck: ConfigViaDeck, cmdargs) → CoarseningMaps
+pycopm.utils.coarsening.create_coarsening_maps(dck: ConfigViaDeck, cmdargs: Namespace) → CoarseningMaps
Create axis mappings and assign original cells to coarse cells.
- Parameters:
diff --git a/docs/pycopm.utils.generate_decks.html b/docs/pycopm.utils.generate_decks.html
index 0c1a0ca..d89b903 100644
--- a/docs/pycopm.utils.generate_decks.html
+++ b/docs/pycopm.utils.generate_decks.html
@@ -136,7 +136,7 @@
-
-pycopm.utils.generate_decks.create_deck(dck: ConfigViaDeck, cmdargs) → None
+pycopm.utils.generate_decks.create_deck(dck: ConfigViaDeck, cmdargs: Namespace) → None
Generate a modified OPM deck and its include files.
The selected workflow can preprocess the input deck, coarsen or refine the
grid, extract a vicinity submodel, transform coordinates, and optionally run
diff --git a/docs/pycopm.utils.input_values.html b/docs/pycopm.utils.input_values.html
index 7fc6995..2725597 100644
--- a/docs/pycopm.utils.input_values.html
+++ b/docs/pycopm.utils.input_values.html
@@ -89,7 +89,7 @@
Create configuration objects from command-line arguments and TOML files.
-
-pycopm.utils.input_values.create_deck_config(cmdargs: dict[str, str]) → ConfigViaDeck
+pycopm.utils.input_values.create_deck_config(cmdargs: Namespace) → ConfigViaDeck
Create a deck configuration from parsed command arguments.
- Parameters:
diff --git a/docs/pycopm.utils.refinement.html b/docs/pycopm.utils.refinement.html
index 830b9b5..dca11e1 100644
--- a/docs/pycopm.utils.refinement.html
+++ b/docs/pycopm.utils.refinement.html
@@ -138,7 +138,7 @@
-
-pycopm.utils.refinement.create_refinement_maps(dck: ConfigViaDeck, cmdargs) → RefinementMaps
+pycopm.utils.refinement.create_refinement_maps(dck: ConfigViaDeck, cmdargs: Namespace) → RefinementMaps
Create axis refinement maps and update output dimensions.
A refinement value of n divides an original interval into n + 1
intervals.
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 49a82aa..aab231f 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"About pycopm":[[0,null]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"Drogon":[[4,"drogon"]],"Dual coarsening":[[4,"dual-coarsening"]],"Examples":[[4,null]],"Graphical abstract":[[4,"graphical-abstract"]],"Grid coarsening":[[24,"grid-coarsening"]],"Grid refinement":[[24,"grid-refinement"]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pycopm"],[11,"module-pycopm.core"],[13,"module-pycopm.utils"]],"Norne":[[4,"norne"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Python package":[[6,"python-package"]],"Related":[[23,null]],"Report issues or problems":[[3,"report-issues-or-problems"]],"Roadmap":[[7,"roadmap"]],"SPE10":[[4,"spe10"]],"Seek support":[[3,"seek-support"]],"Smeaheia":[[4,"smeaheia"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodels":[[24,"submodels"]],"Submodules":[[11,"submodules"],[13,"submodules"]],"Subpackages":[[10,"subpackages"]],"Theory":[[24,null]],"Transformations":[[24,"transformations"]],"Via OPM Flow decks":[[4,"via-opm-flow-decks"]],"Via an OPM Flow input deck":[[9,"via-an-opm-flow-input-deck"]],"Via configuration files":[[4,"via-configuration-files"],[9,"via-configuration-files"]],"Welcome to pycopm\u2019s documentation!":[[5,null]],"ad-micp":[[23,"ad-micp"]],"expreccs":[[23,"expreccs"]],"plopm":[[23,"plopm"]],"pofff":[[23,"pofff"]],"pycopm":[[1,"pycopm"],[8,null]],"pycopm Python API":[[1,null]],"pycopm package":[[10,null]],"pycopm.core package":[[11,null]],"pycopm.core.pycopm module":[[12,null]],"pycopm.utils package":[[13,null]],"pycopm.utils.coarsening module":[[14,null]],"pycopm.utils.files_writer module":[[15,null]],"pycopm.utils.generate_decks module":[[16,null]],"pycopm.utils.input_values module":[[17,null]],"pycopm.utils.parser_deck module":[[18,null]],"pycopm.utils.refinement module":[[19,null]],"pycopm.utils.runs_executer module":[[20,null]],"pycopm.utils.transformation module":[[21,null]],"pycopm.utils.vicinity module":[[22,null]],"pymm":[[23,"pymm"]],"pyopmnearwell":[[23,"pyopmnearwell"]],"pyopmspe11":[[23,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pycopm","pycopm.core","pycopm.core.pycopm","pycopm.utils","pycopm.utils.coarsening","pycopm.utils.files_writer","pycopm.utils.generate_decks","pycopm.utils.input_values","pycopm.utils.parser_deck","pycopm.utils.refinement","pycopm.utils.runs_executer","pycopm.utils.transformation","pycopm.utils.vicinity","related","theory"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","configuration_file.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","output_folder.rst","pycopm.rst","pycopm.core.rst","pycopm.core.pycopm.rst","pycopm.utils.rst","pycopm.utils.coarsening.rst","pycopm.utils.files_writer.rst","pycopm.utils.generate_decks.rst","pycopm.utils.input_values.rst","pycopm.utils.parser_deck.rst","pycopm.utils.refinement.rst","pycopm.utils.runs_executer.rst","pycopm.utils.transformation.rst","pycopm.utils.vicinity.rst","related.rst","theory.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pycopm"]],"pycopm":[[11,0,0,"-","core"],[13,0,0,"-","utils"]],"pycopm.core":[[12,0,0,"-","pycopm"]],"pycopm.core.pycopm":[[12,1,1,"","_check_cmdargs"],[12,1,1,"","_check_flow"],[12,1,1,"","_parse_arguments"],[12,1,1,"","main"]],"pycopm.utils":[[14,0,0,"-","coarsening"],[15,0,0,"-","files_writer"],[16,0,0,"-","generate_decks"],[17,0,0,"-","input_values"],[18,0,0,"-","parser_deck"],[19,0,0,"-","refinement"],[20,0,0,"-","runs_executer"],[21,0,0,"-","transformation"],[22,0,0,"-","vicinity"]],"pycopm.utils.coarsening":[[14,2,1,"","CoarseningMaps"],[14,1,1,"","_collect_removed_zcorn_indices"],[14,1,1,"","_compact_permeability_properties"],[14,1,1,"","_find_active_neighbors"],[14,1,1,"","_find_include_statement"],[14,1,1,"","_global_index_to_ijk"],[14,1,1,"","_group_maximum_zero_based"],[14,1,1,"","_group_minimum_zero_based"],[14,1,1,"","_group_sum_zero_based"],[14,1,1,"","_grouped_count"],[14,1,1,"","_grouped_first"],[14,1,1,"","_grouped_last"],[14,1,1,"","_grouped_max"],[14,1,1,"","_grouped_mean"],[14,1,1,"","_grouped_min"],[14,1,1,"","_grouped_mode"],[14,1,1,"","_grouped_sum"],[14,1,1,"","_interleave_dual_property"],[14,1,1,"","_read_satnum"],[14,1,1,"","build_dual_porosity_grid"],[14,1,1,"","coarsen_and_write_properties"],[14,1,1,"","coarsen_corner_point_grid"],[14,1,1,"","coarsen_properties"],[14,1,1,"","create_coarsening_map"],[14,1,1,"","create_coarsening_maps"],[14,1,1,"","map_nnc_transmissibilities"],[14,1,1,"","redistribute_removed_pore_volume"]],"pycopm.utils.coarsening.CoarseningMaps":[[14,3,1,"","cell_groups"],[14,3,1,"","coarse_tranx"],[14,3,1,"","coarse_trany"],[14,3,1,"","coarsened_axes"],[14,3,1,"","dual_defaults"],[14,3,1,"","dual_tranx"],[14,3,1,"","dual_trany"],[14,3,1,"","matrix_mask"],[14,3,1,"","nnc_text"],[14,3,1,"","reference_to_coarse"],[14,3,1,"","vertical_transfer_enabled"],[14,3,1,"","x"],[14,3,1,"","y"],[14,3,1,"","z"]],"pycopm.utils.files_writer":[[15,1,1,"","_identify_removed_pillars"],[15,1,1,"","_render_template"],[15,1,1,"","_write_ert_files"],[15,1,1,"","_write_grid_files"],[15,1,1,"","_write_let_tables"],[15,1,1,"","format_opm_compact_values"],[15,1,1,"","round_like_e"],[15,1,1,"","write_coarsened_model_files"],[15,1,1,"","write_compact_property_file"],[15,1,1,"","write_dual_properties"],[15,1,1,"","write_grid"],[15,1,1,"","write_include"],[15,1,1,"","write_porv"],[15,1,1,"","write_property"],[15,1,1,"","write_property_inc"],[15,1,1,"","write_reference_to_coarse_map"]],"pycopm.utils.generate_decks":[[16,1,1,"","_correct_fluid_in_place"],[16,1,1,"","_create_index_mappings"],[16,1,1,"","_initialize_deck_data"],[16,1,1,"","create_deck"]],"pycopm.utils.input_values":[[17,1,1,"","create_deck_config"],[17,1,1,"","load_toml_config"],[17,1,1,"","parse_axis_modifications"]],"pycopm.utils.parser_deck":[[18,2,1,"","_ParserState"],[18,1,1,"","__handle_schedule_keyword"],[18,1,1,"","_append_explicit_solution_includes"],[18,1,1,"","_collect_segmented_well_names"],[18,1,1,"","_collect_vicinity_well_names"],[18,1,1,"","_handle_aquancon"],[18,1,1,"","_handle_aqucon"],[18,1,1,"","_handle_aqunum"],[18,1,1,"","_handle_bccon"],[18,1,1,"","_handle_bwpr"],[18,1,1,"","_handle_compsegs"],[18,1,1,"","_handle_dimens"],[18,1,1,"","_handle_editnnc"],[18,1,1,"","_handle_equil"],[18,1,1,"","_handle_fault"],[18,1,1,"","_handle_grid_props"],[18,1,1,"","_handle_mapaxes"],[18,1,1,"","_handle_multflt"],[18,1,1,"","_handle_multiply"],[18,1,1,"","_handle_multregt"],[18,1,1,"","_handle_oper"],[18,1,1,"","_handle_pinch"],[18,1,1,"","_handle_props"],[18,1,1,"","_handle_regions"],[18,1,1,"","_handle_segmented_wells"],[18,1,1,"","_handle_source"],[18,1,1,"","_handle_welldims"],[18,1,1,"","_handle_wells"],[18,1,1,"","_handle_welsegs"],[18,1,1,"","_include_contains_endbox"],[18,1,1,"","_mark_multiplier_keyword"],[18,1,1,"","_scan_deck_file"],[18,1,1,"","find_multiplier_keywords"],[18,1,1,"","process_deck"]],"pycopm.utils.parser_deck._ParserState":[[18,3,1,"","aquancon"],[18,3,1,"","aqucon"],[18,3,1,"","aqunum"],[18,3,1,"","bccon"],[18,3,1,"","bwpr"],[18,3,1,"","compdat"],[18,3,1,"","completion_wells"],[18,3,1,"","complump"],[18,3,1,"","compsegs"],[18,3,1,"","compsegs_wells"],[18,3,1,"","dimens"],[18,3,1,"","editnnc"],[18,3,1,"","equil"],[18,3,1,"","faults"],[18,3,1,"","grid"],[18,3,1,"","has_edit"],[18,3,1,"","mapaxes"],[18,3,1,"","multflt"],[18,3,1,"","multiply"],[18,3,1,"","multregt"],[18,3,1,"","operation"],[18,3,1,"","pinch"],[18,3,1,"","previous_completion"],[18,3,1,"","process_edit"],[18,3,1,"","props"],[18,3,1,"","regions"],[18,3,1,"","retained_wells"],[18,3,1,"","schedule_keyword"],[18,3,1,"","segmented_wells"],[18,3,1,"","separator"],[18,3,1,"","skip_block"],[18,3,1,"","source"],[18,3,1,"","welldims"],[18,3,1,"","welsegs"],[18,3,1,"","welspecs"]],"pycopm.utils.refinement":[[19,2,1,"","RefinementMaps"],[19,1,1,"","create_coord_axis_map"],[19,1,1,"","create_refinement_maps"],[19,1,1,"","create_zcorn_axis_map"],[19,1,1,"","refine_grid"],[19,1,1,"","refine_properties"],[19,1,1,"","refine_zcorn_surface"]],"pycopm.utils.refinement.RefinementMaps":[[19,3,1,"","refined_cell_counts"],[19,3,1,"","x"],[19,3,1,"","y"],[19,3,1,"","z"]],"pycopm.utils.runs_executer":[[20,1,1,"","generate_postprocessing_plots"],[20,1,1,"","run_simulations"]],"pycopm.utils.transformation":[[21,1,1,"","transform_grid"],[21,1,1,"","transform_properties"]],"pycopm.utils.vicinity":[[22,2,1,"","VicinityMaps"],[22,2,1,"","_BoundaryMapping"],[22,1,1,"","_add_or_collect_porv"],[22,1,1,"","_apply_layer_pore_volume_correction"],[22,1,1,"","_corner_pore_volumes"],[22,1,1,"","_distribute_vertical_pore_volume"],[22,1,1,"","_find_nearest_active_corner_cell"],[22,1,1,"","_get_well_completions_for_vicinity"],[22,1,1,"","_map_east_boundary"],[22,1,1,"","_map_north_boundary"],[22,1,1,"","_map_south_boundary"],[22,1,1,"","_map_west_boundary"],[22,1,1,"","_original_index"],[22,1,1,"","_submodel_index"],[22,1,1,"","apply_boundary_pore_volume_correction"],[22,1,1,"","create_vicinity_maps"],[22,1,1,"","extract_vicinity_grid"],[22,1,1,"","map_vicinity_properties"]],"pycopm.utils.vicinity.VicinityMaps":[[22,3,1,"","active_counts"],[22,3,1,"","cell_mask"],[22,3,1,"","layer_external_porv"],[22,3,1,"","layer_max_i"],[22,3,1,"","layer_max_j"],[22,3,1,"","layer_min_i"],[22,3,1,"","layer_min_j"],[22,3,1,"","layer_selected_porv"],[22,3,1,"","max_i"],[22,3,1,"","max_j"],[22,3,1,"","max_k"],[22,3,1,"","min_i"],[22,3,1,"","min_j"],[22,3,1,"","min_k"],[22,3,1,"","selector"],[22,3,1,"","shape"],[22,3,1,"","source_indices"],[22,3,1,"","well_cells"],[22,3,1,"","well_indices"]],"pycopm.utils.vicinity._BoundaryMapping":[[22,3,1,"","active_count"],[22,3,1,"","offsets"],[22,3,1,"","pore_volume"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute"},"terms":{"0f":4,"0pressur":4,"1e":4,"1f":4,"2d":24,"2e":4,"2f":4,"2xyz":4,"3h":24,"3xz":4,"A":[2,19,23,24],"About":5,"After":4,"All":4,"An":[3,23],"As":[4,7,9,24],"At":18,"Below":23,"By":[2,4],"For":[0,2,3,4,6,7,9,24],"From":[4,24],"Here":[2,4,24],"I":2,"If":[2,4,6,12,24],"In":[3,4,6,7,24],"It":4,"The":[0,1,2,3,4,6,7,9,12,14,16,18,22,24],"Then":[2,4,6,9,24],"There":4,"These":[4,22,24],"This":[4,7,12,24],"To":[2,4,6,24],"We":[3,4,24],"While":[4,6],"You":[4,6],"_":24,"__handle_schedule_keyword":[10,13,18],"_add_or_collect_porv":[10,13,22],"_append_explicit_solution_includ":[10,13,18],"_apply_layer_pore_volume_correct":[10,13,22],"_array_lik":22,"_boundarymap":[10,13,22],"_build":3,"_check_cmdarg":[10,11,12],"_check_flow":[10,11,12],"_collect_removed_zcorn_indic":[10,13,14],"_collect_segmented_well_nam":[10,13,18],"_collect_vicinity_well_nam":[10,13,18],"_compact_permeability_properti":[10,13,14],"_corner_pore_volum":[10,13,22],"_correct_fluid_in_plac":[10,13,16],"_create_index_map":[10,13,16],"_distribute_vertical_pore_volum":[10,13,22],"_find_active_neighbor":[10,13,14],"_find_include_stat":[10,13,14],"_find_nearest_active_corner_cel":[10,13,22],"_get_well_completions_for_vicin":[10,13,22],"_global_index_to_ijk":[10,13,14],"_group_maximum_zero_bas":[10,13,14],"_group_minimum_zero_bas":[10,13,14],"_group_sum_zero_bas":[10,13,14],"_grouped_count":[10,13,14],"_grouped_first":[10,13,14],"_grouped_last":[10,13,14],"_grouped_max":[10,13,14],"_grouped_mean":[10,13,14],"_grouped_min":[10,13,14],"_grouped_mod":[10,13,14],"_grouped_sum":[10,13,14],"_handle_aquancon":[10,13,18],"_handle_aqucon":[10,13,18],"_handle_aqunum":[10,13,18],"_handle_bccon":[10,13,18],"_handle_bwpr":[10,13,18],"_handle_compseg":[10,13,18],"_handle_dimen":[10,13,18],"_handle_editnnc":[10,13,18],"_handle_equil":[10,13,18],"_handle_fault":[10,13,18],"_handle_grid_prop":[10,13,18],"_handle_mapax":[10,13,18],"_handle_multflt":[10,13,18],"_handle_multipli":[10,13,18],"_handle_multregt":[10,13,18],"_handle_op":[10,13,18],"_handle_pinch":[10,13,18],"_handle_prop":[10,13,18],"_handle_region":[10,13,18],"_handle_segmented_wel":[10,13,18],"_handle_sourc":[10,13,18],"_handle_wel":[10,13,18],"_handle_welldim":[10,13,18],"_handle_welseg":[10,13,18],"_identify_removed_pillar":[10,13,15],"_include_contains_endbox":[10,13,18],"_initialize_deck_data":[10,13,16],"_interleave_dual_properti":[10,13,14],"_map_east_boundari":[10,13,22],"_map_north_boundari":[10,13,22],"_map_south_boundari":[10,13,22],"_map_west_boundari":[10,13,22],"_mark_multiplier_keyword":[10,13,18],"_original_index":[10,13,22],"_parse_argu":[10,11,12],"_parserst":[10,13,18],"_pycopm":7,"_read_satnum":[10,13,14],"_render_templ":[10,13,15],"_scan_deck_fil":[10,13,18],"_submodel_index":[10,13,22],"_type":22,"_write_ert_fil":[10,13,15],"_write_grid_fil":[10,13,15],"_write_let_t":[10,13,15],"abl":4,"abov":[4,22,24],"abstract":5,"accept":[3,17],"accord":24,"account":2,"accumul":14,"accuraci":24,"achiev":[2,4,24],"across":[4,22,24],"action":[3,6],"activ":[2,4,6,7,12,14,18,22,24],"active_cell_method":12,"active_count":[13,22],"actnum":[7,14],"actual":4,"ad":5,"adapt":[7,9],"add":[2,3,4,6,7,12,14,15,24],"addiiton":24,"addit":[2,4,12,19,24],"adjust":[7,12,16],"adopt":24,"affin":24,"aggreg":[12,14],"al":2,"align":24,"allow":[2,4,7,24],"allow_inlin":15,"along":[7,12,19,22,24],"also":[3,4,6,7,14,17,24],"altern":[3,7],"among":[14,19,24],"anaconda":6,"analys":3,"analysi":3,"angl":[12,21],"ani":[2,3,15,24],"answer":3,"api":5,"appear":9,"append":18,"appli":[4,7,21,24],"applic":[4,7,9,24],"apply_boundary_pore_volume_correct":[10,13,22],"apporach":4,"approach":[0,2,3,4,7,9,24],"appropri":[12,24],"aproach":4,"apt":6,"aquancon":[13,18],"aqucon":[13,18],"aquif":18,"aqunum":[13,18],"area":24,"argument":[2,7,12,14,16,17,19],"argv":12,"arithmet":[7,24],"armon":[7,24],"around":[4,7,24],"array":[2,7,14,15,17,22,24],"assign":[7,14,22,24],"associ":21,"assum":4,"assur":24,"auto":3,"avail":[4,6,7,12,16],"averag":[7,24],"avoid":[4,7],"axe":[12,14,19],"axi":[7,12,14,15,16,17,18,19,22],"axis_valu":17,"azurewebsit":4,"back":2,"bar":4,"base":[1,7,12,14,17,18,19,20,22,23,24],"basetemp":3,"bash":4,"bc0407_hist01122006":4,"bccon":[13,18],"becaus":21,"becom":14,"befor":[2,3,6,7,15,20],"benchmark":23,"better":[4,24],"betweens":24,"bin":[2,3,6,7],"binari":[3,4,5,7],"black":[3,4],"block":18,"bool":[14,15,18],"boolean":[18,22],"bottom":[2,4],"bound":[16,22],"boundari":[2,4,7,14,22,24],"box":[7,12,22,24],"branch":6,"break":24,"brew":[4,5],"build":[2,3,5,7,16],"build_dual_porosity_grid":[10,13,14],"build_opm_mpi":6,"built":[4,6,7],"bwpr":[13,18],"c":[3,4,7,12,24],"c1":4,"c2":4,"ca":4,"calcit":23,"calcul":22,"call":[1,2,9],"can":[2,3,4,6,7,9,12,14,16,17,22,24],"capillari":24,"care":24,"cartesian":[14,24],"case":[1,4,12,14,16,24],"cbsfax":4,"cd":[4,6],"cell":[2,4,7,12,14,15,16,18,19,22,24],"cell_group":[13,14],"cell_mask":[13,22],"center":[0,4],"centr":[12,22],"certain":4,"cet_rainbow_bgyrm_35_85_c69":4,"cfd":23,"cfg":[14,15,20],"cformat":4,"chang":[2,3,14],"charact":12,"character":24,"check":[3,6,12,23],"checker":3,"checkout":6,"chosen":22,"ci_pycopm_maco":3,"ci_pycopm_ubuntu":[3,6],"cijk":17,"clabel":4,"class":[14,18,19,22],"cleanup_file_suffix":2,"clone":[4,6],"closest":[4,7],"cluster":[14,24],"cluster_id":14,"cluster_maximum":14,"cluster_minimum":14,"cmake":6,"cmdarg":[12,14,16,17,19],"cnum":4,"co2":[0,23],"coa_map":14,"coa_z":14,"coars":[2,4,7,14,15,16,18,24],"coarse_trani":[13,14],"coarse_tranx":[13,14],"coarsen":[1,2,5,7,9,10,12,13,15,16,17],"coarsen_and_write_properti":[10,13,14],"coarsen_corner_point_grid":[10,13,14],"coarsen_properti":[10,13,14],"coarsened_ax":[13,14],"coarseningmap":[10,13,14,16],"coarser":[2,4,7,9,24],"coarsern":4,"code":[3,6,10],"collabor":3,"collect":[16,22],"column":[14,22],"column_offset":22,"com":[4,6,7],"combin":[4,12],"comma":[7,17],"command":[2,4,6,12,14,16,17,19,20],"comment":4,"commit":3,"common":[6,24],"communic":24,"compact":15,"compar":4,"comparison":24,"compat":12,"compdat":[7,12,13,18],"complet":[2,14,18,22],"completion_removal_level":12,"completion_wel":[13,18],"complex":24,"complump":[13,18],"compseg":[13,18],"compsegs_wel":[13,18],"comput":[2,7,24],"con":14,"concaten":14,"concept":5,"condit":24,"confact":7,"confer":2,"config":6,"configur":[5,7,12,14,15,16,17,18,19,20,21,22],"configviadeck":[14,15,16,17,18,19,21,22],"configviatoml":[14,15,17,20],"conform":7,"connect":[4,7,12,14,24],"conquer":4,"consecut":15,"conserv":4,"consid":[2,7],"constant":15,"contain":[1,3,4,14,15,17,18,19,20,21,22],"content":[1,3,4,5,8,14,18],"continu":[12,14],"continuous_aggregation_method":12,"continuum":14,"contribut":[0,5,6],"control":[14,15],"convert":15,"coord":[14,15,19],"coord_indic":15,"coordin":[7,12,16,21,22],"copi":[3,4,6,9,14,19,20],"core":[1,8,10],"corner":[7,14,15,19,21,22,24],"corner_i":22,"corner_j":22,"corner_porv":22,"correct":[2,7,9,12,16,22,24],"correct_fluid_in_plac":12,"correl":24,"correspond":[2,4,7,18,22,24],"count":19,"cov":3,"cover":12,"cporv":2,"cr":[14,15],"creat":[3,4,6,7,9,14,16,17,19,22,24],"create_coarsening_map":[10,13,14],"create_coord_axis_map":[10,13,19],"create_deck":[10,13,16],"create_deck_config":[10,13,17],"create_refinement_map":[10,13,19],"create_vicinity_map":[10,13,22],"create_zcorn_axis_map":[10,13,19],"creation":7,"criterion":12,"criterium":7,"csp":23,"cssr":[0,4,6,7],"current":[2,4,6,7,9],"current_directori":6,"d":[4,7,12,24],"data":[2,3,4,7,12,14,15,16,18,19,22,24],"dataset":4,"date":2,"day":4,"dck":[14,15,16,18,19,21,22],"dcmake_build_typ":6,"deck":[1,2,3,5,7,12,14,15,16,17,18,19,21,22,24],"deck_dri":[7,12],"deck_encod":12,"deck_lin":18,"dedic":6,"default":[2,4,7,9,14,24],"default_valu":14,"defin":[2,4,9,14,24],"definit":[2,4,24],"degre":[4,7,12,21],"delax":4,"delet":2,"demonstr":4,"denot":22,"depend":[3,6,12,16,22,24],"depth":[12,14,24],"deriv":17,"describ":[3,4,7,9],"descript":[2,7],"destin":[12,15],"destination_surfac":19,"detail":12,"determin":16,"dev":[3,6],"develop":[4,6,7,9,24],"diamond":[7,12,22,24],"diamondxi":[4,7,12,22,24],"dict":[12,14,17],"differ":[1,2,4,7,24],"differenti":[4,7],"digit":[7,12,15],"dimen":[13,18],"dimens":[14,15,16,17,18,19,21,22],"dimension":15,"dir":[2,7],"direct":[2,4,7,9,12,14,18,24],"directori":[3,12,17],"discontinu":7,"discret":[12,14,24],"discrete_aggregation_method":12,"discuss":2,"disperc":7,"dist":2,"distanc":[14,22],"distpara":2,"distribut":[2,7,22,24],"divers":[7,24],"divid":[4,14,19],"dmar":2,"doc":3,"docs_configs_view":2,"docs_theory_coarsen":24,"docs_theory_refin":24,"docs_theory_submodel":24,"docs_theory_transform":24,"docs_via_config_drogon":4,"docs_via_deck_drogon":4,"docs_via_deck_dual_coarsen":4,"docs_via_deck_hello_world":4,"docs_via_deck_norn":4,"docs_via_deck_smeaheia":4,"docs_via_deck_spe10":4,"document":[2,3,4,6,7],"done":[6,7],"download":[4,6],"dpi":4,"drawback":24,"dri":[4,7,12,16],"drogon":[1,2,5,7,9,12,14],"drogon_2times_coars":4,"drogon_coars":4,"drogon_hist":4,"drogon_hist_prep_pycopm_dryrun":4,"drogon_hist_pycopm":4,"drogon_hist_pycopm_pycopm":4,"drogon_pycopm_comparison":4,"dual":[5,12,14,15],"dual_default":[13,14],"dual_porosity_criterion":12,"dual_trani":[13,14],"dual_tranx":[13,14],"dual_valu":14,"due":[4,24],"dure":[12,14,22,24],"duse_mpi":6,"dwith_ndebug":6,"dynam":23,"e":[2,3,4,6,7,9,12,24],"earli":9,"eas":24,"east":22,"edg":6,"editnnc":[13,18],"effect":24,"eg":2,"egrid":[3,16],"either":[6,7],"elaps":20,"elapsed_second":20,"els":6,"em":23,"email":3,"emltg":2,"emlto":2,"emphas":24,"empti":[4,7,14,22],"enabl":[4,7,14],"encod":[7,12,18],"end":[4,24],"endbox":18,"endnum":7,"ensembl":[2,4,7],"ensemble_experi":2,"ensemble_s":2,"ensemble_smooth":2,"enterpris":6,"entri":[2,7,12,24],"environ":[3,6],"eo":2,"eog":2,"eqlnum":7,"equal":[4,7,15,19,24],"equil":[2,4,12,13,18],"error":[2,4,9],"ert":[1,2,4,6,7,9,12,15,20],"ert_argu":2,"es_mda":2,"et":2,"etc":7,"everi":[14,15],"ew":2,"exampl":[2,3,5,9,14,24],"excel":24,"except":2,"exclud":22,"exectut":7,"execut":[1,2,3,4,6,7,9,12,20,24],"execution_mod":[2,12],"expans":0,"expect":15,"explicit":[4,7,12,17,18],"export":[3,6],"exprecc":[0,5],"extend":[3,14,15],"extern":12,"extract":[4,7,16,18,22,24],"extract_vicinity_grid":[10,13,22],"f":[3,4,7,12],"face":[7,24],"factor":12,"factori":[14,18,22],"fals":[15,18],"familiar":[2,3],"faster":24,"fault":[4,7,13,18,24],"favourit":[7,9],"featur":[0,4,24],"fewer":24,"fgip":7,"fi":6,"field":[4,18,24],"figur":[2,4,9,24],"file":[1,3,5,6,7,12,14,15,16,17,18,22,24],"file_path":18,"file_suffix":15,"filenam":12,"files_writ":[10,13],"filter":18,"final":[1,2,4,15],"find":[9,14,15,18],"find_multiplier_keyword":[10,13,18],"fine":[2,14],"finner":24,"fipnum":[7,24],"first":[2,4,7,14,16],"five":4,"fix":3,"flag":[2,3,4,7,18],"flatten":[14,15,19,22],"flexibl":[7,24],"float":[7,12,14,17,20,22],"flow":[1,2,3,5,7,12,15,16,20,23,24],"flow_cmdarg":12,"flow_command":[2,12],"flow_maco":3,"flow_toml":12,"fluid":[16,24],"fluidflow":23,"fluxnum":7,"focus":[4,7,9,24],"foip":[4,7],"folder":[1,3,4,5,6,7],"follow":[2,4,6,7,9,12,21,24],"fopr":4,"fork":[0,3],"format":[2,3,4,15,24],"format_opm_compact_valu":[10,13,15],"former":24,"formula":5,"found":18,"four":[4,22,24],"frac":24,"fraction":19,"fractur":[12,14,15],"framework":[1,4,23],"freeglut3":6,"frequent":24,"friend":[4,7],"front":24,"full":[2,4,9],"function":[1,2,4,14,15,16,20,22,24],"fund":0,"g":[2,3,4,6,7,9,12,24],"gas":[4,7,12,16],"generat":[1,2,3,4,7,9,12,14,15,16,17,18,19,20,21,22,23,24],"generate_deck":[10,13],"generate_postprocessing_plot":[10,13,20],"geolog":[2,4,7,9,24],"geometr":[22,24],"geometri":[19,21,22,24],"geophys":24,"get":[3,6],"gif":[4,23],"git":[4,6],"github":[2,3,4,6,7],"give":[4,9,24],"given":[2,4,7,24],"global":[14,15,22,24],"global_index":14,"go":4,"good":4,"graphic":5,"grdecl":15,"greater":14,"grid":[1,4,5,6,7,9,12,13,14,15,16,17,18,19,21,22],"grid_transform":[12,21],"ground":5,"group":[12,14,24],"group_cod":14,"gui":2,"h":2,"handi":24,"handl":[4,18,24],"handler":18,"harmon":[7,24],"has_edit":[13,18],"has_main_multflt":18,"hat":6,"hdf5":6,"head":18,"header":15,"hello":[3,5],"hello_world":[3,4],"hello_world_pycopm":[3,4],"hello_world_pycopm_pycopm":4,"help":[3,6],"hexahedron":24,"higher":4,"highest":14,"highlight":4,"histori":[2,4,7,9,23,24],"history_matching_end_d":2,"hm":[2,4],"home":7,"homebrew":6,"honor":[2,24],"horda":0,"horizont":[14,19,24],"host":7,"howev":4,"html":3,"https":[4,6,7],"hv":18,"identifi":[4,12,14,15,18,22],"ignor":[3,14],"ijk":[12,14],"ilustr":4,"imag":23,"imbnum":7,"impact":24,"implement":[4,7,12,24],"import":[3,24],"inact":[4,7,22,24],"inc":[4,7,15],"includ":[4,6,7,9,12,14,15,16,18,19,21,22],"include_lin":14,"include_prefix":12,"inclus":[17,22],"incompat":12,"increas":[4,24],"index":[2,5,14,16,18,22],"indic":[4,7,12,14,15,16,17,18,19,22,24],"induc":23,"industri":24,"inform":[2,24],"init":[2,4,14,16],"initi":[2,4,7,12,18,24],"initialization_method":2,"inj":4,"injector":4,"inlin":15,"input":[2,4,5,7,12,16,17,18,19,24],"input_deck_path":12,"input_fil":[12,17],"input_valu":[10,13],"insert":14,"insid":[4,6,22,24],"insight":24,"inspect":2,"instal":[3,4,5,7],"instead":[2,4,12,24],"instruct":6,"int":[14,15,17,18,19,20,22],"integ":4,"integr":2,"interest":[6,23,24],"interim":6,"interleav":14,"intermedi":14,"internal":7,"interpol":19,"interval":[2,4,7,12,14,19,24],"introduct":[5,9,24],"invalid":12,"involv":[4,24],"iso":[7,12],"isol":4,"issu":[0,4,5],"item":7,"iter":[2,4],"iterative_ensemble_smooth":2,"j":[2,4,7,12,14,15,22,24],"j5":6,"jk":7,"job":[1,15,20],"jump":[4,12,14],"jump_threshold":12,"just":7,"k":[2,4,7,12,14,22,24],"keep":[2,4,7],"key":[12,24],"keyword":[4,15,16,18],"kh":7,"kilomet":24,"km":4,"kwr":18,"l":[4,6,7,12],"l127":4,"l242":4,"label":4,"larg":24,"last":[2,7,14,16],"later":2,"latter":4,"launcher":12,"layer":[7,14,22,24],"layer_external_porv":[13,22],"layer_index":22,"layer_max_i":[13,22],"layer_max_j":[13,22],"layer_min_i":[13,22],"layer_min_j":[13,22],"layer_selected_porv":[13,22],"leakag":23,"least":[4,7],"left":[4,9,12,24],"legend":4,"less":4,"let":[2,15],"let_paramet":[2,20],"level":[7,12,18],"lg":2,"lib":6,"lie":24,"like":[4,24],"line":[2,3,4,6,12,14,15,16,17,18,19,21,22,24],"linear":19,"link":[4,6],"lint":6,"linux":[4,5],"list":[14,15,16,17,18,19,21,22],"lmltg":2,"lmlto":2,"lo":2,"load":[16,17],"load_toml_config":[10,13,17],"loc":4,"local":[3,17,24],"locat":[1,4,7,9,24],"log":2,"look":3,"loop":4,"lost":2,"lot":[4,24],"lower":[4,24],"lw":2,"m":[3,4,6,7,12],"machin":[2,6,7,12,15],"maco":[3,4,5],"macport":6,"made":[4,20,24],"main":[1,2,3,4,10,11,12,18],"maintain":3,"major":12,"make":[3,4,6,7,24],"mako":[1,15],"mamba":6,"manag":[6,24],"mantain":3,"manual":7,"map":[7,12,14,15,16,18,19,22,24],"map_nnc_transmiss":[10,13,14],"map_vicinity_properti":[10,13,22],"mapax":[4,13,18],"mark":14,"mask":[14,22],"master":6,"match":[2,4,7,9,12,16,23,24],"mathbb":24,"matrix":[12,14,15],"matrix_mask":[13,14],"max":[2,4,7,12,14,24],"max_i":[13,22],"max_j":[13,22],"max_k":[13,22],"max_parallel_r":2,"max_realization_runtime_second":2,"maximum":[2,4,14,22],"maxpermz":4,"may":15,"mean":[2,4,7,12,14,24],"measur":24,"member":4,"memori":2,"mention":[4,24],"merg":[3,14],"messag":12,"metadata":17,"meter":[7,24],"method":[12,22,24],"micp":5,"microbi":23,"microsystem":23,"middl":4,"might":[3,4,6,9,23,24],"million":4,"min":[2,4,7,12,14,24],"min_i":[13,22],"min_j":[13,22],"min_k":[13,22],"min_successful_r":2,"mini":7,"miniforg":6,"minimum":[2,14,22],"minj":7,"miscnum":7,"miss":3,"missmatch":24,"mkdir":6,"mode":[2,4,7,12,14,20,24],"model":[2,4,7,9,12,14,18,23,24],"model3":24,"model6":4,"model_nam":2,"modif":[2,17],"modifi":[2,4,6,7,9,12,16,18,19,21],"modified_deck":[14,15,16,18,19,21,22],"modul":[1,5,8,23],"mpi":[4,6],"mpirun":2,"mult":[7,18],"multflt":[13,18],"multi":[4,18],"multipli":[4,7,13,14,18,24],"multnum":7,"multregt":[4,13,18],"multx":[4,18],"multz":[4,18],"must":[2,4,24],"mypi":3,"n":[3,4,7,12,14,15,19],"name":[2,4,7,12,14,15,22],"name_of_input_fil":7,"name_of_script":4,"nan":14,"natur":24,"ndarray":[14,15,17,18,19,22],"near":23,"nearest":[14,22],"need":[2,3,4,6,7,9],"neighbor":24,"neighbor_indic":14,"neighbour":[4,7,14,24],"neighbourhood":[7,12,22,24],"neither":12,"nest":18,"net":[4,7,12,14],"new":[0,3,4,7,24],"newton":2,"next":2,"nice":[3,4,6],"nnc":[14,24],"nnc_text":[13,14],"non":[4,7,12,14,24],"none":[12,14,15,16,18,19,20,21,22],"norn":[1,2,5,7,9,12,14,24],"norne_atw2013":4,"north":22,"northeast":22,"northwest":22,"notat":[15,24],"note":[3,4],"noth":7,"now":4,"np":2,"nrwo":18,"ntg":[2,4],"num_dig":15,"number":[2,4,7,12,14,15,19,20,22,24],"number_group":14,"number_t":[15,20],"number_valu":15,"numer":12,"numpi":22,"nx":14,"nxyz":14,"nz":14,"o":[3,4,7,9,12],"object":[14,17,18,19,22],"observ":[4,15],"observation_minimum_error":2,"observation_relative_error":2,"offset":[13,14,22],"often":24,"oil":[4,7,12,16],"ok":4,"old":4,"omega":24,"omit":12,"onc":24,"one":[2,4,6,7,9,12,14,15,17,19,22,24],"onli":[2,4,7,17,21,24],"onlin":6,"onto":[14,19,22],"open":[4,16,23,24],"openbla":6,"oper":[4,12,13,18,24],"opernum":[7,15],"opm":[1,2,3,5,7,12,15,16,18,20,23,24],"opt":6,"optim":[7,9],"option":[2,4,7,12,15,16,24],"optvic":22,"order":[2,4,7,14,15,17,18,19,22,24],"org":6,"origin":[1,4,12,14,15,16,18,19,21,22],"original_lay":22,"original_ni":19,"original_nx":19,"otherwis":[9,14,15],"outisd":24,"output":[2,3,4,5,7,14,15,16,19,20,21,22],"output_deck_nam":12,"output_directori":[12,17],"output_ni":19,"output_nx":19,"output_path":15,"output_porv":[14,16,22],"outsid":[4,7,22,24],"overlap":24,"overview":[2,5],"p":[4,7,12,24],"packag":[1,3,4,5,8],"page":[3,5],"parallel":2,"paramet":[2,4,7,12,14,15,16,17,18,19,20,21,22,24],"paraview":4,"pars":[12,16,17,18],"parse_axis_modif":[10,13,17],"parser":[17,18],"parser_deck":[10,13],"part":[4,24],"particular":12,"pass":[3,4,15],"path":[2,3,4,7,9,12,15,17,18],"peqvr":7,"per":[4,7,14,16,19,22],"perform":[4,7,21,24],"perm":4,"perm_max":2,"perm_min":2,"permeabl":[2,4,24],"permi":[2,4,7,14],"permx":[2,4,7,14],"permz":[2,4,7,14],"pet":[7,9],"phi_":24,"physic":12,"pilar":[2,4,7],"pillar":[2,14,24],"pinch":[13,18],"pip":[3,4,6],"pkg":6,"pkg_config_path":6,"pkgconfig":6,"place":[4,12,16,19,20,24],"plane":[7,24],"platform":[0,6],"pleas":[0,3],"plopm":[2,4,5,24],"plot":[9,20],"plus":7,"pm":7,"png":4,"pngs":[4,23],"pofff":5,"point":[7,12,14,15,17,19,21,22,24],"polygon":[7,12,22,24],"popul":[14,16,17],"pore":[4,7,12,14,16,19,22,24],"pore_volum":[13,22],"pore_volume_correct":[2,12,22],"poro":[2,4,7],"poros":[2,4,14,15,24],"porv":[2,4,7,19],"posit":[7,12,19],"possibl":[3,24],"postprocess":[9,20],"practic":4,"prealloc":19,"preced":14,"precipit":23,"precis":[7,12,15,17],"prefer":3,"prefix":[12,15],"prep":[7,12],"prep_deck":[7,12],"preprocess":[16,20],"preprocessing_path":15,"prerequisit":6,"preserv":[12,15,18,19,24],"pressur":[4,24],"prevent":12,"previous":[3,4,6],"previous_complet":[13,18],"print":4,"problem":5,"process":12,"process_deck":[10,13,18],"process_edit":[13,18],"product":[4,24],"project":[0,4,6,15,17,20,23,24],"prop":[4,13,18],"properti":[2,4,7,12,14,15,16,18,19,21,22,24],"property_nam":15,"property_valu":[14,15],"provid":[2,7,16,18,24],"proxi":7,"proyect":4,"prs":3,"prt":2,"pull":[0,3],"push":3,"pushd":3,"pv":[2,4,7,24],"pvmean":[4,7,12,24],"pvtnum":7,"pvweightedperm":4,"pwd":6,"py314":3,"pycopm":[2,3,4,6,7,9,24],"pycopm_":7,"pycopm_porv":7,"pylint":3,"pymm":5,"pyocpm":1,"pyopmnearwel":5,"pyopmspe11":5,"pytest":3,"python":[3,5,23],"python3":[3,6],"q":[4,7,12],"quantiti":24,"question":24,"quick":23,"r":[3,6,7,12],"rais":[0,3,12],"random":2,"random_se":2,"rang":[7,17,18,24],"rate":[4,24],"ratio":24,"read":[4,7,12,14],"realiz":[2,20],"receiv":[15,22],"recent":6,"recis":7,"recommend":[4,9],"record":[14,18],"red":6,"redistribut":[4,14],"redistribute_removed_pore_volum":[10,13,14],"reduc":[4,12,14],"refer":[4,14,15,17,24],"reference_simul":1,"reference_to_coars":[13,14],"refin":[1,2,4,5,7,9,10,12,13,16,18],"refine_grid":[10,13,19],"refine_properti":[10,13,19],"refine_zcorn_surfac":[10,13,19],"refined_cell_count":[13,19],"refinement_valu":19,"refinementmap":[10,13,16,19],"reftocoa":15,"regard":[2,24],"region":[2,4,7,12,13,18,22,23,24],"regular":24,"relat":[4,5,15,19,24],"releas":6,"relev":4,"remain":[2,14],"remap":22,"remedi":23,"remov":[2,4,7,12,14,15,24],"removal_indic":14,"removal_mask":14,"renam":4,"render":[15,20],"repeat":15,"replac":[3,4,18],"repo":[3,6],"report":5,"repositori":[3,4,6,7],"repres":16,"represent":17,"reproduc":2,"request":[0,3,12],"requested_ijk":12,"requir":[3,4,6,18],"reservoir":[7,14,19,21,22,23,24],"resinsight":[2,4,9,24],"resolv":18,"resourc":0,"resource_directori":17,"respect":[2,7,24],"rest":[4,7],"restart":[14,16],"restrict":[7,12],"result":[2,4,7,9,12,22,24],"retain":[12,14,18],"retained_wel":[13,18],"return":[7,12,14,15,17,18,19,22],"review":3,"rewrit":[18,21],"rewritten":18,"right":[4,9,24],"rightarrow":24,"rise":3,"roadmap":5,"rock":[2,24],"rock_property_set":2,"rocknum":7,"rotat":[4,7,9,21,24],"rotatexi":[4,7,12,21,24],"rotatexz":[7,12,21],"rotateyz":[7,12,21],"round":15,"round_like_":[10,13,15],"row":[14,22],"row_offset":22,"ruff":3,"rule":5,"run":[1,2,3,4,6,7,9,12,16,20,24],"run_simul":[10,13,20],"runs_execut":[10,13],"runtim":2,"rx":[4,7,12],"ry":[4,12],"rz":12,"s":[2,3,4,7,12,19,24],"sandv":2,"sat":2,"satnum":[2,7,14,24],"satnum_generation_method":2,"satnum_opm":14,"satur":[2,4,14,15,20,24],"saturation_function_method":2,"save":[2,4,7],"scale":[2,7,9,12,21,24],"scan":18,"sch":4,"schedul":[4,15,18],"schedule_keyword":[13,18],"score":4,"screenshot":[4,9,24],"script":[1,3,4,6,20,24],"scriptsiz":24,"search":5,"second":[2,4,14,24],"section":[4,7,18],"see":[2,3,4,6,7,24],"seed":2,"seek":5,"seem":4,"segment":18,"segmented_wel":[13,18],"seismic":24,"select":[2,9,12,14,16,18,22,24],"selector":[13,22],"send":3,"separ":[7,12,13,14,17,18],"sequenc":12,"set":[2,4,6,7,9,12,14,18,20,22,24],"setuptool":6,"seven":3,"sever":24,"sgas":4,"sh":[2,4,6,24],"shape":[2,13,15,22,24],"shift":24,"short":16,"show":[4,9,24],"shown":2,"side":24,"signific":[7,12,15],"significant_digit":[12,15,17],"similar":24,"simpl":24,"simpli":[6,24],"simul":[2,3,4,6,7,9,12,17,20,23,24],"simulation_model":4,"sinc":[4,24],"singl":[2,3,14,20],"site":23,"six":24,"size":[14,24],"skip":6,"skip_block":[13,18],"sm":4,"smaller":24,"smallest":14,"smeaheia":[5,7],"softwar":5,"solut":[4,7,12,18,24],"soon":3,"sort":20,"sourc":[3,4,5,13,14,15,18,19,21,22,23],"source_indic":[13,19,22],"source_surfac":19,"south":22,"southeast":22,"southwest":22,"spatial":24,"spe10":5,"spe10_model2":4,"spe10_model2_pycopm":4,"spe11":23,"special":[4,24],"specif":[2,4,6,12,14,17,21,22],"specifi":7,"speed":24,"squash":3,"src":3,"stage":12,"standard":[2,4,24],"start":20,"state":18,"statement":[14,18],"static":[3,4,7,12],"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20":4,"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20_prep_pycopm_dryrun":4,"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20_pycopm":4,"step":[3,6,12],"still":4,"stop":2,"storag":[0,2,23],"store":[14,18,19,22],"str":[12,14,15,16,17,18,19,21,22],"straight":24,"strategi":22,"string":22,"studi":[2,4,7,9,12,20,23,24],"sub":[4,7],"subdivis":19,"subfig":4,"subgrid":22,"submodel":[1,2,4,5,7,9,12,16,18,22],"submodel_index":22,"submodul":[1,8,10],"subpackag":[1,5,8],"substract":4,"subsurfac":[0,4,24],"subsystem":6,"succed":6,"succeed":[2,3],"success":[2,16],"sudmodel":24,"sudo":6,"suffix":[2,15],"sum":[7,14,24],"sum_":24,"summari":[4,9,14],"suppli":12,"support":[2,5,6,7,12,14,18,21],"suptitl":4,"surfac":[14,19,24],"sustain":0,"swatinit":[4,7],"syntax":[12,15],"sys":12,"system":[3,7,21],"systemexit":12,"t":[4,7,12,24],"t_":24,"tabl":[14,15,20,24],"tag":6,"tailor":4,"taken":24,"tap":[4,6],"target":3,"tcpu":4,"techniqu":[7,24],"templat":[7,15,17],"template_path":15,"template_script":1,"temporari":18,"term":3,"termin":[2,4,6,7,24],"test":[1,2,3,4,6,7,24],"test_output":3,"test_run":2,"text":[4,7,14,15],"textbook":24,"tg":2,"thconr":7,"theori":[4,5],"thick":24,"thousand":4,"three":[4,7,17,18,24],"threshold":12,"time":[2,4,20,24],"tmltg":2,"tmlto":2,"tog":2,"toml":[2,4,7,12,14,15,17,20],"tool":[0,3,4,6,7,9,23,24],"top":[2,4,12,24],"total":[4,14,22],"track":18,"trade":24,"trailing_column":22,"trailing_row":22,"trani":14,"transfer":14,"transform":[1,2,4,5,7,9,10,12,13,16],"transform_grid":[10,13,21],"transform_properti":[10,13,21],"translat":[7,9,12,21,24],"transmis":[7,24],"transmiss":[7,12,14,15,24],"transmissibili":7,"transmissibility_coarsening_method":12,"transsmiss":24,"tranx":14,"tri":[3,4,6,7],"trial":4,"trim":24,"true":[4,15],"trust":[4,6],"tstep":4,"tune":7,"tunit":4,"tupl":[14,15,17,18,19,22],"turn":6,"tutori":[3,6],"tw":2,"two":[4,7,12,16,24],"txt":[3,6],"type":[2,4,6,12,14,15,17,18,19,22,23],"typic":24,"ual":7,"ubuntu":[3,6],"unassign":22,"uncertainti":24,"unchang":21,"uniform":[2,7,12,17],"unknown":12,"unlimit":2,"unprocess":12,"unrefin":24,"unwant":12,"updat":[14,16,18,19,21,22],"upgrad":6,"upper":24,"upscal":[7,24],"use":[0,1,2,3,4,6,7,9,12,14,16,17,18,22,23,24],"user":[2,3,4,6,7],"utf":15,"utf8":[7,12],"util":[1,8,10,12],"v":[4,7,12,15,24],"v2025":6,"v2026":6,"valid":[12,16,17],"valu":[2,4,7,12,14,15,16,17,18,19,21,22,24],"variabl":[3,7,15],"vector":4,"venv":6,"version":[3,6,10],"vertic":[14,24],"vertical_transfer_en":[13,14],"via":[2,5,6,7],"vicin":[4,7,10,12,13,16,18],"vicinity_specif":12,"vicinitymap":[10,13,16,18,22],"view":[4,18,24],"vile":4,"virtual":6,"visaluaz":4,"visit":[2,3],"visual":[4,9,24],"volum":[4,7,12,14,16,19,22,24],"vpycopm":6,"vtk":4,"vtks":23,"w":[4,7,12],"water":[4,7],"webviz":4,"weight":[2,4,7,12,24],"welcom":[0,3],"well":[2,3,4,7,12,14,18,22,23,24],"well_cel":[13,22],"well_cell_indic":18,"well_indic":[13,22],"wellcind":[14,18],"welldim":[13,18],"welln":7,"wellspec":4,"welseg":[13,18],"welspec":[13,18],"west":22,"wgpr":2,"wheel":6,"whether":[14,18],"whole":7,"whose":[14,16,19,22],"wide":24,"will":[2,3,4,7],"window":[4,5],"within":19,"without":[2,4,9,14],"wopr":2,"work":[3,6,7,12],"workflow":[12,14,16,17,20,24],"world":[3,5],"write":[2,4,6,7,12,14,15,17,19,22],"write_coarsened_model_fil":[10,13,15],"write_compact_property_fil":[10,13,15],"write_dual_properti":[10,13,15],"write_explicit_solut":12,"write_grid":[10,13,15],"write_includ":[10,13,15],"write_porv":[10,13,15],"write_properti":[10,13,15],"write_property_inc":[10,13,15],"write_reference_to_coarse_map":[10,13,15],"written":[14,15,22,24],"wsl":6,"wwpr":2,"x":[2,4,7,12,13,14,17,18,19,21,22,24],"x_coarsen":[2,12,14],"x_refin":[12,19],"xformat":4,"xi_":24,"xlnum":4,"xplicit":7,"xunit":4,"xy":[7,12,22,24],"xypolygon":[4,7,24],"xyz":[7,24],"xz":14,"y":[2,4,6,7,12,13,14,17,18,19,21,22,24],"y_coarsen":[2,12,14],"y_refin":[12,19],"yformat":4,"ylabel":4,"ylnum":4,"yml":[3,6],"yournam":3,"yunit":4,"z":[2,4,7,12,13,14,17,18,19,21,22,24],"z_coarsen":[2,12,14],"z_refin":[12,19],"zc":[14,15],"zcorn":[14,15,19],"zcorn_indic":15,"zcorn_x_fract":19,"zcorn_x_indic":19,"zcorn_y_fract":19,"zcorn_y_indic":19,"zero":[14,15,22,24]},"titles":["About pycopm","pycopm Python API","Configuration file","Contributing","Examples","Welcome to pycopm\u2019s documentation!","Installation","Introduction","pycopm","Output folder","pycopm package","pycopm.core package","pycopm.core.pycopm module","pycopm.utils package","pycopm.utils.coarsening module","pycopm.utils.files_writer module","pycopm.utils.generate_decks module","pycopm.utils.input_values module","pycopm.utils.parser_deck module","pycopm.utils.refinement module","pycopm.utils.runs_executer module","pycopm.utils.transformation module","pycopm.utils.vicinity module","Related","Theory"],"titleterms":{"About":0,"abstract":4,"ad":23,"api":1,"binari":6,"brew":6,"build":6,"coarsen":[4,14,24],"concept":7,"configur":[2,4,9],"content":[10,11,13],"contribut":3,"core":[11,12],"deck":[4,9],"document":5,"drogon":4,"dual":4,"exampl":4,"exprecc":23,"file":[2,4,9],"files_writ":15,"flow":[4,6,9],"folder":9,"formula":6,"generate_deck":16,"graphic":4,"grid":24,"ground":3,"hello":4,"indic":5,"input":9,"input_valu":17,"instal":6,"introduct":7,"issu":3,"linux":6,"maco":6,"micp":23,"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22],"norn":4,"opm":[4,6,9],"output":9,"overview":7,"packag":[6,10,11,13],"parser_deck":18,"plopm":23,"pofff":23,"problem":3,"pycopm":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22],"pymm":23,"pyopmnearwel":23,"pyopmspe11":23,"python":[1,6],"refin":[19,24],"relat":23,"report":3,"roadmap":7,"rule":3,"runs_execut":20,"s":5,"seek":3,"smeaheia":4,"softwar":3,"sourc":6,"spe10":4,"submodel":24,"submodul":[11,13],"subpackag":10,"support":3,"tabl":5,"theori":24,"transform":[21,24],"util":[13,14,15,16,17,18,19,20,21,22],"via":[4,9],"vicin":22,"welcom":5,"window":6,"world":4}})
\ No newline at end of file
+Search.setIndex({"alltitles":{"About pycopm":[[0,null]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"Drogon":[[4,"drogon"]],"Dual coarsening":[[4,"dual-coarsening"]],"Examples":[[4,null]],"Graphical abstract":[[4,"graphical-abstract"]],"Grid coarsening":[[24,"grid-coarsening"]],"Grid refinement":[[24,"grid-refinement"]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pycopm"],[11,"module-pycopm.core"],[13,"module-pycopm.utils"]],"Norne":[[4,"norne"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Python package":[[6,"python-package"]],"Related":[[23,null]],"Report issues or problems":[[3,"report-issues-or-problems"]],"Roadmap":[[7,"roadmap"]],"SPE10":[[4,"spe10"]],"Seek support":[[3,"seek-support"]],"Smeaheia":[[4,"smeaheia"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodels":[[24,"submodels"]],"Submodules":[[11,"submodules"],[13,"submodules"]],"Subpackages":[[10,"subpackages"]],"Theory":[[24,null]],"Transformations":[[24,"transformations"]],"Via OPM Flow decks":[[4,"via-opm-flow-decks"]],"Via an OPM Flow input deck":[[9,"via-an-opm-flow-input-deck"]],"Via configuration files":[[4,"via-configuration-files"],[9,"via-configuration-files"]],"Welcome to pycopm\u2019s documentation!":[[5,null]],"ad-micp":[[23,"ad-micp"]],"expreccs":[[23,"expreccs"]],"plopm":[[23,"plopm"]],"pofff":[[23,"pofff"]],"pycopm":[[1,"pycopm"],[8,null]],"pycopm Python API":[[1,null]],"pycopm package":[[10,null]],"pycopm.core package":[[11,null]],"pycopm.core.pycopm module":[[12,null]],"pycopm.utils package":[[13,null]],"pycopm.utils.coarsening module":[[14,null]],"pycopm.utils.files_writer module":[[15,null]],"pycopm.utils.generate_decks module":[[16,null]],"pycopm.utils.input_values module":[[17,null]],"pycopm.utils.parser_deck module":[[18,null]],"pycopm.utils.refinement module":[[19,null]],"pycopm.utils.runs_executer module":[[20,null]],"pycopm.utils.transformation module":[[21,null]],"pycopm.utils.vicinity module":[[22,null]],"pymm":[[23,"pymm"]],"pyopmnearwell":[[23,"pyopmnearwell"]],"pyopmspe11":[[23,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pycopm","pycopm.core","pycopm.core.pycopm","pycopm.utils","pycopm.utils.coarsening","pycopm.utils.files_writer","pycopm.utils.generate_decks","pycopm.utils.input_values","pycopm.utils.parser_deck","pycopm.utils.refinement","pycopm.utils.runs_executer","pycopm.utils.transformation","pycopm.utils.vicinity","related","theory"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","configuration_file.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","output_folder.rst","pycopm.rst","pycopm.core.rst","pycopm.core.pycopm.rst","pycopm.utils.rst","pycopm.utils.coarsening.rst","pycopm.utils.files_writer.rst","pycopm.utils.generate_decks.rst","pycopm.utils.input_values.rst","pycopm.utils.parser_deck.rst","pycopm.utils.refinement.rst","pycopm.utils.runs_executer.rst","pycopm.utils.transformation.rst","pycopm.utils.vicinity.rst","related.rst","theory.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pycopm"]],"pycopm":[[11,0,0,"-","core"],[13,0,0,"-","utils"]],"pycopm.core":[[12,0,0,"-","pycopm"]],"pycopm.core.pycopm":[[12,1,1,"","_check_cmdargs"],[12,1,1,"","_check_flow"],[12,1,1,"","_parse_arguments"],[12,1,1,"","main"]],"pycopm.utils":[[14,0,0,"-","coarsening"],[15,0,0,"-","files_writer"],[16,0,0,"-","generate_decks"],[17,0,0,"-","input_values"],[18,0,0,"-","parser_deck"],[19,0,0,"-","refinement"],[20,0,0,"-","runs_executer"],[21,0,0,"-","transformation"],[22,0,0,"-","vicinity"]],"pycopm.utils.coarsening":[[14,2,1,"","CoarseningMaps"],[14,1,1,"","_collect_removed_zcorn_indices"],[14,1,1,"","_compact_permeability_properties"],[14,1,1,"","_find_active_neighbors"],[14,1,1,"","_find_include_statement"],[14,1,1,"","_global_index_to_ijk"],[14,1,1,"","_group_maximum_zero_based"],[14,1,1,"","_group_minimum_zero_based"],[14,1,1,"","_group_sum_zero_based"],[14,1,1,"","_grouped_count"],[14,1,1,"","_grouped_first"],[14,1,1,"","_grouped_last"],[14,1,1,"","_grouped_max"],[14,1,1,"","_grouped_mean"],[14,1,1,"","_grouped_min"],[14,1,1,"","_grouped_mode"],[14,1,1,"","_grouped_sum"],[14,1,1,"","_interleave_dual_property"],[14,1,1,"","_read_satnum"],[14,1,1,"","build_dual_porosity_grid"],[14,1,1,"","coarsen_and_write_properties"],[14,1,1,"","coarsen_corner_point_grid"],[14,1,1,"","coarsen_properties"],[14,1,1,"","create_coarsening_map"],[14,1,1,"","create_coarsening_maps"],[14,1,1,"","map_nnc_transmissibilities"],[14,1,1,"","redistribute_removed_pore_volume"]],"pycopm.utils.coarsening.CoarseningMaps":[[14,3,1,"","cell_groups"],[14,3,1,"","coarse_tranx"],[14,3,1,"","coarse_trany"],[14,3,1,"","coarsened_axes"],[14,3,1,"","dual_defaults"],[14,3,1,"","dual_tranx"],[14,3,1,"","dual_trany"],[14,3,1,"","matrix_mask"],[14,3,1,"","nnc_text"],[14,3,1,"","reference_to_coarse"],[14,3,1,"","vertical_transfer_enabled"],[14,3,1,"","x"],[14,3,1,"","y"],[14,3,1,"","z"]],"pycopm.utils.files_writer":[[15,1,1,"","_identify_removed_pillars"],[15,1,1,"","_render_template"],[15,1,1,"","_write_ert_files"],[15,1,1,"","_write_grid_files"],[15,1,1,"","_write_let_tables"],[15,1,1,"","format_opm_compact_values"],[15,1,1,"","round_like_e"],[15,1,1,"","write_coarsened_model_files"],[15,1,1,"","write_compact_property_file"],[15,1,1,"","write_dual_properties"],[15,1,1,"","write_grid"],[15,1,1,"","write_include"],[15,1,1,"","write_porv"],[15,1,1,"","write_property"],[15,1,1,"","write_property_inc"],[15,1,1,"","write_reference_to_coarse_map"]],"pycopm.utils.generate_decks":[[16,1,1,"","_correct_fluid_in_place"],[16,1,1,"","_create_index_mappings"],[16,1,1,"","_initialize_deck_data"],[16,1,1,"","create_deck"]],"pycopm.utils.input_values":[[17,1,1,"","create_deck_config"],[17,1,1,"","load_toml_config"],[17,1,1,"","parse_axis_modifications"]],"pycopm.utils.parser_deck":[[18,2,1,"","_ParserState"],[18,1,1,"","__handle_schedule_keyword"],[18,1,1,"","_append_explicit_solution_includes"],[18,1,1,"","_collect_segmented_well_names"],[18,1,1,"","_collect_vicinity_well_names"],[18,1,1,"","_handle_aquancon"],[18,1,1,"","_handle_aqucon"],[18,1,1,"","_handle_aqunum"],[18,1,1,"","_handle_bccon"],[18,1,1,"","_handle_bwpr"],[18,1,1,"","_handle_compsegs"],[18,1,1,"","_handle_dimens"],[18,1,1,"","_handle_editnnc"],[18,1,1,"","_handle_equil"],[18,1,1,"","_handle_fault"],[18,1,1,"","_handle_grid_props"],[18,1,1,"","_handle_mapaxes"],[18,1,1,"","_handle_multflt"],[18,1,1,"","_handle_multiply"],[18,1,1,"","_handle_multregt"],[18,1,1,"","_handle_oper"],[18,1,1,"","_handle_pinch"],[18,1,1,"","_handle_props"],[18,1,1,"","_handle_regions"],[18,1,1,"","_handle_segmented_wells"],[18,1,1,"","_handle_source"],[18,1,1,"","_handle_welldims"],[18,1,1,"","_handle_wells"],[18,1,1,"","_handle_welsegs"],[18,1,1,"","_include_contains_endbox"],[18,1,1,"","_mark_multiplier_keyword"],[18,1,1,"","_scan_deck_file"],[18,1,1,"","find_multiplier_keywords"],[18,1,1,"","process_deck"]],"pycopm.utils.parser_deck._ParserState":[[18,3,1,"","aquancon"],[18,3,1,"","aqucon"],[18,3,1,"","aqunum"],[18,3,1,"","bccon"],[18,3,1,"","bwpr"],[18,3,1,"","compdat"],[18,3,1,"","completion_wells"],[18,3,1,"","complump"],[18,3,1,"","compsegs"],[18,3,1,"","compsegs_wells"],[18,3,1,"","dimens"],[18,3,1,"","editnnc"],[18,3,1,"","equil"],[18,3,1,"","faults"],[18,3,1,"","grid"],[18,3,1,"","has_edit"],[18,3,1,"","mapaxes"],[18,3,1,"","multflt"],[18,3,1,"","multiply"],[18,3,1,"","multregt"],[18,3,1,"","operation"],[18,3,1,"","pinch"],[18,3,1,"","previous_completion"],[18,3,1,"","process_edit"],[18,3,1,"","props"],[18,3,1,"","regions"],[18,3,1,"","retained_wells"],[18,3,1,"","schedule_keyword"],[18,3,1,"","segmented_wells"],[18,3,1,"","separator"],[18,3,1,"","skip_block"],[18,3,1,"","source"],[18,3,1,"","welldims"],[18,3,1,"","welsegs"],[18,3,1,"","welspecs"]],"pycopm.utils.refinement":[[19,2,1,"","RefinementMaps"],[19,1,1,"","create_coord_axis_map"],[19,1,1,"","create_refinement_maps"],[19,1,1,"","create_zcorn_axis_map"],[19,1,1,"","refine_grid"],[19,1,1,"","refine_properties"],[19,1,1,"","refine_zcorn_surface"]],"pycopm.utils.refinement.RefinementMaps":[[19,3,1,"","refined_cell_counts"],[19,3,1,"","x"],[19,3,1,"","y"],[19,3,1,"","z"]],"pycopm.utils.runs_executer":[[20,1,1,"","generate_postprocessing_plots"],[20,1,1,"","run_simulations"]],"pycopm.utils.transformation":[[21,1,1,"","transform_grid"],[21,1,1,"","transform_properties"]],"pycopm.utils.vicinity":[[22,2,1,"","VicinityMaps"],[22,2,1,"","_BoundaryMapping"],[22,1,1,"","_add_or_collect_porv"],[22,1,1,"","_apply_layer_pore_volume_correction"],[22,1,1,"","_corner_pore_volumes"],[22,1,1,"","_distribute_vertical_pore_volume"],[22,1,1,"","_find_nearest_active_corner_cell"],[22,1,1,"","_get_well_completions_for_vicinity"],[22,1,1,"","_map_east_boundary"],[22,1,1,"","_map_north_boundary"],[22,1,1,"","_map_south_boundary"],[22,1,1,"","_map_west_boundary"],[22,1,1,"","_original_index"],[22,1,1,"","_submodel_index"],[22,1,1,"","apply_boundary_pore_volume_correction"],[22,1,1,"","create_vicinity_maps"],[22,1,1,"","extract_vicinity_grid"],[22,1,1,"","map_vicinity_properties"]],"pycopm.utils.vicinity.VicinityMaps":[[22,3,1,"","active_counts"],[22,3,1,"","cell_mask"],[22,3,1,"","layer_external_porv"],[22,3,1,"","layer_max_i"],[22,3,1,"","layer_max_j"],[22,3,1,"","layer_min_i"],[22,3,1,"","layer_min_j"],[22,3,1,"","layer_selected_porv"],[22,3,1,"","max_i"],[22,3,1,"","max_j"],[22,3,1,"","max_k"],[22,3,1,"","min_i"],[22,3,1,"","min_j"],[22,3,1,"","min_k"],[22,3,1,"","selector"],[22,3,1,"","shape"],[22,3,1,"","source_indices"],[22,3,1,"","well_cells"],[22,3,1,"","well_indices"]],"pycopm.utils.vicinity._BoundaryMapping":[[22,3,1,"","active_count"],[22,3,1,"","offsets"],[22,3,1,"","pore_volume"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute"},"terms":{"0f":4,"0pressur":4,"1e":4,"1f":4,"2d":24,"2e":4,"2f":4,"2xyz":4,"3h":24,"3xz":4,"A":[2,19,23,24],"About":5,"After":4,"All":4,"An":[3,23],"As":[4,7,9,24],"At":18,"Below":23,"By":[2,4],"For":[0,2,3,4,6,7,9,24],"From":[4,24],"Here":[2,4,24],"I":2,"If":[2,4,6,12,24],"In":[3,4,6,7,24],"It":4,"The":[0,1,2,3,4,6,7,9,12,14,16,18,22,24],"Then":[2,4,6,9,24],"There":4,"These":[4,22,24],"This":[4,7,12,24],"To":[2,4,6,24],"We":[3,4,24],"While":[4,6],"You":[4,6],"_":24,"__handle_schedule_keyword":[10,13,18],"_add_or_collect_porv":[10,13,22],"_append_explicit_solution_includ":[10,13,18],"_apply_layer_pore_volume_correct":[10,13,22],"_array_lik":22,"_boundarymap":[10,13,22],"_build":3,"_check_cmdarg":[10,11,12],"_check_flow":[10,11,12],"_collect_removed_zcorn_indic":[10,13,14],"_collect_segmented_well_nam":[10,13,18],"_collect_vicinity_well_nam":[10,13,18],"_compact_permeability_properti":[10,13,14],"_corner_pore_volum":[10,13,22],"_correct_fluid_in_plac":[10,13,16],"_create_index_map":[10,13,16],"_distribute_vertical_pore_volum":[10,13,22],"_find_active_neighbor":[10,13,14],"_find_include_stat":[10,13,14],"_find_nearest_active_corner_cel":[10,13,22],"_get_well_completions_for_vicin":[10,13,22],"_global_index_to_ijk":[10,13,14],"_group_maximum_zero_bas":[10,13,14],"_group_minimum_zero_bas":[10,13,14],"_group_sum_zero_bas":[10,13,14],"_grouped_count":[10,13,14],"_grouped_first":[10,13,14],"_grouped_last":[10,13,14],"_grouped_max":[10,13,14],"_grouped_mean":[10,13,14],"_grouped_min":[10,13,14],"_grouped_mod":[10,13,14],"_grouped_sum":[10,13,14],"_handle_aquancon":[10,13,18],"_handle_aqucon":[10,13,18],"_handle_aqunum":[10,13,18],"_handle_bccon":[10,13,18],"_handle_bwpr":[10,13,18],"_handle_compseg":[10,13,18],"_handle_dimen":[10,13,18],"_handle_editnnc":[10,13,18],"_handle_equil":[10,13,18],"_handle_fault":[10,13,18],"_handle_grid_prop":[10,13,18],"_handle_mapax":[10,13,18],"_handle_multflt":[10,13,18],"_handle_multipli":[10,13,18],"_handle_multregt":[10,13,18],"_handle_op":[10,13,18],"_handle_pinch":[10,13,18],"_handle_prop":[10,13,18],"_handle_region":[10,13,18],"_handle_segmented_wel":[10,13,18],"_handle_sourc":[10,13,18],"_handle_wel":[10,13,18],"_handle_welldim":[10,13,18],"_handle_welseg":[10,13,18],"_identify_removed_pillar":[10,13,15],"_include_contains_endbox":[10,13,18],"_initialize_deck_data":[10,13,16],"_interleave_dual_properti":[10,13,14],"_map_east_boundari":[10,13,22],"_map_north_boundari":[10,13,22],"_map_south_boundari":[10,13,22],"_map_west_boundari":[10,13,22],"_mark_multiplier_keyword":[10,13,18],"_original_index":[10,13,22],"_parse_argu":[10,11,12],"_parserst":[10,13,18],"_pycopm":7,"_read_satnum":[10,13,14],"_render_templ":[10,13,15],"_scan_deck_fil":[10,13,18],"_submodel_index":[10,13,22],"_type":22,"_write_ert_fil":[10,13,15],"_write_grid_fil":[10,13,15],"_write_let_t":[10,13,15],"abl":4,"abov":[4,22,24],"abstract":5,"accept":[3,17],"accord":24,"account":2,"accumul":14,"accuraci":24,"achiev":[2,4,24],"across":[4,22,24],"action":[3,6],"activ":[2,4,6,7,12,14,18,22,24],"active_cell_method":12,"active_count":[13,22],"actnum":[7,14],"actual":4,"ad":5,"adapt":[7,9],"add":[2,3,4,6,7,12,14,15,24],"addiiton":24,"addit":[2,4,12,19,24],"adjust":[7,12,16],"adopt":24,"affin":24,"aggreg":[12,14],"al":2,"align":24,"allow":[2,4,7,24],"allow_inlin":15,"along":[7,12,19,22,24],"also":[3,4,6,7,14,17,24],"altern":[3,7],"among":[14,19,24],"anaconda":6,"analys":3,"analysi":3,"angl":[12,21],"ani":[2,3,15,24],"answer":3,"api":5,"appear":9,"append":18,"appli":[4,7,21,24],"applic":[4,7,9,24],"apply_boundary_pore_volume_correct":[10,13,22],"apporach":4,"approach":[0,2,3,4,7,9,24],"appropri":[12,24],"aproach":4,"apt":6,"aquancon":[13,18],"aqucon":[13,18],"aquif":18,"aqunum":[13,18],"area":24,"argument":[2,7,12,14,16,17,19],"argv":12,"arithmet":[7,24],"armon":[7,24],"around":[4,7,24],"array":[2,7,14,15,17,22,24],"assign":[7,14,22,24],"associ":21,"assum":4,"assur":24,"auto":3,"avail":[4,6,7,12,16],"averag":[7,24],"avoid":[4,7],"axe":[12,14,19],"axi":[7,12,14,15,16,17,18,19,22],"axis_valu":17,"azurewebsit":4,"back":2,"bar":4,"base":[1,7,12,14,17,18,19,20,22,23,24],"basetemp":3,"bash":4,"bc0407_hist01122006":4,"bccon":[13,18],"becaus":21,"becom":14,"befor":[2,3,6,7,15,20],"benchmark":23,"better":[4,24],"betweens":24,"bin":[2,3,6,7],"binari":[3,4,5,7],"black":[3,4],"block":18,"bool":[14,15,18],"boolean":[18,22],"bottom":[2,4],"bound":[16,22],"boundari":[2,4,7,14,22,24],"box":[7,12,22,24],"branch":6,"break":24,"brew":[4,5],"build":[2,3,5,7,16],"build_dual_porosity_grid":[10,13,14],"build_opm_mpi":6,"built":[4,6,7],"bwpr":[13,18],"c":[3,4,7,12,24],"c1":4,"c2":4,"ca":4,"calcit":23,"calcul":22,"call":[1,2,9],"can":[2,3,4,6,7,9,12,14,16,17,22,24],"capillari":24,"care":24,"cartesian":[14,24],"case":[1,4,12,14,16,24],"cbsfax":4,"cd":[4,6],"cell":[2,4,7,12,14,15,16,18,19,22,24],"cell_group":[13,14],"cell_mask":[13,22],"center":[0,4],"centr":[12,22],"certain":4,"cet_rainbow_bgyrm_35_85_c69":4,"cfd":23,"cfg":[14,15,20],"cformat":4,"chang":[2,3,14],"charact":12,"character":24,"check":[3,6,12,23],"checker":3,"checkout":6,"chosen":22,"ci_pycopm_maco":3,"ci_pycopm_ubuntu":[3,6],"cijk":17,"clabel":4,"class":[14,18,19,22],"cleanup_file_suffix":2,"clone":[4,6],"closest":[4,7],"cluster":[14,24],"cluster_id":14,"cluster_maximum":14,"cluster_minimum":14,"cmake":6,"cmdarg":[12,14,16,17,19],"cnum":4,"co2":[0,23],"coa_map":14,"coa_z":14,"coars":[2,4,7,14,15,16,18,24],"coarse_trani":[13,14],"coarse_tranx":[13,14],"coarsen":[1,2,5,7,9,10,12,13,15,16,17],"coarsen_and_write_properti":[10,13,14],"coarsen_corner_point_grid":[10,13,14],"coarsen_properti":[10,13,14],"coarsened_ax":[13,14],"coarseningmap":[10,13,14,16],"coarser":[2,4,7,9,24],"coarsern":4,"code":[3,6,10],"collabor":3,"collect":[16,22],"column":[14,22],"column_offset":22,"com":[4,6,7],"combin":[4,12],"comma":[7,17],"command":[2,4,6,12,14,16,17,19,20],"comment":4,"commit":3,"common":[6,24],"communic":24,"compact":15,"compar":4,"comparison":24,"compat":12,"compdat":[7,12,13,18],"complet":[2,14,18,22],"completion_removal_level":12,"completion_wel":[13,18],"complex":24,"complump":[13,18],"compseg":[13,18],"compsegs_wel":[13,18],"comput":[2,7,24],"con":14,"concaten":14,"concept":5,"condit":24,"confact":7,"confer":2,"config":6,"configur":[5,7,12,14,15,16,17,18,19,20,21,22],"configviadeck":[14,15,16,17,18,19,21,22],"configviatoml":[14,15,17,20],"conform":7,"connect":[4,7,12,14,24],"conquer":4,"consecut":15,"conserv":4,"consid":[2,7],"constant":15,"contain":[1,3,4,14,15,17,18,19,20,21,22],"content":[1,3,4,5,8,14,18],"continu":[12,14],"continuous_aggregation_method":12,"continuum":14,"contribut":[0,5,6],"control":[14,15],"convert":15,"coord":[14,15,19],"coord_indic":15,"coordin":[7,12,16,21,22],"copi":[3,4,6,9,14,19,20],"core":[1,8,10],"corner":[7,14,15,19,21,22,24],"corner_i":22,"corner_j":22,"corner_porv":22,"correct":[2,7,9,12,16,22,24],"correct_fluid_in_plac":12,"correl":24,"correspond":[2,4,7,18,22,24],"count":19,"cov":3,"cover":12,"cporv":2,"cr":[14,15],"creat":[3,4,6,7,9,14,16,17,19,22,24],"create_coarsening_map":[10,13,14],"create_coord_axis_map":[10,13,19],"create_deck":[10,13,16],"create_deck_config":[10,13,17],"create_refinement_map":[10,13,19],"create_vicinity_map":[10,13,22],"create_zcorn_axis_map":[10,13,19],"creation":7,"criterion":12,"criterium":7,"csp":23,"cssr":[0,4,6,7],"current":[2,4,6,7,9],"current_directori":6,"d":[4,7,12,24],"data":[2,3,4,7,12,14,15,16,18,19,22,24],"dataset":4,"date":2,"day":4,"dck":[14,15,16,18,19,21,22],"dcmake_build_typ":6,"deck":[1,2,3,5,7,12,14,15,16,17,18,19,21,22,24],"deck_dri":[7,12],"deck_encod":12,"deck_lin":18,"dedic":6,"default":[2,4,7,9,14,24],"default_valu":14,"defin":[2,4,9,14,24],"definit":[2,4,24],"degre":[4,7,12,21],"delax":4,"delet":2,"demonstr":4,"denot":22,"depend":[3,6,12,16,22,24],"depth":[12,14,24],"deriv":17,"describ":[3,4,7,9],"descript":[2,7],"destin":[12,15],"destination_surfac":19,"detail":12,"determin":16,"dev":[3,6],"develop":[4,6,7,9,24],"diamond":[7,12,22,24],"diamondxi":[4,7,12,22,24],"dict":[12,14],"differ":[1,2,4,7,24],"differenti":[4,7],"digit":[7,12,15],"dimen":[13,18],"dimens":[14,15,16,17,18,19,21,22],"dimension":15,"dir":[2,7],"direct":[2,4,7,9,12,14,18,24],"directori":[3,12,17],"discontinu":7,"discret":[12,14,24],"discrete_aggregation_method":12,"discuss":2,"disperc":7,"dist":2,"distanc":[14,22],"distpara":2,"distribut":[2,7,22,24],"divers":[7,24],"divid":[4,14,19],"dmar":2,"doc":3,"docs_configs_view":2,"docs_theory_coarsen":24,"docs_theory_refin":24,"docs_theory_submodel":24,"docs_theory_transform":24,"docs_via_config_drogon":4,"docs_via_deck_drogon":4,"docs_via_deck_dual_coarsen":4,"docs_via_deck_hello_world":4,"docs_via_deck_norn":4,"docs_via_deck_smeaheia":4,"docs_via_deck_spe10":4,"document":[2,3,4,6,7],"done":[6,7],"download":[4,6],"dpi":4,"drawback":24,"dri":[4,7,12,16],"drogon":[1,2,5,7,9,12,14],"drogon_2times_coars":4,"drogon_coars":4,"drogon_hist":4,"drogon_hist_prep_pycopm_dryrun":4,"drogon_hist_pycopm":4,"drogon_hist_pycopm_pycopm":4,"drogon_pycopm_comparison":4,"dual":[5,12,14,15],"dual_default":[13,14],"dual_porosity_criterion":12,"dual_trani":[13,14],"dual_tranx":[13,14],"dual_valu":14,"due":[4,24],"dure":[12,14,22,24],"duse_mpi":6,"dwith_ndebug":6,"dynam":23,"e":[2,3,4,6,7,9,12,24],"earli":9,"eas":24,"east":22,"edg":6,"editnnc":[13,18],"effect":24,"eg":2,"egrid":[3,16],"either":[6,7],"elaps":20,"elapsed_second":20,"els":6,"em":23,"email":3,"emltg":2,"emlto":2,"emphas":24,"empti":[4,7,14,22],"enabl":[4,7,14],"encod":[7,12,18],"end":[4,24],"endbox":18,"endnum":7,"ensembl":[2,4,7],"ensemble_experi":2,"ensemble_s":2,"ensemble_smooth":2,"enterpris":6,"entri":[2,7,12,24],"environ":[3,6],"eo":2,"eog":2,"eqlnum":7,"equal":[4,7,15,19,24],"equil":[2,4,12,13,18],"error":[2,4,9],"ert":[1,2,4,6,7,9,12,15,20],"ert_argu":2,"es_mda":2,"et":2,"etc":7,"everi":[14,15],"ew":2,"exampl":[2,3,5,9,14,24],"excel":24,"except":2,"exclud":22,"exectut":7,"execut":[1,2,3,4,6,7,9,12,20,24],"execution_mod":[2,12],"expans":0,"expect":15,"explicit":[4,7,12,17,18],"export":[3,6],"exprecc":[0,5],"extend":[3,14,15],"extern":12,"extract":[4,7,16,18,22,24],"extract_vicinity_grid":[10,13,22],"f":[3,4,7,12],"face":[7,24],"factor":12,"factori":[14,18,22],"fals":[15,18],"familiar":[2,3],"faster":24,"fault":[4,7,13,18,24],"favourit":[7,9],"featur":[0,4,24],"fewer":24,"fgip":7,"fi":6,"field":[4,18,24],"figur":[2,4,9,24],"file":[1,3,5,6,7,12,14,15,16,17,18,22,24],"file_path":18,"file_suffix":15,"filenam":12,"files_writ":[10,13],"filter":18,"final":[1,2,4,15],"find":[9,14,15,18],"find_multiplier_keyword":[10,13,18],"fine":[2,14],"finner":24,"fipnum":[7,24],"first":[2,4,7,14,16],"five":4,"fix":3,"flag":[2,3,4,7,18],"flatten":[14,15,19,22],"flexibl":[7,24],"float":[7,12,14,17,20,22],"flow":[1,2,3,5,7,12,15,16,20,23,24],"flow_cmdarg":12,"flow_command":[2,12],"flow_maco":3,"flow_toml":12,"fluid":[16,24],"fluidflow":23,"fluxnum":7,"focus":[4,7,9,24],"foip":[4,7],"folder":[1,3,4,5,6,7],"follow":[2,4,6,7,9,12,21,24],"fopr":4,"fork":[0,3],"format":[2,3,4,15,24],"format_opm_compact_valu":[10,13,15],"former":24,"formula":5,"found":18,"four":[4,22,24],"frac":24,"fraction":19,"fractur":[12,14,15],"framework":[1,4,23],"freeglut3":6,"frequent":24,"friend":[4,7],"front":24,"full":[2,4,9],"function":[1,2,4,14,15,16,20,22,24],"fund":0,"g":[2,3,4,6,7,9,12,24],"gas":[4,7,12,16],"generat":[1,2,3,4,7,9,12,14,15,16,17,18,19,20,21,22,23,24],"generate_deck":[10,13],"generate_postprocessing_plot":[10,13,20],"geolog":[2,4,7,9,24],"geometr":[22,24],"geometri":[19,21,22,24],"geophys":24,"get":[3,6],"gif":[4,23],"git":[4,6],"github":[2,3,4,6,7],"give":[4,9,24],"given":[2,4,7,24],"global":[14,15,22,24],"global_index":14,"go":4,"good":4,"graphic":5,"grdecl":15,"greater":14,"grid":[1,4,5,6,7,9,12,13,14,15,16,17,18,19,21,22],"grid_transform":[12,21],"ground":5,"group":[12,14,24],"group_cod":14,"gui":2,"h":2,"handi":24,"handl":[4,18,24],"handler":18,"harmon":[7,24],"has_edit":[13,18],"has_main_multflt":18,"hat":6,"hdf5":6,"head":18,"header":15,"hello":[3,5],"hello_world":[3,4],"hello_world_pycopm":[3,4],"hello_world_pycopm_pycopm":4,"help":[3,6],"hexahedron":24,"higher":4,"highest":14,"highlight":4,"histori":[2,4,7,9,23,24],"history_matching_end_d":2,"hm":[2,4],"home":7,"homebrew":6,"honor":[2,24],"horda":0,"horizont":[14,19,24],"host":7,"howev":4,"html":3,"https":[4,6,7],"hv":18,"identifi":[4,12,14,15,18,22],"ignor":[3,14],"ijk":[12,14],"ilustr":4,"imag":23,"imbnum":7,"impact":24,"implement":[4,7,12,24],"import":[3,24],"inact":[4,7,22,24],"inc":[4,7,15],"includ":[4,6,7,9,12,14,15,16,18,19,21,22],"include_lin":14,"include_prefix":12,"inclus":[17,22],"incompat":12,"increas":[4,24],"index":[2,5,14,16,18,22],"indic":[4,7,12,14,15,16,17,18,19,22,24],"induc":23,"industri":24,"inform":[2,24],"init":[2,4,14,16],"initi":[2,4,7,12,18,24],"initialization_method":2,"inj":4,"injector":4,"inlin":15,"input":[2,4,5,7,12,16,17,18,19,24],"input_deck_path":12,"input_fil":[12,17],"input_valu":[10,13],"insert":14,"insid":[4,6,22,24],"insight":24,"inspect":2,"instal":[3,4,5,7],"instead":[2,4,12,24],"instruct":6,"int":[14,15,17,18,19,20,22],"integ":4,"integr":2,"interest":[6,23,24],"interim":6,"interleav":14,"intermedi":14,"internal":7,"interpol":19,"interval":[2,4,7,12,14,19,24],"introduct":[5,9,24],"invalid":12,"involv":[4,24],"iso":[7,12],"isol":4,"issu":[0,4,5],"item":7,"iter":[2,4],"iterative_ensemble_smooth":2,"j":[2,4,7,12,14,15,22,24],"j5":6,"jk":7,"job":[1,15,20],"jump":[4,12,14],"jump_threshold":12,"just":7,"k":[2,4,7,12,14,22,24],"keep":[2,4,7],"key":[12,24],"keyword":[4,15,16,18],"kh":7,"kilomet":24,"km":4,"kwr":18,"l":[4,6,7,12],"l127":4,"l242":4,"label":4,"larg":24,"last":[2,7,14,16],"later":2,"latter":4,"launcher":12,"layer":[7,14,22,24],"layer_external_porv":[13,22],"layer_index":22,"layer_max_i":[13,22],"layer_max_j":[13,22],"layer_min_i":[13,22],"layer_min_j":[13,22],"layer_selected_porv":[13,22],"leakag":23,"least":[4,7],"left":[4,9,12,24],"legend":4,"less":4,"let":[2,15],"let_paramet":[2,20],"level":[7,12,18],"lg":2,"lib":6,"lie":24,"like":[4,24],"line":[2,3,4,6,12,14,15,16,17,18,19,21,22,24],"linear":19,"link":[4,6],"lint":6,"linux":[4,5],"list":[12,14,15,16,17,18,19,21,22],"lmltg":2,"lmlto":2,"lo":2,"load":[16,17],"load_toml_config":[10,13,17],"loc":4,"local":[3,17,24],"locat":[1,4,7,9,24],"log":2,"look":3,"loop":4,"lost":2,"lot":[4,24],"lower":[4,24],"lw":2,"m":[3,4,6,7,12],"machin":[2,6,7,12,15],"maco":[3,4,5],"macport":6,"made":[4,20,24],"main":[1,2,3,4,10,11,12,18],"maintain":3,"major":12,"make":[3,4,6,7,24],"mako":[1,15],"mamba":6,"manag":[6,24],"mantain":3,"manual":7,"map":[7,12,14,15,16,18,19,22,24],"map_nnc_transmiss":[10,13,14],"map_vicinity_properti":[10,13,22],"mapax":[4,13,18],"mark":14,"mask":[14,22],"master":6,"match":[2,4,7,9,12,16,23,24],"mathbb":24,"matrix":[12,14,15],"matrix_mask":[13,14],"max":[2,4,7,12,14,24],"max_i":[13,22],"max_j":[13,22],"max_k":[13,22],"max_parallel_r":2,"max_realization_runtime_second":2,"maximum":[2,4,14,22],"maxpermz":4,"may":15,"mean":[2,4,7,12,14,24],"measur":24,"member":4,"memori":2,"mention":[4,24],"merg":[3,14],"messag":12,"metadata":17,"meter":[7,24],"method":[12,22,24],"micp":5,"microbi":23,"microsystem":23,"middl":4,"might":[3,4,6,9,23,24],"million":4,"min":[2,4,7,12,14,24],"min_i":[13,22],"min_j":[13,22],"min_k":[13,22],"min_successful_r":2,"mini":7,"miniforg":6,"minimum":[2,14,22],"minj":7,"miscnum":7,"miss":3,"missmatch":24,"mkdir":6,"mode":[2,4,7,12,14,20,24],"model":[2,4,7,9,12,14,18,23,24],"model3":24,"model6":4,"model_nam":2,"modif":[2,17],"modifi":[2,4,6,7,9,12,16,18,19,21],"modified_deck":[14,15,16,18,19,21,22],"modul":[1,5,8,23],"mpi":[4,6],"mpirun":2,"mult":[7,18],"multflt":[13,18],"multi":[4,18],"multipli":[4,7,13,14,18,24],"multnum":7,"multregt":[4,13,18],"multx":[4,18],"multz":[4,18],"must":[2,4,24],"mypi":3,"n":[3,4,7,12,14,15,19],"name":[2,4,7,12,14,15,22],"name_of_input_fil":7,"name_of_script":4,"namespac":[12,14,16,17,19],"nan":14,"natur":24,"ndarray":[14,15,17,18,19,22],"near":23,"nearest":[14,22],"need":[2,3,4,6,7,9],"neighbor":24,"neighbor_indic":14,"neighbour":[4,7,14,24],"neighbourhood":[7,12,22,24],"neither":12,"nest":18,"net":[4,7,12,14],"new":[0,3,4,7,24],"newton":2,"next":2,"nice":[3,4,6],"nnc":[14,24],"nnc_text":[13,14],"non":[4,7,12,14,24],"none":[12,14,15,16,18,19,20,21,22],"norn":[1,2,5,7,9,12,14,24],"norne_atw2013":4,"north":22,"northeast":22,"northwest":22,"notat":[15,24],"note":[3,4],"noth":7,"now":4,"np":2,"nrwo":18,"ntg":[2,4],"num_dig":15,"number":[2,4,7,12,14,15,19,20,22,24],"number_group":14,"number_t":[15,20],"number_valu":15,"numer":12,"numpi":22,"nx":14,"nxyz":14,"nz":14,"o":[3,4,7,9,12],"object":[14,17,18,19,22],"observ":[4,15],"observation_minimum_error":2,"observation_relative_error":2,"offset":[13,14,22],"often":24,"oil":[4,7,12,16],"ok":4,"old":4,"omega":24,"omit":12,"onc":24,"one":[2,4,6,7,9,12,14,15,17,19,22,24],"onli":[2,4,7,17,21,24],"onlin":6,"onto":[14,19,22],"open":[4,16,23,24],"openbla":6,"oper":[4,12,13,18,24],"opernum":[7,15],"opm":[1,2,3,5,7,12,15,16,18,20,23,24],"opt":6,"optim":[7,9],"option":[2,4,7,12,15,16,24],"optvic":22,"order":[2,4,7,14,15,17,18,19,22,24],"org":6,"origin":[1,4,12,14,15,16,18,19,21,22],"original_lay":22,"original_ni":19,"original_nx":19,"otherwis":[9,14,15],"outisd":24,"output":[2,3,4,5,7,14,15,16,19,20,21,22],"output_deck_nam":12,"output_directori":[12,17],"output_ni":19,"output_nx":19,"output_path":15,"output_porv":[14,16,22],"outsid":[4,7,22,24],"overlap":24,"overview":[2,5],"p":[4,7,12,24],"packag":[1,3,4,5,8],"page":[3,5],"parallel":2,"paramet":[2,4,7,12,14,15,16,17,18,19,20,21,22,24],"paraview":4,"pars":[12,16,17,18],"parse_axis_modif":[10,13,17],"parser":[17,18],"parser_deck":[10,13],"part":[4,24],"particular":12,"pass":[3,4,15],"path":[2,3,4,7,9,12,15,17,18],"peqvr":7,"per":[4,7,14,16,19,22],"perform":[4,7,21,24],"perm":4,"perm_max":2,"perm_min":2,"permeabl":[2,4,24],"permi":[2,4,7,14],"permx":[2,4,7,14],"permz":[2,4,7,14],"pet":[7,9],"phi_":24,"physic":12,"pilar":[2,4,7],"pillar":[2,14,24],"pinch":[13,18],"pip":[3,4,6],"pkg":6,"pkg_config_path":6,"pkgconfig":6,"place":[4,12,16,19,20,24],"plane":[7,24],"platform":[0,6],"pleas":[0,3],"plopm":[2,4,5,24],"plot":[9,20],"plus":7,"pm":7,"png":4,"pngs":[4,23],"pofff":5,"point":[7,12,14,15,17,19,21,22,24],"polygon":[7,12,22,24],"popul":[14,16,17],"pore":[4,7,12,14,16,19,22,24],"pore_volum":[13,22],"pore_volume_correct":[2,12,22],"poro":[2,4,7],"poros":[2,4,14,15,24],"porv":[2,4,7,19],"posit":[7,12,19],"possibl":[3,24],"postprocess":[9,20],"practic":4,"prealloc":19,"preced":14,"precipit":23,"precis":[7,12,15,17],"prefer":3,"prefix":[12,15],"prep":[7,12],"prep_deck":[7,12],"preprocess":[16,20],"preprocessing_path":15,"prerequisit":6,"preserv":[12,15,18,19,24],"pressur":[4,24],"prevent":12,"previous":[3,4,6],"previous_complet":[13,18],"print":4,"problem":5,"process":12,"process_deck":[10,13,18],"process_edit":[13,18],"product":[4,24],"project":[0,4,6,15,17,20,23,24],"prop":[4,13,18],"properti":[2,4,7,12,14,15,16,18,19,21,22,24],"property_nam":15,"property_valu":[14,15],"provid":[2,7,16,18,24],"proxi":7,"proyect":4,"prs":3,"prt":2,"pull":[0,3],"push":3,"pushd":3,"pv":[2,4,7,24],"pvmean":[4,7,12,24],"pvtnum":7,"pvweightedperm":4,"pwd":6,"py314":3,"pycopm":[2,3,4,6,7,9,24],"pycopm_":7,"pycopm_porv":7,"pylint":3,"pymm":5,"pyocpm":1,"pyopmnearwel":5,"pyopmspe11":5,"pytest":3,"python":[3,5,23],"python3":[3,6],"q":[4,7,12],"quantiti":24,"question":24,"quick":23,"r":[3,6,7,12],"rais":[0,3,12],"random":2,"random_se":2,"rang":[7,17,18,24],"rate":[4,24],"ratio":24,"read":[4,7,12,14],"realiz":[2,20],"receiv":[15,22],"recent":6,"recis":7,"recommend":[4,9],"record":[14,18],"red":6,"redistribut":[4,14],"redistribute_removed_pore_volum":[10,13,14],"reduc":[4,12,14],"refer":[4,14,15,17,24],"reference_simul":1,"reference_to_coars":[13,14],"refin":[1,2,4,5,7,9,10,12,13,16,18],"refine_grid":[10,13,19],"refine_properti":[10,13,19],"refine_zcorn_surfac":[10,13,19],"refined_cell_count":[13,19],"refinement_valu":19,"refinementmap":[10,13,16,19],"reftocoa":15,"regard":[2,24],"region":[2,4,7,12,13,18,22,23,24],"regular":24,"relat":[4,5,15,19,24],"releas":6,"relev":4,"remain":[2,14],"remap":22,"remedi":23,"remov":[2,4,7,12,14,15,24],"removal_indic":14,"removal_mask":14,"renam":4,"render":[15,20],"repeat":15,"replac":[3,4,18],"repo":[3,6],"report":5,"repositori":[3,4,6,7],"repres":16,"represent":17,"reproduc":2,"request":[0,3,12],"requested_ijk":12,"requir":[3,4,6,18],"reservoir":[7,14,19,21,22,23,24],"resinsight":[2,4,9,24],"resolv":18,"resourc":0,"resource_directori":17,"respect":[2,7,24],"rest":[4,7],"restart":[14,16],"restrict":[7,12],"result":[2,4,7,9,12,22,24],"retain":[12,14,18],"retained_wel":[13,18],"return":[7,12,14,15,17,18,19,22],"review":3,"rewrit":[18,21],"rewritten":18,"right":[4,9,24],"rightarrow":24,"rise":3,"roadmap":5,"rock":[2,24],"rock_property_set":2,"rocknum":7,"rotat":[4,7,9,21,24],"rotatexi":[4,7,12,21,24],"rotatexz":[7,12,21],"rotateyz":[7,12,21],"round":15,"round_like_":[10,13,15],"row":[14,22],"row_offset":22,"ruff":3,"rule":5,"run":[1,2,3,4,6,7,9,12,16,20,24],"run_simul":[10,13,20],"runs_execut":[10,13],"runtim":2,"rx":[4,7,12],"ry":[4,12],"rz":12,"s":[2,3,4,7,12,19,24],"sandv":2,"sat":2,"satnum":[2,7,14,24],"satnum_generation_method":2,"satnum_opm":14,"satur":[2,4,14,15,20,24],"saturation_function_method":2,"save":[2,4,7],"scale":[2,7,9,12,21,24],"scan":18,"sch":4,"schedul":[4,15,18],"schedule_keyword":[13,18],"score":4,"screenshot":[4,9,24],"script":[1,3,4,6,20,24],"scriptsiz":24,"search":5,"second":[2,4,14,24],"section":[4,7,18],"see":[2,3,4,6,7,24],"seed":2,"seek":5,"seem":4,"segment":18,"segmented_wel":[13,18],"seismic":24,"select":[2,9,12,14,16,18,22,24],"selector":[13,22],"send":3,"separ":[7,12,13,14,17,18],"set":[2,4,6,7,9,12,14,18,20,22,24],"setuptool":6,"seven":3,"sever":24,"sgas":4,"sh":[2,4,6,24],"shape":[2,13,15,22,24],"shift":24,"short":16,"show":[4,9,24],"shown":2,"side":24,"signific":[7,12,15],"significant_digit":[12,15,17],"similar":24,"simpl":24,"simpli":[6,24],"simul":[2,3,4,6,7,9,12,17,20,23,24],"simulation_model":4,"sinc":[4,24],"singl":[2,3,14,20],"site":23,"six":24,"size":[14,24],"skip":6,"skip_block":[13,18],"sm":4,"smaller":24,"smallest":14,"smeaheia":[5,7],"softwar":5,"solut":[4,7,12,18,24],"soon":3,"sort":20,"sourc":[3,4,5,13,14,15,18,19,21,22,23],"source_indic":[13,19,22],"source_surfac":19,"south":22,"southeast":22,"southwest":22,"spatial":24,"spe10":5,"spe10_model2":4,"spe10_model2_pycopm":4,"spe11":23,"special":[4,24],"specif":[2,4,6,12,14,17,21,22],"specifi":7,"speed":24,"squash":3,"src":3,"stage":12,"standard":[2,4,24],"start":20,"state":18,"statement":[14,18],"static":[3,4,7,12],"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20":4,"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20_prep_pycopm_dryrun":4,"statoil_feasibility_sim_model_with_depletion_kross_inj_sector_20_pycopm":4,"step":[3,6,12],"still":4,"stop":2,"storag":[0,2,23],"store":[14,18,19,22],"str":[12,14,15,16,17,18,19,21,22],"straight":24,"strategi":22,"string":22,"studi":[2,4,7,9,12,20,23,24],"sub":[4,7],"subdivis":19,"subfig":4,"subgrid":22,"submodel":[1,2,4,5,7,9,12,16,18,22],"submodel_index":22,"submodul":[1,8,10],"subpackag":[1,5,8],"substract":4,"subsurfac":[0,4,24],"subsystem":6,"succed":6,"succeed":[2,3],"success":[2,16],"sudmodel":24,"sudo":6,"suffix":[2,15],"sum":[7,14,24],"sum_":24,"summari":[4,9,14],"suppli":12,"support":[2,5,6,7,12,14,18,21],"suptitl":4,"surfac":[14,19,24],"sustain":0,"swatinit":[4,7],"syntax":[12,15],"sys":12,"system":[3,7,21],"systemexit":12,"t":[4,7,12,24],"t_":24,"tabl":[14,15,20,24],"tag":6,"tailor":4,"taken":24,"tap":[4,6],"target":3,"tcpu":4,"techniqu":[7,24],"templat":[7,15,17],"template_path":15,"template_script":1,"temporari":18,"term":3,"termin":[2,4,6,7,24],"test":[1,2,3,4,6,7,24],"test_output":3,"test_run":2,"text":[4,7,14,15],"textbook":24,"tg":2,"thconr":7,"theori":[4,5],"thick":24,"thousand":4,"three":[4,7,17,18,24],"threshold":12,"time":[2,4,20,24],"tmltg":2,"tmlto":2,"tog":2,"toml":[2,4,7,12,14,15,17,20],"tool":[0,3,4,6,7,9,23,24],"top":[2,4,12,24],"total":[4,14,22],"track":18,"trade":24,"trailing_column":22,"trailing_row":22,"trani":14,"transfer":14,"transform":[1,2,4,5,7,9,10,12,13,16],"transform_grid":[10,13,21],"transform_properti":[10,13,21],"translat":[7,9,12,21,24],"transmis":[7,24],"transmiss":[7,12,14,15,24],"transmissibili":7,"transmissibility_coarsening_method":12,"transsmiss":24,"tranx":14,"tri":[3,4,6,7],"trial":4,"trim":24,"true":[4,15],"trust":[4,6],"tstep":4,"tune":7,"tunit":4,"tupl":[14,15,17,18,19,22],"turn":6,"tutori":[3,6],"tw":2,"two":[4,7,12,16,24],"txt":[3,6],"type":[2,4,6,12,14,15,17,18,19,22,23],"typic":24,"ual":7,"ubuntu":[3,6],"unassign":22,"uncertainti":24,"unchang":21,"uniform":[2,7,12,17],"unknown":12,"unlimit":2,"unprocess":12,"unrefin":24,"unwant":12,"updat":[14,16,18,19,21,22],"upgrad":6,"upper":24,"upscal":[7,24],"use":[0,1,2,3,4,6,7,9,12,14,16,17,18,22,23,24],"user":[2,3,4,6,7],"utf":15,"utf8":[7,12],"util":[1,8,10,12],"v":[4,7,12,15,24],"v2025":6,"v2026":6,"valid":[12,16,17],"valu":[2,4,7,12,14,15,16,17,18,19,21,22,24],"variabl":[3,7,15],"vector":4,"venv":6,"version":[3,6,10],"vertic":[14,24],"vertical_transfer_en":[13,14],"via":[2,5,6,7],"vicin":[4,7,10,12,13,16,18],"vicinity_specif":12,"vicinitymap":[10,13,16,18,22],"view":[4,18,24],"vile":4,"virtual":6,"visaluaz":4,"visit":[2,3],"visual":[4,9,24],"volum":[4,7,12,14,16,19,22,24],"vpycopm":6,"vtk":4,"vtks":23,"w":[4,7,12],"water":[4,7],"webviz":4,"weight":[2,4,7,12,24],"welcom":[0,3],"well":[2,3,4,7,12,14,18,22,23,24],"well_cel":[13,22],"well_cell_indic":18,"well_indic":[13,22],"wellcind":[14,18],"welldim":[13,18],"welln":7,"wellspec":4,"welseg":[13,18],"welspec":[13,18],"west":22,"wgpr":2,"wheel":6,"whether":[14,18],"whole":7,"whose":[14,16,19,22],"wide":24,"will":[2,3,4,7],"window":[4,5],"within":19,"without":[2,4,9,14],"wopr":2,"work":[3,6,7,12],"workflow":[12,14,16,17,20,24],"world":[3,5],"write":[2,4,6,7,12,14,15,17,19,22],"write_coarsened_model_fil":[10,13,15],"write_compact_property_fil":[10,13,15],"write_dual_properti":[10,13,15],"write_explicit_solut":12,"write_grid":[10,13,15],"write_includ":[10,13,15],"write_porv":[10,13,15],"write_properti":[10,13,15],"write_property_inc":[10,13,15],"write_reference_to_coarse_map":[10,13,15],"written":[14,15,22,24],"wsl":6,"wwpr":2,"x":[2,4,7,12,13,14,17,18,19,21,22,24],"x_coarsen":[2,12,14],"x_refin":[12,19],"xformat":4,"xi_":24,"xlnum":4,"xplicit":7,"xunit":4,"xy":[7,12,22,24],"xypolygon":[4,7,24],"xyz":[7,24],"xz":14,"y":[2,4,6,7,12,13,14,17,18,19,21,22,24],"y_coarsen":[2,12,14],"y_refin":[12,19],"yformat":4,"ylabel":4,"ylnum":4,"yml":[3,6],"yournam":3,"yunit":4,"z":[2,4,7,12,13,14,17,18,19,21,22,24],"z_coarsen":[2,12,14],"z_refin":[12,19],"zc":[14,15],"zcorn":[14,15,19],"zcorn_indic":15,"zcorn_x_fract":19,"zcorn_x_indic":19,"zcorn_y_fract":19,"zcorn_y_indic":19,"zero":[14,15,22,24]},"titles":["About pycopm","pycopm Python API","Configuration file","Contributing","Examples","Welcome to pycopm\u2019s documentation!","Installation","Introduction","pycopm","Output folder","pycopm package","pycopm.core package","pycopm.core.pycopm module","pycopm.utils package","pycopm.utils.coarsening module","pycopm.utils.files_writer module","pycopm.utils.generate_decks module","pycopm.utils.input_values module","pycopm.utils.parser_deck module","pycopm.utils.refinement module","pycopm.utils.runs_executer module","pycopm.utils.transformation module","pycopm.utils.vicinity module","Related","Theory"],"titleterms":{"About":0,"abstract":4,"ad":23,"api":1,"binari":6,"brew":6,"build":6,"coarsen":[4,14,24],"concept":7,"configur":[2,4,9],"content":[10,11,13],"contribut":3,"core":[11,12],"deck":[4,9],"document":5,"drogon":4,"dual":4,"exampl":4,"exprecc":23,"file":[2,4,9],"files_writ":15,"flow":[4,6,9],"folder":9,"formula":6,"generate_deck":16,"graphic":4,"grid":24,"ground":3,"hello":4,"indic":5,"input":9,"input_valu":17,"instal":6,"introduct":7,"issu":3,"linux":6,"maco":6,"micp":23,"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22],"norn":4,"opm":[4,6,9],"output":9,"overview":7,"packag":[6,10,11,13],"parser_deck":18,"plopm":23,"pofff":23,"problem":3,"pycopm":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22],"pymm":23,"pyopmnearwel":23,"pyopmspe11":23,"python":[1,6],"refin":[19,24],"relat":23,"report":3,"roadmap":7,"rule":3,"runs_execut":20,"s":5,"seek":3,"smeaheia":4,"softwar":3,"sourc":6,"spe10":4,"submodel":24,"submodul":[11,13],"subpackag":10,"support":3,"tabl":5,"theori":24,"transform":[21,24],"util":[13,14,15,16,17,18,19,20,21,22],"via":[4,9],"vicin":22,"welcom":5,"window":6,"world":4}})
\ No newline at end of file
diff --git a/src/pycopm/core/pycopm.py b/src/pycopm/core/pycopm.py
index cb0aa19..45ce19c 100644
--- a/src/pycopm/core/pycopm.py
+++ b/src/pycopm/core/pycopm.py
@@ -22,7 +22,6 @@
import shutil
import subprocess
import time
-from collections.abc import Sequence
from pathlib import Path
from pycopm.utils.coarsening import coarsen_and_write_properties, create_coarsening_map
@@ -32,7 +31,7 @@
from pycopm.utils.runs_executer import generate_postprocessing_plots, run_simulations
-def main(argv: Sequence[str] | None = None) -> None:
+def main(argv: list[str] | None = None) -> None:
"""Run the deck-based or TOML-based pycopm workflow.
OPM ``.DATA`` decks can be coarsened, refined, transformed, or reduced to
@@ -125,8 +124,8 @@ def main(argv: Sequence[str] | None = None) -> None:
start_time = time.monotonic()
cmdargs = _parse_arguments(argv)
_check_cmdargs(cmdargs)
- output_folder = Path(cmdargs["output_directory"]).expanduser().resolve()
- input_file = cmdargs["input_deck_path"]
+ output_folder = Path(cmdargs.output_directory).expanduser().resolve()
+ input_file = cmdargs.input_deck_path
output_folder.mkdir(parents=True, exist_ok=True)
# Process a DATA deck by coarsening, refining, extracting, or transforming it
@@ -143,11 +142,9 @@ def main(argv: Sequence[str] | None = None) -> None:
input_file,
str(output_folder),
resource_directory,
- int(cmdargs["significant_digits"]),
- )
- cfg.flow_command = _check_flow(
- cmdargs["flow_command"], cfg.flow_command, input_file
+ int(cmdargs.significant_digits),
)
+ cfg.flow_command = _check_flow(cmdargs.flow_command, cfg.flow_command, input_file)
print(f"\npycopm is generating the input files for {cfg.model_name}, please wait.")
for folder in ["preprocessing", "parameters", "jobs", "observations"]:
@@ -182,7 +179,7 @@ def main(argv: Sequence[str] | None = None) -> None:
generate_postprocessing_plots(cfg, time.monotonic() - start_time, number_tables)
-def _parse_arguments(argv: Sequence[str] | None = None) -> dict[str, str]:
+def _parse_arguments(argv: list[str] | None = None) -> argparse.Namespace:
"""Parse supported command-line arguments.
Unknown arguments are left unprocessed for compatibility with external
@@ -429,10 +426,10 @@ def _parse_arguments(argv: Sequence[str] | None = None) -> dict[str, str]:
help="Set the number of significant digits used when writing floating-point values, or 0 "
"to use machine precision",
)
- return vars(parser.parse_known_args(argv)[0])
+ return parser.parse_args(argv)
-def _check_cmdargs(cmdargs: dict[str, str]) -> None:
+def _check_cmdargs(cmdargs: argparse.Namespace) -> None:
"""Validate command-line arguments and incompatible operations.
The checks cover input type, Flow availability, coarsening and refinement
@@ -448,7 +445,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
------
SystemExit
If an argument is invalid or an incompatible combination is requested."""
- input_file = cmdargs["input_deck_path"]
+ input_file = cmdargs.input_deck_path
# Select the workflow from the input filename extension
if not input_file.endswith((".DATA", ".toml")):
print(
@@ -456,7 +453,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
"valid extensions are .DATA or .toml\n"
)
raise SystemExit(1)
- if not cmdargs["output_directory"]:
+ if not cmdargs.output_directory:
print("\nInvalid value for '-o', the output folder cannot be empty.\n")
raise SystemExit(1)
# Only -i, -o, -f, and -precision apply to TOML configuration files
@@ -491,7 +488,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
invalid_options = [
option
for option, (name, default) in data_options.items()
- if cmdargs[name] != default
+ if getattr(cmdargs, name) != default
]
if invalid_options:
print(
@@ -503,11 +500,11 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
return
# Verify the complete Flow command, including any launcher and arguments
try:
- flow_arguments = shlex.split(cmdargs["flow_command"])
+ flow_arguments = shlex.split(cmdargs.flow_command)
except ValueError:
flow_arguments = []
if not flow_arguments:
- print(f"\nInvalid OPM flow command '-f {cmdargs['flow_command']}'.\n")
+ print(f"\nInvalid OPM flow command '-f {cmdargs.flow_command}'.\n")
raise SystemExit(1)
try:
flow_result = subprocess.run(
@@ -520,20 +517,20 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
flow_result = None
if flow_result is None or flow_result.returncode != 0:
print(
- f"\nThe OPM flow executable '-f {cmdargs['flow_command']}' "
+ f"\nThe OPM flow executable '-f {cmdargs.flow_command}' "
"is not available or not working.\n"
)
raise SystemExit(1)
- coarsening = cmdargs["coarsening"]
- x_coarsening = cmdargs["x_coarsening"]
- y_coarsening = cmdargs["y_coarsening"]
- z_coarsening = cmdargs["z_coarsening"]
- refinement = cmdargs["refinement"]
- x_refinement = cmdargs["x_refinement"]
- y_refinement = cmdargs["y_refinement"]
- z_refinement = cmdargs["z_refinement"]
- vicinity = cmdargs["vicinity_specification"]
- transformation = cmdargs["grid_transformation"]
+ coarsening = cmdargs.coarsening
+ x_coarsening = cmdargs.x_coarsening
+ y_coarsening = cmdargs.y_coarsening
+ z_coarsening = cmdargs.z_coarsening
+ refinement = cmdargs.refinement
+ x_refinement = cmdargs.x_refinement
+ y_refinement = cmdargs.y_refinement
+ z_refinement = cmdargs.z_refinement
+ vicinity = cmdargs.vicinity_specification
+ transformation = cmdargs.grid_transformation
directional_coarsening = any([x_coarsening, y_coarsening, z_coarsening])
directional_refinement = any([x_refinement, y_refinement, z_refinement])
has_coarsening = bool(coarsening or directional_coarsening)
@@ -636,7 +633,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
]
z_groups = z_coarsening.split(",") if ":" in z_coarsening else []
for option, name, valid_methods in aggregation_options:
- value = cmdargs[name].strip()
+ value = getattr(cmdargs, name).strip()
methods = value.split(",") if value else []
if any(method not in valid_methods for method in methods):
print(
@@ -658,30 +655,30 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
raise SystemExit(1)
# Options controlling property aggregation require coarsening
if not has_coarsening:
- if cmdargs["active_cell_methods"] != "mode":
+ if cmdargs.active_cell_methods != "mode":
print("\nInvalid combination, '-a' can only be used with coarsening.\n")
raise SystemExit(1)
- if cmdargs["discrete_aggregation_method"] != "mode":
+ if cmdargs.discrete_aggregation_method != "mode":
print("\nInvalid combination, '-n' can only be used with coarsening.\n")
raise SystemExit(1)
- if cmdargs["continuous_aggregation_method"]:
+ if cmdargs.continuous_aggregation_method:
print("\nInvalid combination, '-s' can only be used with coarsening.\n")
raise SystemExit(1)
- if cmdargs["transmissibility_coarsening_method"] != "0":
+ if cmdargs.transmissibility_coarsening_method != "0":
print("\nInvalid combination, '-t' can only be used with coarsening.\n")
raise SystemExit(1)
- if cmdargs["jump_thresholds"]:
+ if cmdargs.jump_thresholds:
print("\nInvalid combination, '-j' can only be used with coarsening.\n")
raise SystemExit(1)
- if cmdargs["dual_porosity_criterion"]:
+ if cmdargs.dual_porosity_criterion:
print("\nInvalid combination, '-dual' can only be used with coarsening.\n")
raise SystemExit(1)
# Fluid-in-place correction is not supported for extracted submodels
- if vicinity and cmdargs["correct_fluid_in_place"] == "1":
+ if vicinity and cmdargs.correct_fluid_in_place == "1":
print("\nInvalid combination, '-q' cannot be used with '-v'.\n")
raise SystemExit(1)
# Validate pore-volume correction combinations
- pore_volume_correction = cmdargs["pore_volume_correction"]
+ pore_volume_correction = cmdargs.pore_volume_correction
if pore_volume_correction == "1" and not (has_coarsening or vicinity):
print("\nInvalid combination, '-p 1' requires coarsening or '-v'.\n")
raise SystemExit(1)
@@ -692,7 +689,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
)
raise SystemExit(1)
# Validate the jump thresholds
- jump_thresholds = cmdargs["jump_thresholds"]
+ jump_thresholds = cmdargs.jump_thresholds
if jump_thresholds:
try:
jump_values = [float(value.strip()) for value in jump_thresholds.split(",")]
@@ -705,7 +702,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
)
raise SystemExit(1)
# Validate requested input-model indices
- requested_ijk = cmdargs["requested_ijk"]
+ requested_ijk = cmdargs.requested_ijk
if requested_ijk and not re.fullmatch(
r"[1-9]\d*\s*,\s*[1-9]\d*\s*,\s*[1-9]\d*",
requested_ijk,
@@ -789,7 +786,7 @@ def _check_cmdargs(cmdargs: dict[str, str]) -> None:
)
raise SystemExit(1)
# Validate the dual-porosity criterion
- dual_porosity_criterion = cmdargs["dual_porosity_criterion"]
+ dual_porosity_criterion = cmdargs.dual_porosity_criterion
dual_criterion_pattern = re.compile(
rf"[A-Za-z][A-Za-z0-9_]*\s*(?:<=|>=|==|!=|<|>)\s*{number}"
r"(?:\s*,\s*vertical\s+TF\s*=\s*0)?",
diff --git a/src/pycopm/utils/coarsening.py b/src/pycopm/utils/coarsening.py
index 67832bd..f3ea625 100644
--- a/src/pycopm/utils/coarsening.py
+++ b/src/pycopm/utils/coarsening.py
@@ -7,6 +7,7 @@
The module supports deck-based coarsening and the TOML workflows used to
generate reduced Norne and Drogon models."""
+import argparse
import csv
import re
import sys
@@ -98,7 +99,9 @@ class CoarseningMaps:
dual_defaults: dict[str, float] = field(default_factory=dict)
-def create_coarsening_maps(dck: ConfigViaDeck, cmdargs) -> CoarseningMaps:
+def create_coarsening_maps(
+ dck: ConfigViaDeck, cmdargs: argparse.Namespace
+) -> CoarseningMaps:
"""Create axis mappings and assign original cells to coarse cells.
Parameters
@@ -114,11 +117,11 @@ def create_coarsening_maps(dck: ConfigViaDeck, cmdargs) -> CoarseningMaps:
CoarseningMaps
Axis mappings, cell groups, and dual-porosity masks."""
cijk, refs = parse_axis_modifications(
- cmdargs["coarsening"],
+ cmdargs.coarsening,
[
- cmdargs["x_coarsening"],
- cmdargs["y_coarsening"],
- cmdargs["z_coarsening"],
+ cmdargs.x_coarsening,
+ cmdargs.y_coarsening,
+ cmdargs.z_coarsening,
],
)
matrix_mask = np.ones(dck.original_porv.size)
diff --git a/src/pycopm/utils/generate_decks.py b/src/pycopm/utils/generate_decks.py
index f5ac3bc..1fc9b35 100644
--- a/src/pycopm/utils/generate_decks.py
+++ b/src/pycopm/utils/generate_decks.py
@@ -4,6 +4,7 @@
"""Coordinate coarsening, refinement, submodel extraction, and grid transformations."""
+import argparse
import csv
import subprocess
import sys
@@ -51,7 +52,7 @@
)
-def create_deck(dck: ConfigViaDeck, cmdargs) -> None:
+def create_deck(dck: ConfigViaDeck, cmdargs: argparse.Namespace) -> None:
"""Generate a modified OPM deck and its include files.
The selected workflow can preprocess the input deck, coarsen or refine the
diff --git a/src/pycopm/utils/input_values.py b/src/pycopm/utils/input_values.py
index 09611b4..a696557 100644
--- a/src/pycopm/utils/input_values.py
+++ b/src/pycopm/utils/input_values.py
@@ -4,6 +4,7 @@
"""Create configuration objects from command-line arguments and TOML files."""
+import argparse
import tomllib
from pathlib import Path
@@ -14,7 +15,7 @@
from pycopm.config.config import ConfigViaDeck, ConfigViaTOML
-def create_deck_config(cmdargs: dict[str, str]) -> ConfigViaDeck:
+def create_deck_config(cmdargs: argparse.Namespace) -> ConfigViaDeck:
"""Create a deck configuration from parsed command arguments.
Parameters
@@ -26,46 +27,42 @@ def create_deck_config(cmdargs: dict[str, str]) -> ConfigViaDeck:
-------
ConfigViaDeck
Configuration for a deck-based workflow."""
- input_path = Path(cmdargs["input_deck_path"])
-
return ConfigViaDeck(
- output_directory=str(Path(cmdargs["output_directory"]).expanduser().resolve()),
- flow_command=cmdargs["flow_command"],
- input_deck_name=input_path.stem,
- input_deck_path=str(input_path.with_suffix("")),
- active_cell_methods=cmdargs["active_cell_methods"].split(","),
- discrete_aggregation_method=cmdargs["discrete_aggregation_method"].split(","),
- continuous_aggregation_method=cmdargs["continuous_aggregation_method"].split(
- ","
- ),
- jump_thresholds=cmdargs["jump_thresholds"].split(","),
- output_deck_name=cmdargs["output_deck_name"],
- execution_mode=cmdargs["execution_mode"],
- include_prefix=cmdargs["include_prefix"],
- requested_ijk=[cmdargs["requested_ijk"]],
- completion_removal_level=int(cmdargs["completion_removal_level"]),
- deck_encoding=cmdargs["deck_encoding"],
- pore_volume_correction=int(cmdargs["pore_volume_correction"]),
- correct_fluid_in_place=int(cmdargs["correct_fluid_in_place"]),
+ output_directory=str(Path(cmdargs.output_directory).expanduser().resolve()),
+ flow_command=cmdargs.flow_command,
+ input_deck_name=Path(cmdargs.input_deck_path).stem,
+ input_deck_path=str(Path(cmdargs.input_deck_path).with_suffix("")),
+ active_cell_methods=cmdargs.active_cell_methods.split(","),
+ discrete_aggregation_method=cmdargs.discrete_aggregation_method.split(","),
+ continuous_aggregation_method=cmdargs.continuous_aggregation_method.split(","),
+ jump_thresholds=cmdargs.jump_thresholds.split(","),
+ output_deck_name=cmdargs.output_deck_name,
+ execution_mode=cmdargs.execution_mode,
+ include_prefix=cmdargs.include_prefix,
+ requested_ijk=[cmdargs.requested_ijk],
+ completion_removal_level=int(cmdargs.completion_removal_level),
+ deck_encoding=cmdargs.deck_encoding,
+ pore_volume_correction=int(cmdargs.pore_volume_correction),
+ correct_fluid_in_place=int(cmdargs.correct_fluid_in_place),
transmissibility_coarsening_method=int(
- cmdargs["transmissibility_coarsening_method"]
+ cmdargs.transmissibility_coarsening_method
),
- vicinity_specification=cmdargs["vicinity_specification"],
- grid_transformation=cmdargs["grid_transformation"],
- write_explicit_solution=int(cmdargs["write_explicit_solution"]) == 1,
- dual_porosity_criterion=cmdargs["dual_porosity_criterion"],
- significant_digits=int(cmdargs["significant_digits"]),
+ vicinity_specification=cmdargs.vicinity_specification,
+ grid_transformation=cmdargs.grid_transformation,
+ write_explicit_solution=int(cmdargs.write_explicit_solution) == 1,
+ dual_porosity_criterion=cmdargs.dual_porosity_criterion,
+ significant_digits=int(cmdargs.significant_digits),
refinement_enabled=bool(
- cmdargs["x_refinement"]
- or cmdargs["y_refinement"]
- or cmdargs["z_refinement"]
- or cmdargs["refinement"]
+ cmdargs.x_refinement
+ or cmdargs.y_refinement
+ or cmdargs.z_refinement
+ or cmdargs.refinement
),
coarsening_enabled=bool(
- cmdargs["x_coarsening"]
- or cmdargs["y_coarsening"]
- or cmdargs["z_coarsening"]
- or cmdargs["coarsening"]
+ cmdargs.x_coarsening
+ or cmdargs.y_coarsening
+ or cmdargs.z_coarsening
+ or cmdargs.coarsening
),
)
diff --git a/src/pycopm/utils/refinement.py b/src/pycopm/utils/refinement.py
index e2139ee..c6b2a25 100644
--- a/src/pycopm/utils/refinement.py
+++ b/src/pycopm/utils/refinement.py
@@ -4,6 +4,7 @@
"""Refine a corner-point grid and its reservoir properties."""
+import argparse
import sys
from contextlib import nullcontext
from dataclasses import dataclass
@@ -35,7 +36,9 @@ class RefinementMaps:
refined_cell_counts: NDArray
-def create_refinement_maps(dck: ConfigViaDeck, cmdargs) -> RefinementMaps:
+def create_refinement_maps(
+ dck: ConfigViaDeck, cmdargs: argparse.Namespace
+) -> RefinementMaps:
"""Create axis refinement maps and update output dimensions.
A refinement value of ``n`` divides an original interval into ``n + 1``
@@ -54,11 +57,11 @@ def create_refinement_maps(dck: ConfigViaDeck, cmdargs) -> RefinementMaps:
RefinementMaps
Axis values and the number of subdivisions per original cell."""
cijk, refs = parse_axis_modifications(
- cmdargs["refinement"],
+ cmdargs.refinement,
[
- cmdargs["x_refinement"],
- cmdargs["y_refinement"],
- cmdargs["z_refinement"],
+ cmdargs.x_refinement,
+ cmdargs.y_refinement,
+ cmdargs.z_refinement,
],
)
values = []
diff --git a/tests/scripts/docs_check_outputs.sh b/tests/scripts/docs_check_outputs.sh
index e69afe8..0d3e433 100644
--- a/tests/scripts/docs_check_outputs.sh
+++ b/tests/scripts/docs_check_outputs.sh
@@ -1,42 +1,44 @@
-files=(
- "test_outputs/docs_via_deck_dual_coarsening/dual_pressure-0pressure_i,1,k_t2.png"
- "test_outputs/docs_via_deck_drogon/drogon_pycopm_comparison.png"
- "test_outputs/docs_via_deck_drogon/drogon_generic_plopm.png"
- "test_outputs/docs_via_deck_drogon/sgas.gif"
- "test_outputs/docs_via_deck_norne/norne_plopm.png"
- "test_outputs/docs_config_views/index_plopm.png"
- "test_outputs/docs_via_deck_smeaheia/smeaheia.png"
- "test_outputs/docs_via_deck_spe10/spe10_plopm.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_3_submodel_refined_rotated.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_1_left.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_3_submodel.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_2.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_1_right.png"
- "test_outputs/docs_via_deck_hello_world/hello_world_3_submodel_refined.png"
- "test_outputs/docs_via_config_drogon/drogon_coarser_plopm.png"
- "test_outputs/docs_theory_refinements/refinement_plopm.png"
- "test_outputs/docs_theory_coarsening/coarsening_plopm.png"
- "test_outputs/docs_theory_submodels/submodel_plopm.png"
- "test_outputs/docs_theory_submodels/submodel_porv_plopm.png"
- "test_outputs/docs_theory_submodels/submodelwell_plopm.png"
- "test_outputs/docs_theory_transformations/transformation_plopm.png"
-)
+files="
+test_outputs/docs_via_deck_dual_coarsening/dual_pressure-0pressure_i,1,k_t2.png
+test_outputs/docs_via_deck_drogon/drogon_pycopm_comparison.png
+test_outputs/docs_via_deck_drogon/drogon_generic_plopm.png
+test_outputs/docs_via_deck_drogon/sgas.gif
+test_outputs/docs_via_deck_norne/norne_plopm.png
+test_outputs/docs_config_views/index_plopm.png
+test_outputs/docs_via_deck_smeaheia/smeaheia.png
+test_outputs/docs_via_deck_spe10/spe10_plopm.png
+test_outputs/docs_via_deck_hello_world/hello_world_3_submodel_refined_rotated.png
+test_outputs/docs_via_deck_hello_world/hello_world_1_left.png
+test_outputs/docs_via_deck_hello_world/hello_world_3_submodel.png
+test_outputs/docs_via_deck_hello_world/hello_world_2.png
+test_outputs/docs_via_deck_hello_world/hello_world_1_right.png
+test_outputs/docs_via_deck_hello_world/hello_world_3_submodel_refined.png
+test_outputs/docs_via_config_drogon/drogon_coarser_plopm.png
+test_outputs/docs_theory_refinements/refinement_plopm.png
+test_outputs/docs_theory_coarsening/coarsening_plopm.png
+test_outputs/docs_theory_submodels/submodel_plopm.png
+test_outputs/docs_theory_submodels/submodel_porv_plopm.png
+test_outputs/docs_theory_submodels/submodelwell_plopm.png
+test_outputs/docs_theory_transformations/transformation_plopm.png
+"
missing_file="test_outputs/missing_docs_files.txt"
missing=0
rm -f "$missing_file"
-for f in "${files[@]}"; do
- if [[ ! -f "$f" ]]; then
+printf '%s\n' "$files" | while IFS= read -r f; do
+ [ -z "$f" ] && continue
+ if [ ! -f "$f" ]; then
echo "$f" >> "$missing_file"
- ((missing++))
fi
done
-if (( missing == 0 )); then
+if [ "$missing" -eq 0 ]; then
echo "All figures and files exist."
+ return 0
else
echo "$missing figure(s) or file(s) missing."
echo "See $missing_file"
+ return 1
fi
diff --git a/tests/test_8_dual.py b/tests/test_8_dual.py
index e89ab19..b993075 100644
--- a/tests/test_8_dual.py
+++ b/tests/test_8_dual.py
@@ -129,7 +129,6 @@ def test_8_dual(flow, tmp_path, monkeypatch, deck, z_range, dual_expr, expected)
"DUAL",
"-dual",
dual_expr,
- "D",
"-t",
"1" if z_range == "1:2,3:4" and dual_expr == "poro <= 0.1" else "2",
"-m",