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",