From 9931b08147a2ed179a4633396004be4d67d5f4d1 Mon Sep 17 00:00:00 2001 From: David Landa Marban Date: Wed, 18 Dec 2024 12:57:11 +0100 Subject: [PATCH] Additional options to project 2D map quantities --- docs/_sources/introduction.rst.txt | 4 +- docs/_static/js/versions.js | 10 +- docs/installation.html | 2 +- docs/introduction.html | 4 +- docs/searchindex.js | 2 +- docs/text/introduction.rst | 4 +- src/plopm/core/plopm.py | 19 ++- src/plopm/utils/initialization.py | 16 ++- src/plopm/utils/mapping.py | 185 ++++++++++++++++++++++++++--- src/plopm/utils/readers.py | 24 ++-- src/plopm/utils/write.py | 20 ++-- 11 files changed, 236 insertions(+), 54 deletions(-) diff --git a/docs/_sources/introduction.rst.txt b/docs/_sources/introduction.rst.txt index 839ad43..25ad3a7 100644 --- a/docs/_sources/introduction.rst.txt +++ b/docs/_sources/introduction.rst.txt @@ -59,7 +59,7 @@ where -clabel Text for the colorbar ('' by default, i.e., set by plopm). -labels Legend in the summary plot, separated by commas if more than one ('' by default, i.e., set by plopm). -axgrid Set axis.grid to True for the summary plots ('1' by default). --dpi Dots per inch for the figure ('1200' by default). +-dpi Dots per inch for the figure ('500' by default). -xformat Format for the x numbers, e.g., .2e for exponential notation ('' by default, i.e., set by plopm). -yformat Format for the y numbers, e.g., .1f for one decimal ('' by default, i.e., set by plopm). -cformat Specify the format for the numbers in the colormap, e.g., .2f for two decimals ('' by default, i.e., set by plopm). @@ -72,7 +72,7 @@ where -rotate Grades to rotate the grid in the 2D maps ('0' by default). -translate Translate the grid in the 2D maps x,y directions ('[0,0]' by default). -global Min and max in the colorbars from the current 2D slide values (0) or whole 3D model '1' ('0' by default). --how Show the cells for the wells/faults when at least one cell contains them ('min') or when all cells are part of the given slides range ('max') ('min' by default). +-how Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, 'min' show the cells when at least one cell contains them or 'max' when all cells are part of the given slide/slides range. The supported options are 'min', 'max', 'sum', 'mean', 'pvmean', 'harmonic', 'arithmetic'. ('' by default, i.e., the defaults as described above). -ncolor Color for the inactive cells in the 2D maps ('w' by default, i.e., white). -lw Line width separated by commas if more than one ('1' by default). -subfigs Generate separated or a single Figure (e.g., '2,2' for four subfigures) ('' by default, i.e., separate figures). diff --git a/docs/_static/js/versions.js b/docs/_static/js/versions.js index 818bc99..4958195 100644 --- a/docs/_static/js/versions.js +++ b/docs/_static/js/versions.js @@ -1,6 +1,6 @@ const themeFlyoutDisplay = "hidden"; -const themeVersionSelector = "True"; -const themeLanguageSelector = "True"; +const themeVersionSelector = true; +const themeLanguageSelector = true; if (themeFlyoutDisplay === "attached") { function renderLanguages(config) { @@ -8,10 +8,14 @@ if (themeFlyoutDisplay === "attached") { return ""; } + // Insert the current language to the options on the selector + let languages = config.projects.translations.concat(config.projects.current); + languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name)); + const languagesHTML = `
Languages
- ${config.projects.translations + ${languages .map( (translation) => `
diff --git a/docs/installation.html b/docs/installation.html index 6894fdd..feaa7cc 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -102,7 +102,7 @@

Python packagegit clone https://github.com/cssr-tools/plopm.git # Get inside the folder cd plopm -# For a specific version (e.g., v2024.10); otherwhise (i.e., latest version), skip this step +# For a specific version (e.g., v2024.10), or else skip this step (i.e., edge version) git checkout v2024.10 # Create virtual environment python3 -m venv vplopm diff --git a/docs/introduction.html b/docs/introduction.html index fc5c074..d3033ab 100644 --- a/docs/introduction.html +++ b/docs/introduction.html @@ -193,7 +193,7 @@

Concept

Set axis.grid to True for the summary plots (‘1’ by default).

-dpi
-

Dots per inch for the figure (‘1200’ by default).

+

Dots per inch for the figure (‘500’ by default).

-xformat

Format for the x numbers, e.g., .2e for exponential notation (’’ by default, i.e., set by plopm).

@@ -232,7 +232,7 @@

Concept

Min and max in the colorbars from the current 2D slide values (0) or whole 3D model ‘1’ (‘0’ by default).

-how
-

Show the cells for the wells/faults when at least one cell contains them (‘min’) or when all cells are part of the given slides range (‘max’) (‘min’ by default).

+

Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, ‘min’ show the cells when at least one cell contains them or ‘max’ when all cells are part of the given slide/slides range. The supported options are ‘min’, ‘max’, ‘sum’, ‘mean’, ‘pvmean’, ‘harmonic’, ‘arithmetic’. (’’ by default, i.e., the defaults as described above).

-ncolor

Color for the inactive cells in the 2D maps (‘w’ by default, i.e., white).

diff --git a/docs/searchindex.js b/docs/searchindex.js index c79138b..2658ddf 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"About plopm": [[0, null]], "Concept": [[6, "concept"]], "Contribute to the software": [[2, "contribute-to-the-software"]], "Contributing": [[2, null]], "Convert to VTK": [[3, "convert-to-vtk"]], "Different input files": [[3, "different-input-files"]], "Examples": [[3, null]], "GIF and mask": [[3, "gif-and-mask"]], "Generic deck": [[3, "generic-deck"]], "Ground Rules": [[2, "ground-rules"]], "Indices and tables": [[4, "indices-and-tables"]], "Installation": [[5, null]], "Introduction": [[6, null]], "Module contents": [[8, "module-plopm"], [9, "module-plopm.core"], [11, "module-plopm.utils"]], "OPM Flow": [[5, "opm-flow"]], "Overview": [[6, "overview"]], "Python package": [[5, "python-package"]], "Related": [[17, null]], "Reporting issues or problems": [[2, "reporting-issues-or-problems"]], "Rotation, translation, and zoom": [[3, "rotation-translation-and-zoom"]], "SPE11B": [[3, "spe11b"]], "Seek support": [[2, "seek-support"]], "Source build in Linux/Windows": [[5, "source-build-in-linux-windows"]], "Source build in macOS": [[5, "source-build-in-macos"]], "Submodules": [[9, "submodules"], [11, "submodules"]], "Subpackages": [[8, "subpackages"]], "Welcome to plopm\u2019s documentation!": [[4, null]], "ad-micp": [[17, "ad-micp"]], "expreccs": [[17, "expreccs"]], "plopm": [[1, "plopm"], [7, null]], "plopm Python API": [[1, null]], "plopm package": [[8, null]], "plopm.core package": [[9, null]], "plopm.core.plopm module": [[10, null]], "plopm.utils package": [[11, null]], "plopm.utils.initialization module": [[12, null]], "plopm.utils.mapping module": [[13, null]], "plopm.utils.readers module": [[14, null]], "plopm.utils.vtk module": [[15, null]], "plopm.utils.write module": [[16, null]], "pycopm": [[17, "pycopm"]], "pymm": [[17, "pymm"]], "pyopmnearwell": [[17, "pyopmnearwell"]], "pyopmspe11": [[17, "pyopmspe11"]]}, "docnames": ["about", "api", "contributing", "examples", "index", "installation", "introduction", "modules", "plopm", "plopm.core", "plopm.core.plopm", "plopm.utils", "plopm.utils.initialization", "plopm.utils.mapping", "plopm.utils.readers", "plopm.utils.vtk", "plopm.utils.write", "related"], "envversion": {"sphinx": 64, "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", "contributing.rst", "examples.rst", "index.rst", "installation.rst", "introduction.rst", "modules.rst", "plopm.rst", "plopm.core.rst", "plopm.core.plopm.rst", "plopm.utils.rst", "plopm.utils.initialization.rst", "plopm.utils.mapping.rst", "plopm.utils.readers.rst", "plopm.utils.vtk.rst", "plopm.utils.write.rst", "related.rst"], "indexentries": {}, "objects": {"": [[8, 0, 0, "-", "plopm"]], "plopm": [[9, 0, 0, "-", "core"], [11, 0, 0, "-", "utils"]], "plopm.core": [[10, 0, 0, "-", "plopm"]], "plopm.core.plopm": [[10, 1, 1, "", "load_parser"], [10, 1, 1, "", "main"], [10, 1, 1, "", "plopm"]], "plopm.utils": [[12, 0, 0, "-", "initialization"], [13, 0, 0, "-", "mapping"], [14, 0, 0, "-", "readers"], [15, 0, 0, "-", "vtk"], [16, 0, 0, "-", "write"]], "plopm.utils.initialization": [[12, 1, 1, "", "ini_dic"], [12, 1, 1, "", "ini_properties"], [12, 1, 1, "", "ini_slides"], [12, 1, 1, "", "ini_summary"], [12, 1, 1, "", "initialize_mass"], [12, 1, 1, "", "initialize_spatial"], [12, 1, 1, "", "is_summary"]], "plopm.utils.mapping": [[13, 1, 1, "", "handle_slide_x"], [13, 1, 1, "", "handle_slide_y"], [13, 1, 1, "", "handle_slide_z"], [13, 1, 1, "", "map_xycoords"], [13, 1, 1, "", "map_xzcoords"], [13, 1, 1, "", "map_yzcoords"], [13, 1, 1, "", "rotate_grid"]], "plopm.utils.readers": [[14, 1, 1, "", "get_faults"], [14, 1, 1, "", "get_quantity"], [14, 1, 1, "", "get_readers"], [14, 1, 1, "", "get_unit"], [14, 1, 1, "", "get_wells"], [14, 1, 1, "", "get_xycoords_opm"], [14, 1, 1, "", "get_xycoords_resdata"], [14, 1, 1, "", "get_xzcoords_opm"], [14, 1, 1, "", "get_xzcoords_resdata"], [14, 1, 1, "", "get_yzcoords_opm"], [14, 1, 1, "", "get_yzcoords_resdata"], [14, 1, 1, "", "handle_mass"], [14, 1, 1, "", "initialize_time"], [14, 1, 1, "", "operate"], [14, 1, 1, "", "read_summary"], [14, 1, 1, "", "type_of_mass"]], "plopm.utils.vtk": [[15, 1, 1, "", "get_flags"], [15, 1, 1, "", "make_dry_deck"], [15, 1, 1, "", "make_vtks"], [15, 1, 1, "", "opmtovtk"], [15, 1, 1, "", "writepvd"]], "plopm.utils.write": [[16, 1, 1, "", "find_min_max"], [16, 1, 1, "", "handle_axis"], [16, 1, 1, "", "handle_well_or_grid_or_fault"], [16, 1, 1, "", "make_maps"], [16, 1, 1, "", "make_summary"], [16, 1, 1, "", "mapit"], [16, 1, 1, "", "mapits"], [16, 1, 1, "", "prepare_maps"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:function"}, "terms": {"": [3, 5, 6, 14], "0": [3, 5, 6], "01": [3, 6], "02": [3, 6], "1": [3, 5, 6], "10": [2, 3, 5, 6], "100": 6, "1000": [3, 6], "11": 6, "12": [3, 6], "1200": 6, "14": 3, "16": [3, 6], "1e": [3, 6], "1e3": 3, "1f": 6, "2": [3, 6], "200": 6, "2024": 5, "22": 3, "24": 2, "25": 3, "2d": [6, 10, 12, 13, 14, 16], "2e": 6, "2f": [3, 6], "3": [3, 5, 6], "30": 3, "300": 6, "331841": 0, "3476500": 3, "3d": 6, "4": [3, 6], "40": 6, "5": [3, 6], "5600": 3, "6": 3, "622059": 0, "6456335": 3, "65": 3, "7": 3, "7600": 3, "8": [3, 6], "8800": 3, "9": [3, 5, 6], "A": 17, "For": [0, 3, 5, 6], "If": [3, 5], "In": [2, 3, 6], "It": 3, "ON": 5, "The": [1, 2, 3, 5, 6], "Then": [3, 5], "To": [3, 5], "_build": 2, "_of_input_fil": 6, "_z": 3, "abel": 6, "about": [2, 4], "accept": 2, "accord": 12, "acecolor": 6, "achiev": [3, 5], "action": 2, "activ": [3, 5], "actual": 16, "ad": [3, 4, 5], "add": 5, "addit": [3, 5, 6], "after": [3, 5, 14], "ahiev": 3, "align": 6, "all": [1, 2, 3, 5, 6, 15], "allow": 6, "along": [3, 6], "also": [2, 3, 5, 6], "altern": [2, 5], "an": [0, 2, 3, 5, 17], "anaconda": 5, "analys": 2, "ani": [2, 3, 6], "answer": 2, "api": 4, "appli": 14, "approach": [0, 2, 6], "apt": 5, "ar": [0, 2, 3, 5, 6, 17], "arg": [12, 13, 14, 15, 16], "argument": [3, 6, 10, 12, 16], "arn": 6, "arrai": [14, 16], "ask": 6, "askthr": 6, "associ": 14, "assum": 3, "atex": 6, "av": 6, "avaiabl": 6, "avail": [3, 5], "axi": [3, 6, 12, 14, 16], "b": [3, 6], "background": 6, "bar": [6, 16], "base": [6, 17], "been": 3, "befor": 2, "being": 0, "below": 17, "benchmark": 17, "best": 6, "between": [3, 6], "bin": [5, 6], "binari": [2, 5], "black": 2, "bool": 12, "both": [3, 5], "bottom": 6, "bound": [3, 6], "branch": 5, "brew": 5, "bsfax": 6, "build": [2, 3, 4, 6], "build_opm_mpi": 5, "built": 5, "c": [3, 6], "calcit": 17, "call": 3, "can": [2, 3, 5, 6], "case": [3, 6, 14], "cbsfax": 3, "cd": 5, "cell": [3, 6], "center": [0, 3], "centimet": 6, "cfd": 17, "cformat": 3, "challeng": 0, "chang": [2, 3], "changu": 3, "check": [12, 17], "checker": 2, "checkout": 5, "ci": [2, 5], "class": 16, "clone": 5, "cm": [5, 6], "cmake": 5, "cmdarg": [12, 16], "cnum": 3, "co2": [3, 6, 14, 17], "co2_d": 14, "co2_g": 14, "co2m": [3, 6], "coarsen": 17, "code": [2, 5, 8], "collabor": 2, "color": [3, 6, 16], "colorbar": [3, 6, 16], "colormap": [3, 6], "com": [5, 6], "comma": 6, "command": [5, 12, 16], "commit": 2, "common": 5, "compar": 3, "comparison": 3, "compon": 3, "comput": 14, "concept": 4, "configur": 3, "connect": 3, "contain": [1, 6], "content": [1, 2, 4, 7], "contribut": [0, 4, 5], "convert": [4, 5, 6], "coordin": [12, 14, 16], "copi": [2, 5], "core": [1, 5, 7, 8], "correspond": [6, 14], "could": 5, "cov": 2, "creat": [2, 3, 5, 15, 16], "csp": 17, "cssr": [0, 5, 6], "cubehelix": 3, "current": [5, 6, 14], "current_directori": 5, "d": [3, 6], "dai": 6, "dash": 3, "data": 14, "date": [3, 6], "dcmake_build_typ": 5, "dcmake_disable_find_package_mpi": 5, "dcmake_prefix_path": 5, "deactiv": 5, "decim": 6, "deck": [4, 14, 15, 16], "default": [3, 6], "defin": 12, "definit": 3, "delax": 3, "delet": [3, 6], "depend": [2, 5], "describ": [2, 6], "dev": [2, 5], "develop": 5, "dic": [12, 13, 14, 15, 16], "dict": [12, 13, 14, 15, 16], "dictionari": [12, 13, 14, 15, 16], "diff": 3, "differ": [1, 4, 6], "dimens": [3, 6], "direct": [3, 6], "directli": 3, "dism": 6, "divid": [3, 16], "do": 5, "doc": 2, "document": [2, 6], "done": 5, "dopm_enable_python": 5, "dot": [3, 6], "download": 3, "dpi": 3, "dpython_execut": 5, "dry": 15, "due": 5, "dune": 5, "dunecontrol": 5, "duse_mpi": 5, "dvipng": 5, "dwith_ndebug": 5, "dynam": [3, 6, 17], "e": [3, 5, 6], "each": 6, "easier": 5, "echo": 5, "egrid": [3, 5], "elax": 6, "email": 2, "emov": 6, "empti": 3, "enabl": 3, "entri": [3, 6, 12], "environ": 5, "equal": 5, "error": 5, "exampl": 4, "execut": [1, 2, 3, 5, 6, 10], "exist": 5, "expans": 17, "exponenti": 6, "export": 5, "exprecc": 4, "extend": 2, "extens": 6, "extra": 5, "f": [3, 6], "face": 5, "familiar": 2, "faster": 5, "fault": [3, 6, 14], "featur": 0, "fgip": [3, 6], "fgipm": [3, 6], "field": [3, 6], "figur": [3, 5, 6, 16], "file": [2, 4, 5, 6, 12, 14, 15], "final": 6, "find": 16, "find_min_max": [8, 11, 16], "fipnum": [3, 6], "first": [3, 5], "fix": 2, "flag": [3, 5, 12, 15], "flexibl": [6, 17], "float": [3, 12, 14, 16], "float32": [3, 6], "float64": [3, 6], "flore": 3, "flow": [2, 3, 4, 6, 10, 14, 15, 17], "fluid": 6, "folder": [1, 2, 3, 5, 6], "follow": [3, 5, 6], "font": [3, 5, 6], "fork": [0, 2], "format": [2, 3, 5, 6], "forth": 3, "found": 5, "four": 6, "fraction": 3, "frame": 6, "framework": [6, 17], "from": [2, 3, 5, 6, 13, 14], "full": 6, "function": [10, 12, 13, 14, 15, 16], "fund": 0, "fwcdm": 6, "g": [3, 5, 6], "ga": [3, 6, 14], "gasm": 6, "gebner": 16, "gener": [2, 4, 6, 15, 16], "geolog": [6, 10, 13, 15, 17], "geometri": 5, "get": [2, 5, 14, 16], "get_fault": [8, 11, 14], "get_flag": [8, 11, 15], "get_quant": [8, 11, 14], "get_read": [8, 11, 14], "get_unit": [8, 11, 14], "get_wel": [8, 11, 14], "get_xycoords_opm": [8, 11, 14], "get_xycoords_resdata": [8, 11, 14], "get_xzcoords_opm": [8, 11, 14], "get_xzcoords_resdata": [8, 11, 14], "get_yzcoords_opm": [8, 11, 14], "get_yzcoords_resdata": [8, 11, 14], "gif": [4, 6], "gigatonn": 0, "git": 5, "github": [2, 5, 6], "gitlab": 5, "give": 3, "given": [3, 6, 12, 14, 15], "global": [3, 6, 12, 13, 14, 15, 16], "grade": 6, "grid": [3, 5, 6, 13, 14, 15], "ground": 4, "h": [3, 6], "h2o": [3, 14], "h2o_l": 14, "h2o_v": 14, "h2om": 6, "ha": 3, "half": 3, "handl": [1, 12, 14, 16], "handle_axi": [8, 11, 16], "handle_mass": [8, 11, 14], "handle_slide_i": [8, 11, 13], "handle_slide_x": [8, 11, 13], "handle_slide_z": [8, 11, 13], "handle_well_or_grid_or_fault": [8, 11, 16], "have": 3, "help": [2, 3], "here": 3, "higher": 5, "home": 6, "horda": 17, "host": 6, "hour": 6, "howev": 3, "hpc": 0, "html": 2, "http": [5, 6], "i": [0, 1, 2, 3, 5, 6, 12, 14], "iff": 6, "ignor": 2, "imag": [16, 17], "implement": 6, "import": 2, "inact": 6, "inch": 6, "includ": [3, 5], "increas": 3, "index": [4, 14, 15], "induc": 17, "infin": 6, "inform": 3, "ini_d": [8, 11, 12], "ini_properti": [8, 11, 12], "ini_slid": [8, 11, 12], "ini_summari": [8, 11, 12], "init": [3, 5], "initi": [3, 6, 8, 11], "initialize_mass": [8, 11, 12], "initialize_spati": [8, 11, 12], "initialize_tim": [8, 11, 14], "inject": 3, "input": [4, 6, 12, 14], "insid": [3, 5], "inspect": 6, "instal": [2, 3, 4], "instead": 5, "int": [14, 15, 16], "intens": 14, "interest": [5, 17], "interv": 3, "introduct": 4, "is_summari": [8, 11, 12], "issu": [0, 4], "istl": 5, "j": [6, 14], "j5": 5, "jet": 6, "just": 3, "k": [3, 6, 15, 16], "kei": 12, "kilo": 3, "kilomet": 6, "km": [3, 6], "l": [5, 6], "label": [3, 6, 14, 16], "larg": 5, "larger": 3, "last": 6, "latest": 5, "latex": [5, 6], "layer": 3, "leakag": 17, "least": [3, 6], "left": [3, 6], "legend": 6, "let": 3, "librari": [5, 6], "limit": 3, "line": [2, 3, 5, 6], "linestyl": 6, "lint": 5, "linux": 4, "liqm": 6, "liquid": [3, 14], "list": 14, "lnum": 6, "load": [14, 15], "load_pars": [8, 9, 10], "lobal": 6, "loc": 3, "local": 2, "locat": [1, 3, 6, 13, 14], "log": [3, 6], "look": [2, 3], "loop": [3, 6], "lower": [3, 6], "lw": 3, "m": [3, 5, 6, 14], "maco": 4, "macport": 5, "mactex": 5, "main": [1, 2, 8, 9, 10], "maintain": 2, "make": [2, 5], "make_dry_deck": [8, 11, 15], "make_map": [8, 11, 16], "make_summari": [8, 11, 16], "make_vtk": [8, 11, 15], "mamba": 5, "manag": 5, "mantain": 2, "manual": 3, "map": [3, 6, 8, 10, 11, 12, 14, 16], "map_xycoord": [8, 11, 13], "map_xzcoord": [8, 11, 13], "map_yzcoord": [8, 11, 13], "mapit": [8, 11, 16], "mask": [4, 6], "mass": [3, 6, 12, 14], "master": 5, "max": [6, 16], "maximum": 6, "merg": 2, "mesh": 14, "meter": 6, "method": [1, 14, 16], "micp": [4, 15], "microbi": 17, "microsystem": 17, "middl": 6, "might": [2, 5, 17], "milimet": 6, "milli": 6, "min": [6, 16], "miniforg": 5, "minim": 15, "minimum": 6, "minut": 6, "miss": 2, "mkdir": 5, "mm": 6, "model": [3, 6, 10, 13, 15, 17], "modifi": [5, 12, 13, 14, 16], "modul": [1, 4, 5, 7, 17], "more": [0, 2, 3, 6], "mpi": 5, "mskl": 12, "mt": 6, "must": 3, "mypi": 2, "n": [6, 12, 13, 14, 16], "n_": 16, "name": [6, 14, 16], "need": [2, 5, 12], "new": [0, 2], "nice": [2, 6], "none": [15, 16], "norne_atw2013": 3, "notat": 6, "nrst": 14, "nterval": 6, "num": 6, "number": [0, 3, 6, 14, 16], "o": 6, "object": [12, 16], "obtain": 13, "oc": 6, "og": 6, "one": [3, 6, 12], "ones": 3, "onli": [3, 5], "oop": 6, "open": 17, "oper": [8, 11, 14], "opm": [2, 3, 4, 6, 10, 14, 15, 17], "opmtovtk": [8, 11, 15], "option": [3, 6, 10], "order": 3, "org": 5, "otat": 6, "other": 6, "otherwhis": 5, "otherwis": 6, "our": 2, "out": 17, "output": [3, 5, 6, 14], "outsid": [3, 6], "overview": [3, 4], "ow": 6, "own": 2, "p": 6, "packag": [1, 2, 4, 7], "page": [2, 4], "paper": 6, "paraview": [3, 6], "part": 6, "path": [3, 6], "pcolormesh": 16, "per": 6, "perfor": 3, "perform": 15, "permeabl": 3, "permx": 6, "permz": [3, 6], "phase": [3, 14], "physic": 14, "pi": 6, "pip": [2, 5], "place": [3, 6], "plane": [3, 6], "platform": 17, "pleas": [0, 2], "plopm": [2, 3, 5, 6], "plot": [1, 3, 6, 10, 12, 14, 16], "plt": 16, "png": [6, 16], "popul": 15, "pore": 6, "poro": 6, "poros": 6, "porv": 6, "posit": 6, "possibl": [2, 3, 5], "postprocess": 6, "pr": 2, "precipit": 17, "prefer": 2, "prepare_map": [8, 11, 16], "prerequisit": 5, "present": 6, "pressur": 6, "previou": [2, 5], "print": 6, "printv": 3, "problem": 4, "process": 13, "progress": 0, "project": [0, 5, 17], "properti": [3, 6, 12, 13, 15, 16], "pull": [0, 2], "push": 2, "pushd": 2, "pvd": 15, "pwd": 5, "py": 3, "pycopm": 4, "pylint": 2, "pymm": 4, "pyopmnearwel": 4, "pyopmspe11": [3, 4], "pytest": 2, "python": [4, 6, 17], "python3": 5, "pythonpath": 5, "qskl": 14, "quan": [13, 14], "quan1": 14, "quantiti": [3, 6, 14], "quick": 6, "r": [2, 3, 5, 6], "rais": [0, 2], "rang": 6, "ranslat": 6, "rate": 3, "read": [5, 14], "read_summari": [8, 11, 14], "reader": [8, 11], "recommend": 5, "reduc": 3, "regard": 5, "region": 3, "relat": 4, "releas": 5, "reli": 3, "remedi": 17, "remov": [3, 6, 15], "replac": 2, "repo": [2, 5], "report": [3, 4], "repositori": [2, 5], "request": [0, 2, 14], "requier": 13, "requir": [2, 5], "requiri": 12, "resdata": [5, 6, 14], "reservoir": 6, "resourc": [0, 17], "restar": 3, "restart": [3, 6, 14, 16], "result": [3, 6], "return": [12, 13, 14, 15, 16], "review": 2, "rgip": 3, "rintv": 6, "rise": 2, "rock": 3, "rotat": [4, 6, 13], "rotate_grid": [8, 11, 13], "rule": 4, "run": [2, 3, 5, 15], "same": 6, "satnum": [3, 6], "satur": [3, 6], "save": 3, "scale": [3, 6, 12, 14], "script": [1, 2, 5, 10], "search": 4, "second": [3, 6], "see": [2, 3, 5], "seek": 4, "seem": 5, "select": 13, "send": 2, "separ": [3, 6], "set": [3, 6, 12], "setuptool": 5, "sga": 3, "sh": 5, "should": [3, 5], "show": [3, 6], "shown": 3, "simplifi": [6, 17], "simul": [0, 3, 5, 6, 13, 14, 15, 17], "singl": [2, 6], "six": 2, "size": [3, 6], "skip": 5, "skl": 14, "slide": [3, 6, 13], "so": 5, "softwar": [0, 4], "solid": [3, 6], "some": [3, 17], "soon": 2, "sourc": [3, 4, 17], "space": 3, "spatial": [6, 12, 14, 16], "spe10_model2": 3, "spe11": 17, "spe11b": [4, 6], "spe11b_larger_inj": 3, "spe11b_tun": 6, "special": [6, 15], "specif": 5, "specifc": [], "specifi": [3, 6], "squash": 2, "src": 2, "standard": 15, "static": [2, 6], "step": [2, 3, 5, 14], "still": 5, "storag": [0, 17], "str": [12, 14, 15, 16], "studi": 17, "style": 3, "subfig": 3, "subfigur": 6, "submodul": [1, 7, 8], "subpackag": [1, 4, 7], "subplot": [3, 6, 16], "substract": 6, "subsurfac": 0, "subsystem": 5, "succe": [2, 3], "sudo": 5, "summari": [3, 6, 12, 14, 16], "super": 5, "support": [3, 4, 5, 6], "surfac": 6, "sustain": 0, "t": [3, 6, 16], "tab20c_r": 3, "tag": 5, "temp": 3, "temperatur": 3, "term": 2, "termin": [3, 5, 6], "test": [2, 3, 5], "test_generic_deck": 3, "texliv": 5, "text": 6, "than": [0, 2, 3, 5, 6], "thei": 3, "them": [0, 6, 17], "thermal": 15, "thi": [0, 2, 3, 5, 6], "threshold": 6, "tick": 3, "time": [3, 6, 14], "titl": [3, 6], "tkformat": 6, "tkname": 6, "ton": 3, "tool": [3, 5, 6, 17], "top": 3, "total": 3, "translat": [4, 6], "true": [3, 6, 12], "try": [2, 5], "tug": 5, "tunit": [3, 14], "turn": 5, "tutori": 2, "two": [3, 6], "txt": [2, 5], "type": [3, 5, 6, 12, 14], "type_of_mass": [8, 11, 14], "u": [3, 5, 6], "ubfig": 6, "ubuntu": [2, 5], "uint16": [3, 6], "unit": [3, 6, 12, 14, 16], "unrst": [3, 5], "upgrad": 5, "upper": [3, 6], "uptitl": 6, "us": [0, 2, 3, 5, 6, 12, 14, 15, 16, 17], "user": [2, 5, 6], "util": [1, 7, 8], "utilii": [12, 13, 14, 15, 16], "v": [3, 6], "v2": 5, "v2024": 5, "vairabl": 6, "valu": [6, 12, 14], "vapm": 6, "var": [13, 14, 16], "variabl": [3, 6, 12, 14, 15, 16], "vect": 16, "vector": [3, 6, 14], "venv": 5, "version": [5, 8], "via": [3, 5], "view": 3, "virtual": 5, "visit": 2, "visual": [3, 6], "volum": 6, "vplopm": 5, "vtk": [4, 5, 6, 8, 11], "vtkformat": 3, "w": [3, 6], "warn": 6, "we": [2, 3], "week": [3, 6], "welcom": [0, 2], "well": [2, 3, 5, 6, 14, 17], "were": 3, "wheel": 5, "when": [3, 5, 6], "where": [3, 6], "which": [5, 6], "while": [3, 5], "white": [3, 6], "whole": 6, "width": [3, 6], "window": 4, "work": [0, 2, 5], "would": 3, "write": [3, 5, 6, 8, 11, 15], "writepvd": [8, 11, 15], "written": [3, 6], "www": 5, "x": [3, 6, 14], "x_g_h2o": 14, "x_l_co2": 14, "xco2l": [3, 6], "xco2v": 6, "xgrid": 6, "xh2ol": 6, "xh2ov": 6, "xlnum": 3, "xunit": 3, "xy": [6, 13, 14], "xz": [3, 6, 13, 14], "y": [3, 6], "year": [3, 6], "yformat": 3, "yml": [2, 5], "you": [2, 3, 5], "your": 2, "yunit": 3, "yz": [13, 14], "z": [3, 6], "zoom": 4}, "titles": ["About plopm", "plopm Python API", "Contributing", "Examples", "Welcome to plopm\u2019s documentation!", "Installation", "Introduction", "plopm", "plopm package", "plopm.core package", "plopm.core.plopm module", "plopm.utils package", "plopm.utils.initialization module", "plopm.utils.mapping module", "plopm.utils.readers module", "plopm.utils.vtk module", "plopm.utils.write module", "Related"], "titleterms": {"": 4, "about": 0, "ad": 17, "api": 1, "build": 5, "concept": 6, "content": [8, 9, 11], "contribut": 2, "convert": 3, "core": [9, 10], "deck": 3, "differ": 3, "document": 4, "exampl": 3, "exprecc": 17, "file": 3, "flow": 5, "gener": 3, "gif": 3, "ground": 2, "indic": 4, "initi": 12, "input": 3, "instal": 5, "introduct": 6, "issu": 2, "linux": 5, "maco": 5, "map": 13, "mask": 3, "micp": 17, "modul": [8, 9, 10, 11, 12, 13, 14, 15, 16], "opm": 5, "overview": 6, "packag": [5, 8, 9, 11], "plopm": [0, 1, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "problem": 2, "pycopm": 17, "pymm": 17, "pyopmnearwel": 17, "pyopmspe11": 17, "python": [1, 5], "reader": 14, "relat": 17, "report": 2, "rotat": 3, "rule": 2, "seek": 2, "softwar": 2, "sourc": 5, "spe11b": 3, "submodul": [9, 11], "subpackag": 8, "support": 2, "tabl": 4, "translat": 3, "util": [11, 12, 13, 14, 15, 16], "vtk": [3, 15], "welcom": 4, "window": 5, "write": 16, "zoom": 3}}) \ No newline at end of file +Search.setIndex({"alltitles": {"About plopm": [[0, null]], "Concept": [[6, "concept"]], "Contribute to the software": [[2, "contribute-to-the-software"]], "Contributing": [[2, null]], "Convert to VTK": [[3, "convert-to-vtk"]], "Different input files": [[3, "different-input-files"]], "Examples": [[3, null]], "GIF and mask": [[3, "gif-and-mask"]], "Generic deck": [[3, "generic-deck"]], "Ground Rules": [[2, "ground-rules"]], "Indices and tables": [[4, "indices-and-tables"]], "Installation": [[5, null]], "Introduction": [[6, null]], "Module contents": [[8, "module-plopm"], [9, "module-plopm.core"], [11, "module-plopm.utils"]], "OPM Flow": [[5, "opm-flow"]], "Overview": [[6, "overview"]], "Python package": [[5, "python-package"]], "Related": [[17, null]], "Reporting issues or problems": [[2, "reporting-issues-or-problems"]], "Rotation, translation, and zoom": [[3, "rotation-translation-and-zoom"]], "SPE11B": [[3, "spe11b"]], "Seek support": [[2, "seek-support"]], "Source build in Linux/Windows": [[5, "source-build-in-linux-windows"]], "Source build in macOS": [[5, "source-build-in-macos"]], "Submodules": [[9, "submodules"], [11, "submodules"]], "Subpackages": [[8, "subpackages"]], "Welcome to plopm\u2019s documentation!": [[4, null]], "ad-micp": [[17, "ad-micp"]], "expreccs": [[17, "expreccs"]], "plopm": [[1, "plopm"], [7, null]], "plopm Python API": [[1, null]], "plopm package": [[8, null]], "plopm.core package": [[9, null]], "plopm.core.plopm module": [[10, null]], "plopm.utils package": [[11, null]], "plopm.utils.initialization module": [[12, null]], "plopm.utils.mapping module": [[13, null]], "plopm.utils.readers module": [[14, null]], "plopm.utils.vtk module": [[15, null]], "plopm.utils.write module": [[16, null]], "pycopm": [[17, "pycopm"]], "pymm": [[17, "pymm"]], "pyopmnearwell": [[17, "pyopmnearwell"]], "pyopmspe11": [[17, "pyopmspe11"]]}, "docnames": ["about", "api", "contributing", "examples", "index", "installation", "introduction", "modules", "plopm", "plopm.core", "plopm.core.plopm", "plopm.utils", "plopm.utils.initialization", "plopm.utils.mapping", "plopm.utils.readers", "plopm.utils.vtk", "plopm.utils.write", "related"], "envversion": {"sphinx": 64, "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", "contributing.rst", "examples.rst", "index.rst", "installation.rst", "introduction.rst", "modules.rst", "plopm.rst", "plopm.core.rst", "plopm.core.plopm.rst", "plopm.utils.rst", "plopm.utils.initialization.rst", "plopm.utils.mapping.rst", "plopm.utils.readers.rst", "plopm.utils.vtk.rst", "plopm.utils.write.rst", "related.rst"], "indexentries": {"find_min_max() (in module plopm.utils.write)": [[16, "plopm.utils.write.find_min_max", false]], "get_faults() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_faults", false]], "get_flags() (in module plopm.utils.vtk)": [[15, "plopm.utils.vtk.get_flags", false]], "get_quantity() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_quantity", false]], "get_readers() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_readers", false]], "get_unit() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_unit", false]], "get_wells() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_wells", false]], "get_xycoords_opm() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_xycoords_opm", false]], "get_xycoords_resdata() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_xycoords_resdata", false]], "get_xzcoords_opm() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_xzcoords_opm", false]], "get_xzcoords_resdata() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_xzcoords_resdata", false]], "get_yzcoords_opm() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_yzcoords_opm", false]], "get_yzcoords_resdata() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.get_yzcoords_resdata", false]], "handle_axis() (in module plopm.utils.write)": [[16, "plopm.utils.write.handle_axis", false]], "handle_mass() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.handle_mass", false]], "handle_slide_x() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.handle_slide_x", false]], "handle_slide_y() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.handle_slide_y", false]], "handle_slide_z() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.handle_slide_z", false]], "handle_well_or_grid_or_fault() (in module plopm.utils.write)": [[16, "plopm.utils.write.handle_well_or_grid_or_fault", false]], "ini_dic() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.ini_dic", false]], "ini_properties() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.ini_properties", false]], "ini_slides() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.ini_slides", false]], "ini_summary() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.ini_summary", false]], "initialize_mass() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.initialize_mass", false]], "initialize_spatial() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.initialize_spatial", false]], "initialize_time() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.initialize_time", false]], "is_summary() (in module plopm.utils.initialization)": [[12, "plopm.utils.initialization.is_summary", false]], "load_parser() (in module plopm.core.plopm)": [[10, "plopm.core.plopm.load_parser", false]], "main() (in module plopm.core.plopm)": [[10, "plopm.core.plopm.main", false]], "make_dry_deck() (in module plopm.utils.vtk)": [[15, "plopm.utils.vtk.make_dry_deck", false]], "make_maps() (in module plopm.utils.write)": [[16, "plopm.utils.write.make_maps", false]], "make_summary() (in module plopm.utils.write)": [[16, "plopm.utils.write.make_summary", false]], "make_vtks() (in module plopm.utils.vtk)": [[15, "plopm.utils.vtk.make_vtks", false]], "map_xycoords() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.map_xycoords", false]], "map_xzcoords() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.map_xzcoords", false]], "map_yzcoords() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.map_yzcoords", false]], "mapit() (in module plopm.utils.write)": [[16, "plopm.utils.write.mapit", false]], "mapits() (in module plopm.utils.write)": [[16, "plopm.utils.write.mapits", false]], "module": [[8, "module-plopm", false], [9, "module-plopm.core", false], [10, "module-plopm.core.plopm", false], [11, "module-plopm.utils", false], [12, "module-plopm.utils.initialization", false], [13, "module-plopm.utils.mapping", false], [14, "module-plopm.utils.readers", false], [15, "module-plopm.utils.vtk", false], [16, "module-plopm.utils.write", false]], "operate() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.operate", false]], "opmtovtk() (in module plopm.utils.vtk)": [[15, "plopm.utils.vtk.opmtovtk", false]], "plopm": [[8, "module-plopm", false]], "plopm() (in module plopm.core.plopm)": [[10, "plopm.core.plopm.plopm", false]], "plopm.core": [[9, "module-plopm.core", false]], "plopm.core.plopm": [[10, "module-plopm.core.plopm", false]], "plopm.utils": [[11, "module-plopm.utils", false]], "plopm.utils.initialization": [[12, "module-plopm.utils.initialization", false]], "plopm.utils.mapping": [[13, "module-plopm.utils.mapping", false]], "plopm.utils.readers": [[14, "module-plopm.utils.readers", false]], "plopm.utils.vtk": [[15, "module-plopm.utils.vtk", false]], "plopm.utils.write": [[16, "module-plopm.utils.write", false]], "prepare_maps() (in module plopm.utils.write)": [[16, "plopm.utils.write.prepare_maps", false]], "read_summary() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.read_summary", false]], "rotate_grid() (in module plopm.utils.mapping)": [[13, "plopm.utils.mapping.rotate_grid", false]], "type_of_mass() (in module plopm.utils.readers)": [[14, "plopm.utils.readers.type_of_mass", false]], "writepvd() (in module plopm.utils.vtk)": [[15, "plopm.utils.vtk.writepvd", false]]}, "objects": {"": [[8, 0, 0, "-", "plopm"]], "plopm": [[9, 0, 0, "-", "core"], [11, 0, 0, "-", "utils"]], "plopm.core": [[10, 0, 0, "-", "plopm"]], "plopm.core.plopm": [[10, 1, 1, "", "load_parser"], [10, 1, 1, "", "main"], [10, 1, 1, "", "plopm"]], "plopm.utils": [[12, 0, 0, "-", "initialization"], [13, 0, 0, "-", "mapping"], [14, 0, 0, "-", "readers"], [15, 0, 0, "-", "vtk"], [16, 0, 0, "-", "write"]], "plopm.utils.initialization": [[12, 1, 1, "", "ini_dic"], [12, 1, 1, "", "ini_properties"], [12, 1, 1, "", "ini_slides"], [12, 1, 1, "", "ini_summary"], [12, 1, 1, "", "initialize_mass"], [12, 1, 1, "", "initialize_spatial"], [12, 1, 1, "", "is_summary"]], "plopm.utils.mapping": [[13, 1, 1, "", "handle_slide_x"], [13, 1, 1, "", "handle_slide_y"], [13, 1, 1, "", "handle_slide_z"], [13, 1, 1, "", "map_xycoords"], [13, 1, 1, "", "map_xzcoords"], [13, 1, 1, "", "map_yzcoords"], [13, 1, 1, "", "rotate_grid"]], "plopm.utils.readers": [[14, 1, 1, "", "get_faults"], [14, 1, 1, "", "get_quantity"], [14, 1, 1, "", "get_readers"], [14, 1, 1, "", "get_unit"], [14, 1, 1, "", "get_wells"], [14, 1, 1, "", "get_xycoords_opm"], [14, 1, 1, "", "get_xycoords_resdata"], [14, 1, 1, "", "get_xzcoords_opm"], [14, 1, 1, "", "get_xzcoords_resdata"], [14, 1, 1, "", "get_yzcoords_opm"], [14, 1, 1, "", "get_yzcoords_resdata"], [14, 1, 1, "", "handle_mass"], [14, 1, 1, "", "initialize_time"], [14, 1, 1, "", "operate"], [14, 1, 1, "", "read_summary"], [14, 1, 1, "", "type_of_mass"]], "plopm.utils.vtk": [[15, 1, 1, "", "get_flags"], [15, 1, 1, "", "make_dry_deck"], [15, 1, 1, "", "make_vtks"], [15, 1, 1, "", "opmtovtk"], [15, 1, 1, "", "writepvd"]], "plopm.utils.write": [[16, 1, 1, "", "find_min_max"], [16, 1, 1, "", "handle_axis"], [16, 1, 1, "", "handle_well_or_grid_or_fault"], [16, 1, 1, "", "make_maps"], [16, 1, 1, "", "make_summary"], [16, 1, 1, "", "mapit"], [16, 1, 1, "", "mapits"], [16, 1, 1, "", "prepare_maps"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:function"}, "terms": {"": [3, 5, 6, 14], "0": [3, 5, 6], "01": [3, 6], "02": [3, 6], "1": [3, 5, 6], "10": [2, 3, 5, 6], "100": 6, "1000": [3, 6], "11": 6, "12": [3, 6], "14": 3, "16": [3, 6], "1e": [3, 6], "1e3": 3, "1f": 6, "2": [3, 6], "200": 6, "2024": 5, "22": 3, "24": 2, "25": 3, "2d": [6, 10, 12, 13, 14, 16], "2e": 6, "2f": [3, 6], "3": [3, 5, 6], "30": 3, "300": 6, "331841": 0, "3476500": 3, "3d": 6, "4": [3, 6], "40": 6, "5": [3, 6], "500": 6, "5600": 3, "6": 3, "622059": 0, "6456335": 3, "65": 3, "7": 3, "7600": 3, "8": [3, 6], "8800": 3, "9": [3, 5, 6], "A": 17, "By": 6, "For": [0, 3, 5, 6], "If": [3, 5], "In": [2, 3, 6], "It": 3, "ON": 5, "The": [1, 2, 3, 5, 6], "Then": [3, 5], "To": [3, 5], "_build": 2, "_of_input_fil": 6, "_z": 3, "abel": 6, "about": [2, 4], "abov": 6, "accept": 2, "accord": 12, "acecolor": 6, "achiev": [3, 5], "action": 2, "activ": [3, 5], "actual": 16, "ad": [3, 4, 5], "add": 5, "addit": [3, 5, 6], "after": [3, 5, 14], "ahiev": 3, "align": 6, "all": [1, 2, 3, 5, 6, 15], "allow": 6, "along": [3, 6], "also": [2, 3, 5, 6], "altern": [2, 5], "an": [0, 2, 3, 5, 17], "anaconda": 5, "analys": 2, "ani": [2, 3, 6], "answer": 2, "api": 4, "appli": 14, "approach": [0, 2, 6], "apt": 5, "ar": [0, 2, 3, 5, 6, 17], "arg": [12, 13, 14, 15, 16], "argument": [3, 6, 10, 12, 16], "arithmet": 6, "arn": 6, "arrai": [14, 16], "ask": 6, "askthr": 6, "associ": 14, "assum": 3, "atex": 6, "av": 6, "avaiabl": 6, "avail": [3, 5], "averag": 6, "axi": [3, 6, 12, 14, 16], "b": [3, 6], "background": 6, "bar": [6, 16], "base": [6, 17], "been": 3, "befor": 2, "being": 0, "below": 17, "benchmark": 17, "best": 6, "between": [3, 6], "bin": [5, 6], "binari": [2, 5], "black": 2, "bool": 12, "both": [3, 5], "bottom": 6, "bound": [3, 6], "branch": 5, "brew": 5, "bsfax": 6, "build": [2, 3, 4, 6], "build_opm_mpi": 5, "built": 5, "c": [3, 6], "calcit": 17, "call": 3, "can": [2, 3, 5, 6], "case": [3, 6, 14], "cbsfax": 3, "cd": 5, "cell": [3, 6], "center": [0, 3], "centimet": 6, "cfd": 17, "cformat": 3, "challeng": 0, "chang": [2, 3], "changu": 3, "check": [12, 17], "checker": 2, "checkout": 5, "ci": [2, 5], "class": 16, "clone": 5, "cm": [5, 6], "cmake": 5, "cmdarg": [12, 16], "cnum": 3, "co2": [3, 6, 14, 17], "co2_d": 14, "co2_g": 14, "co2m": [3, 6], "coarsen": 17, "code": [2, 5, 8], "collabor": 2, "color": [3, 6, 16], "colorbar": [3, 6, 16], "colormap": [3, 6], "com": [5, 6], "comma": 6, "command": [5, 12, 16], "commit": 2, "common": 5, "compar": 3, "comparison": 3, "compon": 3, "comput": 14, "concept": 4, "configur": 3, "connect": 3, "contain": [1, 6], "content": [1, 2, 4, 7], "contribut": [0, 4, 5], "convert": [4, 5, 6], "coordin": [12, 14, 16], "copi": [2, 5], "core": [1, 5, 7, 8], "correspond": [6, 14], "could": 5, "cov": 2, "creat": [2, 3, 5, 15, 16], "csp": 17, "cssr": [0, 5, 6], "cubehelix": 3, "current": [5, 6, 14], "current_directori": 5, "d": [3, 6], "dai": 6, "dash": 3, "data": 14, "date": [3, 6], "dcmake_build_typ": 5, "dcmake_disable_find_package_mpi": 5, "dcmake_prefix_path": 5, "deactiv": 5, "decim": 6, "deck": [4, 14, 15, 16], "default": [3, 6], "defin": 12, "definit": 3, "delax": 3, "delet": [3, 6], "depend": [2, 5, 6], "describ": [2, 6], "dev": [2, 5], "develop": 5, "dic": [12, 13, 14, 15, 16], "dict": [12, 13, 14, 15, 16], "dictionari": [12, 13, 14, 15, 16], "diff": 3, "differ": [1, 4, 6], "dim": 6, "dimens": [3, 6], "direct": [3, 6], "directli": 3, "discret": 6, "dism": 6, "divid": [3, 16], "do": 5, "doc": 2, "document": [2, 6], "done": 5, "dopm_enable_python": 5, "dot": [3, 6], "download": 3, "dpi": 3, "dpython_execut": 5, "dry": 15, "due": 5, "dune": 5, "dunecontrol": 5, "duse_mpi": 5, "dvipng": 5, "dwith_ndebug": 5, "dynam": [3, 6, 17], "dz": 6, "e": [3, 5, 6], "each": 6, "easier": 5, "echo": 5, "edg": 5, "egrid": [3, 5], "elax": 6, "els": 5, "email": 2, "emov": 6, "empti": 3, "enabl": 3, "entri": [3, 6, 12], "environ": 5, "equal": 5, "error": 5, "exampl": 4, "except": 6, "execut": [1, 2, 3, 5, 6, 10], "exist": 5, "expans": 17, "exponenti": 6, "export": 5, "exprecc": 4, "extend": 2, "extens": 6, "extra": 5, "f": [3, 6], "face": 5, "familiar": 2, "faster": 5, "fault": [3, 6, 14], "featur": 0, "fgip": [3, 6], "fgipm": [3, 6], "field": [3, 6], "figur": [3, 5, 6, 16], "file": [2, 4, 5, 6, 12, 14, 15], "final": 6, "find": 16, "find_min_max": [8, 11, 16], "fipnum": [3, 6], "first": [3, 5], "fix": 2, "flag": [3, 5, 12, 15], "flexibl": [6, 17], "float": [3, 12, 14, 16], "float32": [3, 6], "float64": [3, 6], "flore": 3, "flow": [2, 3, 4, 6, 10, 14, 15, 17], "fluid": 6, "folder": [1, 2, 3, 5, 6], "follow": [3, 5, 6], "font": [3, 5, 6], "fork": [0, 2], "format": [2, 3, 5, 6], "forth": 3, "found": 5, "four": 6, "fraction": 3, "frame": 6, "framework": [6, 17], "from": [2, 3, 5, 6, 13, 14], "full": 6, "function": [10, 12, 13, 14, 15, 16], "fund": 0, "fwcdm": 6, "g": [3, 5, 6], "ga": [3, 6, 14], "gasm": 6, "gebner": 16, "gener": [2, 4, 6, 15, 16], "geolog": [6, 10, 13, 15, 17], "geometri": 5, "get": [2, 5, 14, 16], "get_fault": [8, 11, 14], "get_flag": [8, 11, 15], "get_quant": [8, 11, 14], "get_read": [8, 11, 14], "get_unit": [8, 11, 14], "get_wel": [8, 11, 14], "get_xycoords_opm": [8, 11, 14], "get_xycoords_resdata": [8, 11, 14], "get_xzcoords_opm": [8, 11, 14], "get_xzcoords_resdata": [8, 11, 14], "get_yzcoords_opm": [8, 11, 14], "get_yzcoords_resdata": [8, 11, 14], "gif": [4, 6], "gigatonn": 0, "git": 5, "github": [2, 5, 6], "gitlab": 5, "give": 3, "given": [3, 6, 12, 14, 15], "global": [3, 6, 12, 13, 14, 15, 16], "grade": 6, "grid": [3, 5, 6, 13, 14, 15], "ground": 4, "h": [3, 6], "h2o": [3, 14], "h2o_l": 14, "h2o_v": 14, "h2om": 6, "ha": 3, "half": 3, "handl": [1, 12, 14, 16], "handle_axi": [8, 11, 16], "handle_mass": [8, 11, 14], "handle_slide_i": [8, 11, 13], "handle_slide_x": [8, 11, 13], "handle_slide_z": [8, 11, 13], "handle_well_or_grid_or_fault": [8, 11, 16], "harmon": 6, "have": 3, "help": [2, 3], "here": 3, "higher": 5, "home": 6, "horda": 17, "host": 6, "hour": 6, "how": 6, "howev": 3, "hpc": 0, "html": 2, "http": [5, 6], "i": [0, 1, 2, 3, 5, 6, 12, 14], "iff": 6, "ignor": 2, "imag": [16, 17], "implement": 6, "import": 2, "inact": 6, "inch": 6, "includ": [3, 5], "increas": 3, "index": [4, 14, 15], "index_i": 6, "indic": 6, "induc": 17, "infin": 6, "inform": 3, "ini_d": [8, 11, 12], "ini_properti": [8, 11, 12], "ini_slid": [8, 11, 12], "ini_summari": [8, 11, 12], "init": [3, 5], "initi": [3, 6, 8, 11], "initialize_mass": [8, 11, 12], "initialize_spati": [8, 11, 12], "initialize_tim": [8, 11, 14], "inject": 3, "input": [4, 6, 12, 14], "insid": [3, 5], "inspect": 6, "instal": [2, 3, 4], "instead": 5, "int": [14, 15, 16], "intens": 14, "interest": [5, 17], "interv": 3, "introduct": 4, "is_summari": [8, 11, 12], "issu": [0, 4], "istl": 5, "j": [6, 14], "j5": 5, "jet": 6, "just": 3, "k": [3, 6, 15, 16], "kei": 12, "kilo": 3, "kilomet": 6, "km": [3, 6], "l": [5, 6], "label": [3, 6, 14, 16], "larg": 5, "larger": 3, "last": 6, "latex": [5, 6], "layer": 3, "leakag": 17, "least": [3, 6], "left": [3, 6], "legend": 6, "let": 3, "librari": [5, 6], "limit": 3, "line": [2, 3, 5, 6], "linestyl": 6, "lint": 5, "linux": 4, "liqm": 6, "liquid": [3, 14], "list": 14, "lnum": 6, "load": [14, 15], "load_pars": [8, 9, 10], "lobal": 6, "loc": 3, "local": 2, "locat": [1, 3, 6, 13, 14], "log": [3, 6], "look": [2, 3], "loop": [3, 6], "lower": [3, 6], "lw": 3, "m": [3, 5, 6, 14], "maco": 4, "macport": 5, "mactex": 5, "main": [1, 2, 8, 9, 10], "maintain": 2, "make": [2, 5], "make_dry_deck": [8, 11, 15], "make_map": [8, 11, 16], "make_summari": [8, 11, 16], "make_vtk": [8, 11, 15], "mamba": 5, "manag": 5, "mantain": 2, "manual": 3, "map": [3, 6, 8, 10, 11, 12, 14, 16], "map_xycoord": [8, 11, 13], "map_xzcoord": [8, 11, 13], "map_yzcoord": [8, 11, 13], "mapit": [8, 11, 16], "mask": [4, 6], "mass": [3, 6, 12, 14], "master": 5, "max": [6, 16], "maximum": 6, "mean": 6, "merg": 2, "mesh": 14, "meter": 6, "method": [1, 14, 16], "micp": [4, 15], "microbi": 17, "microsystem": 17, "middl": 6, "might": [2, 5, 17], "milimet": 6, "milli": 6, "min": [6, 16], "miniforg": 5, "minim": 15, "minimum": 6, "minut": 6, "miss": 2, "mkdir": 5, "mm": 6, "model": [3, 6, 10, 13, 15, 17], "modifi": [5, 12, 13, 14, 16], "modul": [1, 4, 5, 7, 17], "more": [0, 2, 3, 6], "mpi": 5, "mskl": 12, "mt": 6, "must": 3, "mypi": 2, "n": [6, 12, 13, 14, 16], "n_": 16, "name": [6, 14, 16], "need": [2, 5, 12], "new": [0, 2], "nice": [2, 6], "none": [15, 16], "norne_atw2013": 3, "notat": 6, "nrst": 14, "nterval": 6, "num": 6, "number": [0, 3, 6, 14, 16], "o": 6, "object": [12, 16], "obtain": 13, "oc": 6, "og": 6, "one": [3, 6, 12], "ones": 3, "onli": [3, 5], "oop": 6, "open": 17, "oper": [8, 11, 14], "opm": [2, 3, 4, 6, 10, 14, 15, 17], "opmtovtk": [8, 11, 15], "option": [3, 6, 10], "order": 3, "org": 5, "otat": 6, "other": 6, "otherwis": 6, "our": 2, "out": 17, "output": [3, 5, 6, 14], "outsid": [3, 6], "overview": [3, 4], "ow": 6, "own": 2, "p": 6, "packag": [1, 2, 4, 7], "page": [2, 4], "paper": 6, "paraview": [3, 6], "part": 6, "path": [3, 6], "pcolormesh": 16, "per": 6, "perfor": 3, "perform": 15, "permeabl": [3, 6], "permx": 6, "permz": [3, 6], "phase": [3, 14], "physic": 14, "pi": 6, "pip": [2, 5], "place": [3, 6], "plane": [3, 6], "platform": 17, "pleas": [0, 2], "plopm": [2, 3, 5, 6], "plot": [1, 3, 6, 10, 12, 14, 16], "plt": 16, "png": [6, 16], "popul": 15, "pore": 6, "poro": 6, "poros": 6, "porv": 6, "posit": 6, "possibl": [2, 3, 5], "postprocess": 6, "pr": 2, "precipit": 17, "prefer": 2, "prepare_map": [8, 11, 16], "prerequisit": 5, "present": 6, "pressur": 6, "previou": [2, 5], "print": 6, "printv": 3, "problem": 4, "process": 13, "progress": 0, "project": [0, 5, 6, 17], "properti": [3, 6, 12, 13, 15, 16], "pull": [0, 2], "push": 2, "pushd": 2, "pvd": 15, "pvmean": 6, "pwd": 5, "py": 3, "pycopm": 4, "pylint": 2, "pymm": 4, "pyopmnearwel": 4, "pyopmspe11": [3, 4], "pytest": 2, "python": [4, 6, 17], "python3": 5, "pythonpath": 5, "qskl": 14, "quan": [13, 14], "quan1": 14, "quantiti": [3, 6, 14], "quick": 6, "r": [2, 3, 5, 6], "rais": [0, 2], "rang": 6, "ranslat": 6, "rate": 3, "read": [5, 14], "read_summari": [8, 11, 14], "reader": [8, 11], "recommend": 5, "reduc": 3, "regard": 5, "region": 3, "relat": 4, "releas": 5, "reli": 3, "remedi": 17, "remov": [3, 6, 15], "replac": 2, "repo": [2, 5], "report": [3, 4], "repositori": [2, 5], "request": [0, 2, 14], "requier": 13, "requir": [2, 5], "requiri": 12, "resdata": [5, 6, 14], "reservoir": 6, "resourc": [0, 17], "restar": 3, "restart": [3, 6, 14, 16], "result": [3, 6], "return": [12, 13, 14, 15, 16], "review": 2, "rgip": 3, "rintv": 6, "rise": 2, "rock": 3, "rotat": [4, 6, 13], "rotate_grid": [8, 11, 13], "rule": 4, "run": [2, 3, 5, 15], "same": 6, "satnum": [3, 6], "satur": [3, 6], "save": 3, "scale": [3, 6, 12, 14], "script": [1, 2, 5, 10], "search": 4, "second": [3, 6], "see": [2, 3, 5], "seek": 4, "seem": 5, "select": [6, 13], "send": 2, "separ": [3, 6], "set": [3, 6, 12], "setuptool": 5, "sga": 3, "sh": 5, "should": [3, 5], "show": [3, 6], "shown": 3, "simplifi": [6, 17], "simul": [0, 3, 5, 6, 13, 14, 15, 17], "singl": [2, 6], "six": 2, "size": [3, 6], "skip": 5, "skl": 14, "slide": [3, 6, 13], "so": 5, "softwar": [0, 4], "solid": [3, 6], "some": [3, 17], "soon": 2, "sourc": [3, 4, 17], "space": 3, "spatial": [6, 12, 14, 16], "spe10_model2": 3, "spe11": 17, "spe11b": [4, 6], "spe11b_larger_inj": 3, "spe11b_tun": 6, "special": [6, 15], "specif": 5, "specifi": [3, 6], "squash": 2, "src": 2, "standard": 15, "static": [2, 6], "step": [2, 3, 5, 14], "still": 5, "storag": [0, 17], "str": [12, 14, 15, 16], "studi": 17, "style": 3, "subfig": 3, "subfigur": 6, "submodul": [1, 7, 8], "subpackag": [1, 4, 7], "subplot": [3, 6, 16], "substract": 6, "subsurfac": 0, "subsystem": 5, "succe": [2, 3], "sudo": 5, "sum": 6, "summari": [3, 6, 12, 14, 16], "super": 5, "support": [3, 4, 5, 6], "surfac": 6, "sustain": 0, "t": [3, 6, 16], "tab20c_r": 3, "tag": 5, "temp": 3, "temperatur": 3, "term": 2, "termin": [3, 5, 6], "test": [2, 3, 5], "test_generic_deck": 3, "texliv": 5, "text": 6, "than": [0, 2, 3, 5, 6], "thei": 3, "them": [0, 6, 17], "thermal": 15, "thi": [0, 2, 3, 5, 6], "threshold": 6, "tick": 3, "time": [3, 6, 14], "titl": [3, 6], "tkformat": 6, "tkname": 6, "ton": 3, "tool": [3, 5, 6, 17], "top": 3, "total": 3, "tran": 6, "translat": [4, 6], "true": [3, 6, 12], "try": [2, 5], "tug": 5, "tunit": [3, 14], "turn": 5, "tutori": 2, "two": [3, 6], "txt": [2, 5], "type": [3, 5, 6, 12, 14], "type_of_mass": [8, 11, 14], "u": [3, 5, 6], "ubfig": 6, "ubuntu": [2, 5], "uint16": [3, 6], "unit": [3, 6, 12, 14, 16], "unrst": [3, 5], "upgrad": 5, "upper": [3, 6], "uptitl": 6, "us": [0, 2, 3, 5, 6, 12, 14, 15, 16, 17], "user": [2, 5, 6], "util": [1, 7, 8], "utilii": [12, 13, 14, 15, 16], "v": [3, 6], "v2": 5, "v2024": 5, "vairabl": 6, "valu": [6, 12, 14], "vapm": 6, "var": [13, 14, 16], "variabl": [3, 6, 12, 14, 15, 16], "vect": 16, "vector": [3, 6, 14], "venv": 5, "version": [5, 8], "via": [3, 5], "view": 3, "virtual": 5, "visit": 2, "visual": [3, 6], "volum": 6, "vplopm": 5, "vtk": [4, 5, 6, 8, 11], "vtkformat": 3, "w": [3, 6], "warn": 6, "we": [2, 3], "week": [3, 6], "weight": 6, "welcom": [0, 2], "well": [2, 3, 5, 6, 14, 17], "were": 3, "wheel": 5, "when": [3, 5, 6], "where": [3, 6], "which": [5, 6], "while": [3, 5], "white": [3, 6], "whole": 6, "width": [3, 6], "window": 4, "work": [0, 2, 5], "would": 3, "write": [3, 5, 6, 8, 11, 15], "writepvd": [8, 11, 15], "written": [3, 6], "www": 5, "x": [3, 6, 14], "x_g_h2o": 14, "x_l_co2": 14, "xco2l": [3, 6], "xco2v": 6, "xgrid": 6, "xh2ol": 6, "xh2ov": 6, "xlnum": 3, "xunit": 3, "xy": [6, 13, 14], "xz": [3, 6, 13, 14], "y": [3, 6], "year": [3, 6], "yformat": 3, "yml": [2, 5], "you": [2, 3, 5], "your": 2, "yunit": 3, "yz": [13, 14], "z": [3, 6], "zoom": 4}, "titles": ["About plopm", "plopm Python API", "Contributing", "Examples", "Welcome to plopm\u2019s documentation!", "Installation", "Introduction", "plopm", "plopm package", "plopm.core package", "plopm.core.plopm module", "plopm.utils package", "plopm.utils.initialization module", "plopm.utils.mapping module", "plopm.utils.readers module", "plopm.utils.vtk module", "plopm.utils.write module", "Related"], "titleterms": {"": 4, "about": 0, "ad": 17, "api": 1, "build": 5, "concept": 6, "content": [8, 9, 11], "contribut": 2, "convert": 3, "core": [9, 10], "deck": 3, "differ": 3, "document": 4, "exampl": 3, "exprecc": 17, "file": 3, "flow": 5, "gener": 3, "gif": 3, "ground": 2, "indic": 4, "initi": 12, "input": 3, "instal": 5, "introduct": 6, "issu": 2, "linux": 5, "maco": 5, "map": 13, "mask": 3, "micp": 17, "modul": [8, 9, 10, 11, 12, 13, 14, 15, 16], "opm": 5, "overview": 6, "packag": [5, 8, 9, 11], "plopm": [0, 1, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "problem": 2, "pycopm": 17, "pymm": 17, "pyopmnearwel": 17, "pyopmspe11": 17, "python": [1, 5], "reader": 14, "relat": 17, "report": 2, "rotat": 3, "rule": 2, "seek": 2, "softwar": 2, "sourc": 5, "spe11b": 3, "submodul": [9, 11], "subpackag": 8, "support": 2, "tabl": 4, "translat": 3, "util": [11, 12, 13, 14, 15, 16], "vtk": [3, 15], "welcom": 4, "window": 5, "write": 16, "zoom": 3}}) \ No newline at end of file diff --git a/docs/text/introduction.rst b/docs/text/introduction.rst index 839ad43..25ad3a7 100644 --- a/docs/text/introduction.rst +++ b/docs/text/introduction.rst @@ -59,7 +59,7 @@ where -clabel Text for the colorbar ('' by default, i.e., set by plopm). -labels Legend in the summary plot, separated by commas if more than one ('' by default, i.e., set by plopm). -axgrid Set axis.grid to True for the summary plots ('1' by default). --dpi Dots per inch for the figure ('1200' by default). +-dpi Dots per inch for the figure ('500' by default). -xformat Format for the x numbers, e.g., .2e for exponential notation ('' by default, i.e., set by plopm). -yformat Format for the y numbers, e.g., .1f for one decimal ('' by default, i.e., set by plopm). -cformat Specify the format for the numbers in the colormap, e.g., .2f for two decimals ('' by default, i.e., set by plopm). @@ -72,7 +72,7 @@ where -rotate Grades to rotate the grid in the 2D maps ('0' by default). -translate Translate the grid in the 2D maps x,y directions ('[0,0]' by default). -global Min and max in the colorbars from the current 2D slide values (0) or whole 3D model '1' ('0' by default). --how Show the cells for the wells/faults when at least one cell contains them ('min') or when all cells are part of the given slides range ('max') ('min' by default). +-how Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, 'min' show the cells when at least one cell contains them or 'max' when all cells are part of the given slide/slides range. The supported options are 'min', 'max', 'sum', 'mean', 'pvmean', 'harmonic', 'arithmetic'. ('' by default, i.e., the defaults as described above). -ncolor Color for the inactive cells in the 2D maps ('w' by default, i.e., white). -lw Line width separated by commas if more than one ('1' by default). -subfigs Generate separated or a single Figure (e.g., '2,2' for four subfigures) ('' by default, i.e., separate figures). diff --git a/src/plopm/core/plopm.py b/src/plopm/core/plopm.py index c1da038..776d210 100755 --- a/src/plopm/core/plopm.py +++ b/src/plopm/core/plopm.py @@ -243,8 +243,8 @@ def load_parser(): parser.add_argument( "-dpi", "--dpi", - default="1200", - help="Dots per inch for the figure ('1200' by default).", + default="500", + help="Dots per inch for the figure ('500' by default).", ) parser.add_argument( "-xformat", @@ -329,10 +329,17 @@ def load_parser(): parser.add_argument( "-how", "--how", - default="min", - help="Show the cells for the wells/faults when at least one cell contains them " - "('min') or when all cells are part of the given slide/slides range ('max') " - "('min' by default).", + default="", + help="Select how to project the given variable (-v) in a slide range (-s). " + "By default the variables are pore volume weighted averaged along the range " + "except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; " + "cell indices (e.g., index_i) which show the discrete value; harmonic average and " + "arithmetic average for permeabilities depending on the slide range direction using " + "the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); " + "for wells/faults, 'min' show the cells when at least one cell contains them " + "or 'max' when all cells are part of the given slide/slides range. The supported " + "options are 'min', 'max', 'sum', 'mean', 'pvmean', 'harmonic', 'arithmetic'. ('' by " + "default, i.e., the defaults as described above).", ) parser.add_argument( "-ncolor", diff --git a/src/plopm/utils/initialization.py b/src/plopm/utils/initialization.py index 71d71dd..e23cd32 100755 --- a/src/plopm/utils/initialization.py +++ b/src/plopm/utils/initialization.py @@ -91,13 +91,13 @@ def ini_dic(cmdargs): dic["rotate"] = (cmdargs["rotate"].strip()).split(",") dic["global"] = int(cmdargs["global"]) dic["latex"] = int(cmdargs["latex"]) - dic["how"] = cmdargs["how"].strip() dic["save"] = (cmdargs["save"].strip()).split(" ") dic["translate"] = (cmdargs["translate"]).split(" ") dic["translate"] = [var.split(",") for var in dic["translate"]] dic["restart"] = (cmdargs["restart"].strip()).split(",") dic["cbsfax"] = [float(val) for val in (cmdargs["cbsfax"].strip()).split(",")] dic["nwells"], dic["lwells"] = 0, [] + dic["how"] = (cmdargs["how"].strip()).split(",") for i in ["x", "y"]: dic[f"{i}units"] = cmdargs[f"{i}units"].strip() dic[f"{i}label"] = (cmdargs[f"{i}label"].strip()).split(" ") @@ -212,6 +212,10 @@ def ini_dic(cmdargs): dic["slide"] = [dic["slide"][0]] * 2 elif len(dic["slide"]) < max(len(dic["names"][0]), len(dic["vrs"])): dic["slide"] = [dic["slide"][0]] * max(len(dic["names"][0]), len(dic["vrs"])) + if len(dic["how"]) < max(len(dic["names"][0]), len(dic["vrs"])): + dic["how"] = [dic["how"][0]] * max(len(dic["names"][0]), len(dic["vrs"])) + if dic["diff"]: + dic["how"] = [dic["how"][0]] * 2 for val in [ "xformat", "yformat", @@ -395,6 +399,16 @@ def ini_properties(dic): dic["cmaps"] = ["RdYlGn"] elif dic["mask"]: dic["cmaps"] = ["RdGy_r"] + if dic["vrs"][0] == "wells" or dic["vrs"][0] == "faults": + if dic["how"][0]: + if dic["how"][0] not in ["min", "max"]: + print(f"Unsuported value -how '{dic['how'][0]}' for wells/faults. ") + print("Supported values are 'min' and 'max'.") + sys.exit() + else: + dic["whow"] = dic["how"][0] + else: + dic["whow"] = "min" if dic["vrs"]: if (dic["vrs"][0] == "wells" or dic["vrs"][0] == "faults") and not dic[ "colors" diff --git a/src/plopm/utils/mapping.py b/src/plopm/utils/mapping.py index eb1d87f..9a723e7 100644 --- a/src/plopm/utils/mapping.py +++ b/src/plopm/utils/mapping.py @@ -1,6 +1,6 @@ # SPDX-FileCopyrightText: 2024 NORCE # SPDX-License-Identifier: GPL-3.0 -# pylint: disable=R1702,R0912,C0325,R0914 +# pylint: disable=R1702,R0912,C0325,R0914,R0915 """ Utiliy function for the grid and locations in the geological models. @@ -136,13 +136,57 @@ def map_xzcoords(dic, var, quan, n): """ for k in range(dic["nz"]): for i in range(dic["nx"]): - p_v, val = 0.0, 0.0 + p_v, val, d_y = 0.0, 0.0, 0.0 + if dic["how"][n] == "min": + val = np.inf + if dic["how"][n] == "max": + val = -np.inf for sld in range(dic["slide"][n][1][0], dic["slide"][n][1][1]): ind = i + sld * dic["nx"] + k * dic["nx"] * dic["ny"] if dic["porv"][ind] > 0: - if var.lower() in dic["mass"] or var.lower() == "porv": + if dic["how"][n] and not ( + dic["vrs"][0] == "wells" or dic["vrs"][0] == "faults" + ): + if dic["how"][n] == "min": + p_v = 1.0 + val = min(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "max": + p_v = 1.0 + val = max(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "sum": + p_v = 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "mean": + p_v += 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "pvmean": + p_v += dic["porv"][ind] + val += quan[dic["actind"][ind]] * dic["porv"][ind] + elif dic["how"][n] == "harmonic": + d_y += dic["dy"][dic["actind"][ind]] + val += ( + dic["dy"][dic["actind"][ind]] / quan[dic["actind"][ind]] + ) + elif dic["how"][n] == "arithmetic": + p_v += dic["dy"][dic["actind"][ind]] + val += ( + quan[dic["actind"][ind]] * dic["dy"][dic["actind"][ind]] + ) + elif var.lower() in dic["mass"] or var.lower() in [ + "porv", + "dy", + "tranx", + "tranz", + ]: p_v = 1.0 val += quan[dic["actind"][ind]] + elif var.lower() in ["permx", "permz"]: + p_v += dic["dy"][dic["actind"][ind]] + val += quan[dic["actind"][ind]] * dic["dy"][dic["actind"][ind]] + elif var.lower() == "permy": + p_v = 1 + d_z += dic["dy"][dic["actind"][ind]] + val += dic["dy"][dic["actind"][ind]] / quan[dic["actind"][ind]] elif var.lower() == "grid": p_v = 1 val = 1 @@ -164,9 +208,16 @@ def map_xzcoords(dic, var, quan, n): else: p_v += dic["porv"][ind] val += quan[dic["actind"][ind]] * dic["porv"][ind] - dic[var + "a"][2 * i + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( - np.nan if p_v == 0 else val / p_v - ) + if dic["how"][n] == "harmonic" or ( + not dic["how"][n] and var.lower() == "permy" + ): + dic[var + "a"][2 * i + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( + np.nan if p_v == 0 else d_y / val + ) + else: + dic[var + "a"][2 * i + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( + np.nan if p_v == 0 else val / p_v + ) for i, wells in enumerate(dic["wells"]): for well in wells: if well: @@ -216,13 +267,57 @@ def map_yzcoords(dic, var, quan, n): """ for k in range(dic["nz"]): for j in range(dic["ny"]): - p_v, val = 0.0, 0.0 + p_v, val, d_x = 0.0, 0.0, 0.0 + if dic["how"][n] == "min": + val = np.inf + if dic["how"][n] == "max": + val = -np.inf for sld in range(dic["slide"][n][0][0], dic["slide"][n][0][1]): ind = sld + j * dic["nx"] + k * dic["nx"] * dic["ny"] if dic["porv"][ind] > 0: - if var.lower() in dic["mass"] or var.lower() == "porv": + if dic["how"][n] and not ( + dic["vrs"][0] == "wells" or dic["vrs"][0] == "faults" + ): + if dic["how"][n] == "min": + p_v = 1.0 + val = min(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "max": + p_v = 1.0 + val = max(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "sum": + p_v = 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "mean": + p_v += 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "pvmean": + p_v += dic["porv"][ind] + val += quan[dic["actind"][ind]] * dic["porv"][ind] + elif dic["how"][n] == "harmonic": + d_x += dic["dx"][dic["actind"][ind]] + val += ( + dic["dx"][dic["actind"][ind]] / quan[dic["actind"][ind]] + ) + elif dic["how"][n] == "arithmetic": + p_v += dic["dx"][dic["actind"][ind]] + val += ( + quan[dic["actind"][ind]] * dic["dx"][dic["actind"][ind]] + ) + elif var.lower() in dic["mass"] or var.lower() in [ + "porv", + "dx", + "trany", + "tranz", + ]: p_v = 1.0 val += quan[dic["actind"][ind]] + elif var.lower() in ["permy", "permz"]: + p_v += dic["dx"][dic["actind"][ind]] + val += quan[dic["actind"][ind]] * dic["dx"][dic["actind"][ind]] + elif var.lower() == "permx": + p_v = 1 + d_x += dic["dx"][dic["actind"][ind]] + val += dic["dx"][dic["actind"][ind]] / quan[dic["actind"][ind]] elif var.lower() == "grid": p_v = 1 val = 1 @@ -244,9 +339,16 @@ def map_yzcoords(dic, var, quan, n): else: p_v += dic["porv"][ind] val += quan[dic["actind"][ind]] * dic["porv"][ind] - dic[var + "a"][2 * j + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( - np.nan if p_v == 0 else val / p_v - ) + if dic["how"][n] == "harmonic" or ( + not dic["how"][n] and var.lower() == "permx" + ): + dic[var + "a"][2 * j + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( + np.nan if p_v == 0 else d_x / val + ) + else: + dic[var + "a"][2 * j + 2 * (dic["nz"] - k - 1) * dic["mx"]] = ( + np.nan if p_v == 0 else val / p_v + ) for i, wells in enumerate(dic["wells"]): for well in wells: if well: @@ -296,13 +398,57 @@ def map_xycoords(dic, var, quan, n): """ for j in range(dic["ny"]): for i in range(dic["nx"]): - p_v, val = 0.0, 0.0 + p_v, val, d_z = 0.0, 0.0, 0.0 + if dic["how"][n] == "min": + val = np.inf + if dic["how"][n] == "max": + val = -np.inf for sld in range(dic["slide"][n][2][0], dic["slide"][n][2][1]): ind = i + j * dic["nx"] + sld * dic["nx"] * dic["ny"] if dic["porv"][ind] > 0: - if var.lower() in dic["mass"] or var.lower() == "porv": + if dic["how"][n] and not ( + dic["vrs"][0] == "wells" or dic["vrs"][0] == "faults" + ): + if dic["how"][n] == "min": + p_v = 1.0 + val = min(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "max": + p_v = 1.0 + val = max(val, quan[dic["actind"][ind]]) + elif dic["how"][n] == "sum": + p_v = 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "mean": + p_v += 1.0 + val += quan[dic["actind"][ind]] + elif dic["how"][n] == "pvmean": + p_v += dic["porv"][ind] + val += quan[dic["actind"][ind]] * dic["porv"][ind] + elif dic["how"][n] == "harmonic": + d_z += dic["dz"][dic["actind"][ind]] + val += ( + dic["dz"][dic["actind"][ind]] / quan[dic["actind"][ind]] + ) + elif dic["how"][n] == "arithmetic": + p_v += dic["dz"][dic["actind"][ind]] + val += ( + quan[dic["actind"][ind]] * dic["dz"][dic["actind"][ind]] + ) + elif var.lower() in dic["mass"] or var.lower() in [ + "porv", + "dz", + "tranx", + "trany", + ]: p_v = 1.0 val += quan[dic["actind"][ind]] + elif var.lower() in ["permx", "permy"]: + p_v += dic["dz"][dic["actind"][ind]] + val += quan[dic["actind"][ind]] * dic["dz"][dic["actind"][ind]] + elif var.lower() == "permz": + p_v = 1 + d_z += dic["dz"][dic["actind"][ind]] + val += dic["dz"][dic["actind"][ind]] / quan[dic["actind"][ind]] elif var.lower() == "grid": p_v = 1 val = 1 @@ -324,9 +470,16 @@ def map_xycoords(dic, var, quan, n): else: p_v += dic["porv"][ind] val += quan[dic["actind"][ind]] * dic["porv"][ind] - dic[var + "a"][2 * i + 2 * j * dic["mx"]] = ( - np.nan if p_v == 0 else val / p_v - ) + if dic["how"][n] == "harmonic" or ( + not dic["how"][n] and var.lower() == "permz" + ): + dic[var + "a"][2 * i + 2 * j * dic["mx"]] = ( + np.nan if p_v == 0 else d_z / val + ) + else: + dic[var + "a"][2 * i + 2 * j * dic["mx"]] = ( + np.nan if p_v == 0 else val / p_v + ) for i, wells in enumerate(dic["wells"]): for _, well in enumerate(wells): if well: diff --git a/src/plopm/utils/readers.py b/src/plopm/utils/readers.py index a94c31b..a71f29a 100644 --- a/src/plopm/utils/readers.py +++ b/src/plopm/utils/readers.py @@ -421,6 +421,9 @@ def get_readers(dic): dic["ntot"] = 1 if dic["use"] == "resdata": dic["porv"] = np.array(dic["init"]["PORV"][0]) + dic["dx"] = np.array(dic["init"]["DX"][0]) + dic["dy"] = np.array(dic["init"]["DY"][0]) + dic["dz"] = np.array(dic["init"]["DZ"][0]) dic["nxyz"] = len(dic["porv"]) dic["pv"] = np.array([porv for porv in dic["porv"] if porv > 0]) dic["actind"] = np.cumsum([1 if porv > 0 else 0 for porv in dic["porv"]]) - 1 @@ -434,6 +437,9 @@ def get_readers(dic): dic["nz"] = dic["egrid"].nz else: dic["porv"] = np.array(dic["init"]["PORV"]) + dic["dx"] = np.array(dic["init"]["DX"]) + dic["dy"] = np.array(dic["init"]["DY"]) + dic["dz"] = np.array(dic["init"]["DZ"]) dic["nxyz"] = len(dic["porv"]) dic["pv"] = np.array([porv for porv in dic["porv"] if porv > 0]) dic["actind"] = np.cumsum([1 if porv > 0 else 0 for porv in dic["porv"]]) - 1 @@ -465,10 +471,12 @@ def get_unit(name): if name.lower() in ["disperc", "depth", "dx", "dy", "dz"]: unit = " [m]" elif name.lower() in ["porv"]: - unit = r" [m$^3$]" + unit = r" [sm$^3$]" elif name.lower() in ["permx", "permy", "permz"]: unit = " [mD]" - elif name.lower() in ["pressure"]: + elif name.lower() in ["tranx", "trany", "tranz"]: + unit = " [cP rm$^3$/ (day bar)]" + elif name.lower() in ["pressure", "rpr", "fpr", "fprr", "wbhp"]: unit = " [bar]" elif name.lower() in ["fgip", "fgit"]: unit = " [sm$^3$]" @@ -733,7 +741,7 @@ def get_wells(dic, n): if dic["slide"][n][0][0] > -1: for i, wells in enumerate(dic["wells"]): for j, well in enumerate(wells): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][0][0], dic["slide"][n][0][1]): if well[0] == sld: @@ -748,7 +756,7 @@ def get_wells(dic, n): elif dic["slide"][n][1][0] > -1: for i, wells in enumerate(dic["wells"]): for j, well in enumerate(wells): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][1][0], dic["slide"][n][1][1]): if well[1] == sld: @@ -763,7 +771,7 @@ def get_wells(dic, n): else: for i, wells in enumerate(dic["wells"]): for j, well in enumerate(wells): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][2][0], dic["slide"][n][2][1]): if sld in range(well[2], well[3] + 1): @@ -824,7 +832,7 @@ def get_faults(dic, n): if dic["slide"][n][0][0] > -1: for i, faults in enumerate(dic["faults"]): for j, fault in enumerate(faults): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][0][0], dic["slide"][n][0][1]): if fault[0] == sld: @@ -839,7 +847,7 @@ def get_faults(dic, n): elif dic["slide"][n][1][0] > -1: for i, faults in enumerate(dic["faults"]): for j, fault in enumerate(faults): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][1][0], dic["slide"][n][1][1]): if fault[1] == sld: @@ -854,7 +862,7 @@ def get_faults(dic, n): else: for i, faults in enumerate(dic["faults"]): for j, fault in enumerate(faults): - if dic["how"] == "min": + if dic["whow"] == "min": count = 0 for sld in range(dic["slide"][n][2][0], dic["slide"][n][2][1]): if sld in range(fault[2], fault[3] + 1): diff --git a/src/plopm/utils/write.py b/src/plopm/utils/write.py index d2ff8f6..57c0e4c 100644 --- a/src/plopm/utils/write.py +++ b/src/plopm/utils/write.py @@ -417,6 +417,8 @@ def find_min_max(dic): map_xycoords(dic, var, quan, n) if dic["diff"]: dic[var + "a"] -= dic["diffa"][t] + if int(dic["log"][m]) == 1: + dic[var + "a"][dic[var + "a"] <= 0] = np.nan dic["minc"][-2] = min( dic["minc"][-2], dic[var + "a"][~np.isnan(dic[var + "a"])].min() ) @@ -537,7 +539,7 @@ def mapits(dic, t, n, k): ): minc = dic["minc"][n] maxc = dic["maxc"][n] - elif dic["mode"] == "gif" and not dic["subfigs"][0]: + elif dic["mode"] == "gif" and not dic["subfigs"][0] or int(dic["log"][n]) == 1: minc = dic["minc"][n] maxc = dic["maxc"][n] elif dic["global"] == 0: @@ -549,7 +551,7 @@ def mapits(dic, t, n, k): if dic["bounds"][n][0]: minc = float(dic["bounds"][n][0][1:]) maxc = float(dic["bounds"][n][1][:-1]) - elif dic["diff"]: + elif dic["diff"] and int(dic["log"][n]) == 0: minmax = max(abs(maxc), abs(minc)) minc = -minmax maxc = minmax @@ -706,12 +708,6 @@ def mapits(dic, t, n, k): location="top", ) else: - if minc == 0: - print( - f"It is not possible to plot {var} in log scale" - " since there are 0 values. Try without log." - ) - sys.exit() if dic["subfigs"][0]: dic["cb"][k] = dic["fig"].colorbar( imag, @@ -947,8 +943,8 @@ def handle_axis(dic, name, n, t, k, n_s, unit): [float(dic["xlim"][n][0][1:]), float(dic["xlim"][n][1][:-1])] ) xlabels = np.linspace( - float(dic["xlim"][n][0][1:]), - float(dic["xlim"][n][1][:-1]), + float(dic["xlim"][n][0][1:]) * dic["xskl"], + float(dic["xlim"][n][1][:-1]) * dic["xskl"], int(dic["xlnum"][n]), ) else: @@ -972,8 +968,8 @@ def handle_axis(dic, name, n, t, k, n_s, unit): [float(dic["ylim"][n][0][1:]), float(dic["ylim"][n][1][:-1])] ) ylabels = np.linspace( - float(dic["ylim"][n][0][1:]), - float(dic["ylim"][n][1][:-1]), + float(dic["ylim"][n][0][1:]) * dic["yskl"], + float(dic["ylim"][n][1][:-1]) * dic["yskl"], int(dic["ylnum"][n]), ) else: