diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 91a22d8..36fab6d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -7,46 +7,37 @@ jobs: run-pofff-local: permissions: contents: read - pull-requests: write timeout-minutes: 60 runs-on: ubuntu-26.04 steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Set up Python 3.14 - uses: actions/setup-python@v2 - with: - python-version: 3.14 + - uses: actions/checkout@v5 - name: Install Flow Simulator run: | sudo apt-get update - sudo apt-get install software-properties-common + sudo apt-get install software-properties-common mpi-default-bin sudo apt-add-repository ppa:opm/ppa sudo apt-get update - sudo apt-get install mpi-default-bin sudo apt-get install libopm-simulators-bin - - name: Install plotting (LaTeX) and ert dependencies + - name: Install (optional but recommended) plotting (LaTeX) and ert dependencies run: | sudo apt-get install texlive-fonts-recommended texlive-fonts-extra dvipng cm-super sudo apt-get install freeglut3-dev - - name: Install Python dependecies + - name: Install pofff and python requirements run: | + python3.14 -m venv vpofff + . vpofff/bin/activate + echo "$PWD/vpofff/bin" >> $GITHUB_PATH pip install --upgrade pip setuptools wheel - pip install -r dev-requirements.txt - - - name: Install pofff - run: | pip install . + pip install -r dev-requirements.txt - name: Check code style and linting run: | - black --target-version py312 src/ tests/ publication/ --check + black --target-version py314 src/ tests/ publication/ --check pylint src/ tests/ publication/ ruff check src/ tests/ publication/ mypy --ignore-missing-imports src/ tests/ publication/ @@ -58,4 +49,4 @@ jobs: - name: Build documentation run: | pushd docs - make html + make html SPHINXOPTS="-W" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dd7c52c..899e5e3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ Contributions are more than welcome using the fork and pull request approach 1. Work on your own fork of the main repo 1. In the main repo execute: 1. **pip install -r dev-requirements.txt** (this installs the [_dev-requirements.txt_](https://github.com/cssr-tools/pofff/blob/main/dev-requirements.txt)) - 1. **black --target-version py312 src/ tests/ publication/** (this formats the code) + 1. **black --target-version py314 src/ tests/ publication/** (this formats the code) 1. **pylint src/ tests/ publication/** (this analyses the code, and might rise issues that need to be fixed before the pull request) 1. **ruff check src/ tests/ publication/** (this also analyses the code, and might rise issues that need to be fixed before the pull request) 1. **mypy --ignore-missing-imports src/ tests/ publication/** (this is a static checker, and might rise issues that need to be fixed before the pull request) diff --git a/docs/_sources/contributing.rst.txt b/docs/_sources/contributing.rst.txt index a6b013b..4fcc813 100644 --- a/docs/_sources/contributing.rst.txt +++ b/docs/_sources/contributing.rst.txt @@ -23,7 +23,7 @@ Contribute to the software #. In the main repo execute: #. **pip install -r dev-requirements.txt** (this installs the `dev-requirements.txt `_) - #. **black \-\-target-version py312 src/ tests/ publication/** (this formats the code) + #. **black \-\-target-version py314 src/ tests/ publication/** (this formats the code) #. **pylint src/ tests/ publication/** (this analyses the code, and might rise issues that need to be fixed before the pull request) #. **ruff check src/ tests/ publication/** (this also analyses the code, and might rise issues that need to be fixed before the pull request) #. **mypy \-\-ignore-missing-imports src/ tests/** (this is a static checker, and might rise issues that need to be fixed before the pull request) diff --git a/docs/_sources/installation.rst.txt b/docs/_sources/installation.rst.txt index b59cba8..ef29fab 100644 --- a/docs/_sources/installation.rst.txt +++ b/docs/_sources/installation.rst.txt @@ -14,7 +14,9 @@ supported Python versions are 3.12 to 3.14. .. code-block:: bash - brew install cssr-tools/opm/resinsight + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/resinsight -y Then, you should be able to open resinsight by typing in the terminal **resinsight**. @@ -128,11 +130,13 @@ Brew formula for macOS ++++++++++++++++++++++ For macOS, there are no available binary packages, so OPM Flow needs to be built from source. Recently, a formula to build flow using brew has been added in `https://github.com/cssr-tools/homebrew-opm `_. -Then, you can try to install flow (v2026.02) by simply typing: +Then, you can try to install flow (v2026.07 interim release) by simply typing: .. code-block:: console - brew install cssr-tools/opm/opm-simulators + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/opm-simulators -y You can check if the installation of OPM Flow succeded by typing in the terminal **flow \-\-help**. diff --git a/docs/contributing.html b/docs/contributing.html index 595d12e..144f60e 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -109,7 +109,7 @@

Contribute to the software
  • pip install -r dev-requirements.txt (this installs the dev-requirements.txt)

  • -
  • black --target-version py312 src/ tests/ publication/ (this formats the code)

  • +
  • black --target-version py314 src/ tests/ publication/ (this formats the code)

  • pylint src/ tests/ publication/ (this analyses the code, and might rise issues that need to be fixed before the pull request)

  • ruff check src/ tests/ publication/ (this also analyses the code, and might rise issues that need to be fixed before the pull request)

  • mypy --ignore-missing-imports src/ tests/ (this is a static checker, and might rise issues that need to be fixed before the pull request)

  • diff --git a/docs/installation.html b/docs/installation.html index 8c1068e..f90d953 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -100,7 +100,9 @@

    Installation

    Note

    There are binary packages for Linux and Windows to install Resinsight, see the ResInsight Documentation. For macOS users, you could try to install it using brew by executing:

    -
    brew install cssr-tools/opm/resinsight
    +
    brew tap cssr-tools/opm
    +brew trust cssr-tools/opm
    +brew install cssr-tools/opm/resinsight -y
     

    Then, you should be able to open resinsight by typing in the terminal resinsight.

    @@ -198,8 +200,10 @@

    Source build in Linux/Windows

    Brew formula for macOS

    For macOS, there are no available binary packages, so OPM Flow needs to be built from source. Recently, a formula to build flow using brew has been added in https://github.com/cssr-tools/homebrew-opm. -Then, you can try to install flow (v2026.02) by simply typing:

    -
    brew install cssr-tools/opm/opm-simulators
    +Then, you can try to install flow (v2026.07 interim release) by simply typing:

    +
    brew tap cssr-tools/opm
    +brew trust cssr-tools/opm
    +brew install cssr-tools/opm/opm-simulators -y
     

    You can check if the installation of OPM Flow succeded by typing in the terminal flow --help.

    diff --git a/docs/pofff.config.config.html b/docs/pofff.config.config.html index 0ecb1fb..b02f9f1 100644 --- a/docs/pofff.config.config.html +++ b/docs/pofff.config.config.html @@ -154,13 +154,13 @@
    -class pofff.config.config.PofffConfig(path: Path, fol: Path = PosixPath('output'), deck: Path = PosixPath('output'), jobs: Path = PosixPath('output'), experiment: str = 'run2', times: str = '0.25', msat: str = '1e-2', mcon: str = '1e-1', mode: str = 'single', figures: str = 'basic', location: str = '', use: str = '1', flow: str = 'flow', grid: str = 'corner-point', thickness: str = 'final', mult_thickness: float = 1.0, x: List[int] = <factory>, z: List[int] = <factory>, temperature: List[float] = <factory>, pressure: float = 0.0, diffusion: ndarray = <factory>, sources: List[List[float]] = <factory>, inj: List[List[Any]] = <factory>, krw: str = '(max(0, (sw - swi) / (1 - swi))) ** nkrw', krn: str = '(max(0, (1 - sw - sni) / (1 - sni))) ** nkrn', cap: str = 'pen * ((sw-swi) / (1-swi)) ** (-(1.0 / npen))', cores: int | None = None, maxtime: float | None = None, delete: bool | None = None, ertargs: str | None = None, ensembles: int | None = None, enkf_alpha: float | None = None, errors: ndarray | None = None, random_seed: int | None = None, min_realizations_success: int | None = None, max_function_evaluations: int | None = None, max_batch_num: int | None = None, args: Any, ...] | None=None, strategy: str | None = None, maxiter: int | None = None, popsize: int | None = None, tol: float | None = None, mutation: float | ~typing.Tuple[float, float] | None=None, recombination: float | None = None, rng: Any | None = None, callback: Callable | None = None, disp: bool | None = None, polish: bool | None = None, init: str | None = None, atol: float | None = None, updating: str | None = None, workers: int | None = None, constraints: Iterable[Any] | None = None, x0: Sequence[float] | None = None, integrality: Sequence[bool] | None = None, vectorized: bool | None = None, facies: list[int] = <factory>, fluxnum: list[str] = <factory>, fipnum: list[str] = <factory>, porv: list[str] = <factory>, multpv: list[str] = <factory>, dx: list | None = <factory>, dz: list | None = <factory>, dims: List[float] = <factory>, sensors: List[List[float]] = <factory>, sensor_ik: List[List[int]] = <factory>, source_ik: List[List[int]] = <factory>, boxa: List[List[float]] = <factory>, boxb: List[List[float]] = <factory>, boxc: List[List[float]] = <factory>, hm: Dict[str, ~typing.Any]=<factory>, monotonic: bool = False, hascellmaps: bool = False, everert: bool = False, tuning: bool = False, para: Dict[str, ~typing.Any]=<factory>, nxz: List[int] = <factory>, data: str | None = None)
    +class pofff.config.config.PofffConfig(path: Path, fol: Path = PosixPath('output'), deck: Path = PosixPath('output'), jobs: Path = PosixPath('output'), experiment: str = 'run2', times: str = '0.25', msat: str = '1e-2', mcon: str = '1e-1', mode: str = 'single', figures: str = 'basic', location: str = '', use: str = '1', flow: str = 'flow', grid: str = 'corner-point', thickness: str = 'final', mult_thickness: float = 1.0, x: list[int] = <factory>, z: list[int] = <factory>, temperature: list[float] = <factory>, pressure: float = 0.0, diffusion: ndarray = <factory>, sources: list[list[float]] = <factory>, inj: list[list[Any]] = <factory>, krw: str = '(max(0, (sw - swi) / (1 - swi))) ** nkrw', krn: str = '(max(0, (1 - sw - sni) / (1 - sni))) ** nkrn', cap: str = 'pen * ((sw-swi) / (1-swi)) ** (-(1.0 / npen))', cores: int | None = None, maxtime: float | None = None, delete: bool | None = None, ertargs: str | None = None, ensembles: int | None = None, enkf_alpha: float | None = None, errors: ndarray | None = None, random_seed: int | None = None, min_realizations_success: int | None = None, max_function_evaluations: int | None = None, max_batch_num: int | None = None, args: tuple[~typing.Any, ...] | None=None, strategy: str | None = None, maxiter: int | None = None, popsize: int | None = None, tol: float | None = None, mutation: float | tuple[float, float] | None=None, recombination: float | None = None, rng: Any | None = None, callback: Callable | None = None, disp: bool | None = None, polish: bool | None = None, init: str | None = None, atol: float | None = None, updating: str | None = None, workers: int | None = None, constraints: Iterable[Any] | None = None, x0: Sequence[float] | None = None, integrality: Sequence[bool] | None = None, vectorized: bool | None = None, facies: list[int] = <factory>, fluxnum: list[str] = <factory>, fipnum: list[str] = <factory>, porv: list[str] = <factory>, multpv: list[str] = <factory>, dx: list | None = <factory>, dz: list | None = <factory>, dims: list[float] = <factory>, sensors: list[list[float]] = <factory>, sensor_ik: list[list[int]] = <factory>, source_ik: list[list[int]] = <factory>, boxa: list[list[float]] = <factory>, boxb: list[list[float]] = <factory>, boxc: list[list[float]] = <factory>, hm: dict[str, ~typing.Any]=<factory>, monotonic: bool = False, hascellmaps: bool = False, everert: bool = False, tuning: bool = False, para: dict[str, ~typing.Any]=<factory>, nxz: list[int] = <factory>, data: str | None = None)

    Bases: object

    Central configuration object for pofff.

    Combines CLI options, TOML inputs, and derived runtime settings.

    -args: Tuple[Any, ...] | None
    +args: tuple[Any, ...] | None
    @@ -170,17 +170,17 @@
    -boxa: List[List[float]]
    +boxa: list[list[float]]
    -boxb: List[List[float]]
    +boxb: list[list[float]]
    -boxc: List[List[float]]
    +boxc: list[list[float]]
    @@ -225,7 +225,7 @@
    -dims: List[float]
    +dims: list[float]
    @@ -315,7 +315,7 @@
    -hm: Dict[str, Any]
    +hm: dict[str, Any]
    @@ -325,7 +325,7 @@
    -inj: List[List[Any]]
    +inj: list[list[Any]]
    @@ -410,17 +410,17 @@
    -mutation: float | Tuple[float, float] | None
    +mutation: float | tuple[float, float] | None
    -nxz: List[int]
    +nxz: list[int]
    -para: Dict[str, Any]
    +para: dict[str, Any]
    @@ -465,22 +465,22 @@
    -sensor_ik: List[List[int]]
    +sensor_ik: list[list[int]]
    -sensors: List[List[float]]
    +sensors: list[list[float]]
    -source_ik: List[List[int]]
    +source_ik: list[list[int]]
    -sources: List[List[float]]
    +sources: list[list[float]]
    @@ -490,7 +490,7 @@
    -temperature: List[float]
    +temperature: list[float]
    @@ -535,7 +535,7 @@
    -x: List[int]
    +x: list[int]
    @@ -545,7 +545,7 @@
    -z: List[int]
    +z: list[int]
    diff --git a/docs/pofff.visualization.everert.html b/docs/pofff.visualization.everert.html index b4fc4ae..7601e03 100644 --- a/docs/pofff.visualization.everert.html +++ b/docs/pofff.visualization.everert.html @@ -90,7 +90,7 @@ Generates diagnostics, plots, and extracts best simulations.

    -class pofff.visualization.everert.Config(path: Path, times: str, jobs: List[str], external: Path, run: str, maps: Path, min_saturation: float, min_concentration: float)
    +class pofff.visualization.everert.Config(path: Path, times: str, jobs: list[str], external: Path, run: str, maps: Path, min_saturation: float, min_concentration: float)

    Bases: object

    Runtime configuration and paths.

    @@ -100,7 +100,7 @@
    -jobs: List[str]
    +jobs: list[str]
    @@ -137,22 +137,22 @@
    -class pofff.visualization.everert.EnsembleState(observations: ndarray, n_e: int, n_i: int, no_obs: int, no_para: int, simulations: List[List[list]] = <factory>, sim_ens: List[List[float]] = <factory>, miss_ens: List[List[float]] = <factory>, par_dis: List[List[float]] = <factory>, idrealisation: List[List[int]] = <factory>, num_ens: List[int] = <factory>, cumulative: List[List[List[float]]] = <factory>, para_file: Path | None = None, para_names: List[str] = <factory>)
    +class pofff.visualization.everert.EnsembleState(observations: ndarray, n_e: int, n_i: int, no_obs: int, no_para: int, simulations: list[list[list]] = <factory>, sim_ens: list[list[float]] = <factory>, miss_ens: list[list[float]] = <factory>, par_dis: list[list[float]] = <factory>, idrealisation: list[list[int]] = <factory>, num_ens: list[int] = <factory>, cumulative: list[list[list[float]]] = <factory>, para_file: Path | None = None, para_names: list[str] = <factory>)

    Bases: object

    Holds ensemble simulations and diagnostics.

    -cumulative: List[List[List[float]]]
    +cumulative: list[list[list[float]]]
    -idrealisation: List[List[int]]
    +idrealisation: list[list[int]]
    -miss_ens: List[List[float]]
    +miss_ens: list[list[float]]
    @@ -177,7 +177,7 @@
    -num_ens: List[int]
    +num_ens: list[int]
    @@ -187,7 +187,7 @@
    -par_dis: List[List[float]]
    +par_dis: list[list[float]]
    @@ -197,24 +197,24 @@
    -para_names: List[str]
    +para_names: list[str]
    -sim_ens: List[List[float]]
    +sim_ens: list[list[float]]
    -simulations: List[List[list]]
    +simulations: list[list[list]]
    -class pofff.visualization.everert.OptimizationState(optimization: List[float] = <factory>, optimal_value: float = -inf, ind_batch: int = 0, ind_sim: int = 0, tot_eval: int = 0, s: List[List[int]] = <factory>, x: List[int] = <factory>)
    +class pofff.visualization.everert.OptimizationState(optimization: list[float] = <factory>, optimal_value: float = -inf, ind_batch: int = 0, ind_sim: int = 0, tot_eval: int = 0, s: list[list[int]] = <factory>, x: list[int] = <factory>)

    Bases: object

    Tracks optimization progress and outcomes.

    @@ -234,12 +234,12 @@
    -optimization: List[float]
    +optimization: list[float]
    -s: List[List[int]]
    +s: list[list[int]]
    @@ -249,7 +249,7 @@
    -x: List[int]
    +x: list[int]
    @@ -352,7 +352,7 @@
    -pofff.visualization.everert.run(cmd: List[str]) None
    +pofff.visualization.everert.run(cmd: list[str]) None

    Execute external command and abort on failure.

    diff --git a/docs/searchindex.js b/docs/searchindex.js index 121bdd8..731ee45 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"About pofff":[[0,null]],"Adding your results":[[4,"adding-your-results"]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"Citing":[[0,"citing"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"ERT":[[9,"ert"]],"Everest":[[9,"everest"]],"Examples":[[4,null]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"History matching":[[4,"history-matching"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pofff"],[11,"module-pofff.config"],[13,"module-pofff.core"],[15,"module-pofff.jobs"],[19,"module-pofff.utils"],[24,"module-pofff.visualization"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Publication":[[30,null]],"Python package":[[6,"python-package"]],"Related":[[31,null]],"Report issues or problems":[[3,"report-issues-or-problems"]],"Seek support":[[3,"seek-support"]],"Single run":[[9,"single-run"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodules":[[11,"submodules"],[13,"submodules"],[15,"submodules"],[19,"submodules"],[24,"submodules"]],"Subpackages":[[10,"subpackages"]],"Visualization":[[4,"visualization"]],"Welcome to pofff\u2019s documentation!":[[5,null]],"ad-micp":[[31,"ad-micp"]],"expreccs":[[31,"expreccs"]],"plopm":[[31,"plopm"]],"pofff":[[1,"pofff"],[8,null]],"pofff Python API":[[1,null]],"pofff package":[[10,null]],"pofff.config package":[[11,null]],"pofff.config.config module":[[12,null]],"pofff.core package":[[13,null]],"pofff.core.pofff module":[[14,null]],"pofff.jobs package":[[15,null]],"pofff.jobs.data module":[[16,null]],"pofff.jobs.delete module":[[17,null]],"pofff.jobs.metric module":[[18,null]],"pofff.utils package":[[19,null]],"pofff.utils.inputvalues module":[[20,null]],"pofff.utils.mapproperties module":[[21,null]],"pofff.utils.runs module":[[22,null]],"pofff.utils.writefile module":[[23,null]],"pofff.visualization package":[[24,null]],"pofff.visualization.benchmark module":[[25,null]],"pofff.visualization.error_table module":[[26,null]],"pofff.visualization.everert module":[[27,null]],"pofff.visualization.maps module":[[28,null]],"pofff.visualization.sparse_values module":[[29,null]],"pycopm":[[31,"pycopm"]],"pymm":[[31,"pymm"]],"pyopmnearwell":[[31,"pyopmnearwell"]],"pyopmspe11":[[31,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pofff","pofff.config","pofff.config.config","pofff.core","pofff.core.pofff","pofff.jobs","pofff.jobs.data","pofff.jobs.delete","pofff.jobs.metric","pofff.utils","pofff.utils.inputvalues","pofff.utils.mapproperties","pofff.utils.runs","pofff.utils.writefile","pofff.visualization","pofff.visualization.benchmark","pofff.visualization.error_table","pofff.visualization.everert","pofff.visualization.maps","pofff.visualization.sparse_values","publication","related"],"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","pofff.rst","pofff.config.rst","pofff.config.config.rst","pofff.core.rst","pofff.core.pofff.rst","pofff.jobs.rst","pofff.jobs.data.rst","pofff.jobs.delete.rst","pofff.jobs.metric.rst","pofff.utils.rst","pofff.utils.inputvalues.rst","pofff.utils.mapproperties.rst","pofff.utils.runs.rst","pofff.utils.writefile.rst","pofff.visualization.rst","pofff.visualization.benchmark.rst","pofff.visualization.error_table.rst","pofff.visualization.everert.rst","pofff.visualization.maps.rst","pofff.visualization.sparse_values.rst","publication.rst","related.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pofff"]],"pofff":[[11,0,0,"-","config"],[13,0,0,"-","core"],[15,0,0,"-","jobs"],[19,0,0,"-","utils"],[24,0,0,"-","visualization"]],"pofff.config":[[12,0,0,"-","config"]],"pofff.config.config":[[12,1,1,"","CliConfig"],[12,1,1,"","PofffConfig"]],"pofff.config.config.CliConfig":[[12,2,1,"","deck"],[12,2,1,"","experiment"],[12,2,1,"","figures"],[12,2,1,"","fol"],[12,2,1,"","jobs"],[12,2,1,"","location"],[12,2,1,"","mcon"],[12,2,1,"","mode"],[12,2,1,"","msat"],[12,2,1,"","times"],[12,2,1,"","use"]],"pofff.config.config.PofffConfig":[[12,2,1,"","args"],[12,2,1,"","atol"],[12,2,1,"","boxa"],[12,2,1,"","boxb"],[12,2,1,"","boxc"],[12,2,1,"","callback"],[12,2,1,"","cap"],[12,2,1,"","constraints"],[12,2,1,"","cores"],[12,2,1,"","data"],[12,2,1,"","deck"],[12,2,1,"","delete"],[12,2,1,"","diffusion"],[12,2,1,"","dims"],[12,2,1,"","disp"],[12,2,1,"","dx"],[12,2,1,"","dz"],[12,2,1,"","enkf_alpha"],[12,2,1,"","ensembles"],[12,2,1,"","errors"],[12,2,1,"","ertargs"],[12,2,1,"","everert"],[12,2,1,"","experiment"],[12,2,1,"","facies"],[12,2,1,"","figures"],[12,2,1,"","fipnum"],[12,2,1,"","flow"],[12,2,1,"","fluxnum"],[12,2,1,"","fol"],[12,2,1,"","grid"],[12,2,1,"","hascellmaps"],[12,2,1,"","hm"],[12,2,1,"","init"],[12,2,1,"","inj"],[12,2,1,"","integrality"],[12,2,1,"","jobs"],[12,2,1,"","krn"],[12,2,1,"","krw"],[12,2,1,"","location"],[12,2,1,"","max_batch_num"],[12,2,1,"","max_function_evaluations"],[12,2,1,"","maxiter"],[12,2,1,"","maxtime"],[12,2,1,"","mcon"],[12,2,1,"","min_realizations_success"],[12,2,1,"","mode"],[12,2,1,"","monotonic"],[12,2,1,"","msat"],[12,2,1,"","mult_thickness"],[12,2,1,"","multpv"],[12,2,1,"","mutation"],[12,2,1,"","nxz"],[12,2,1,"","para"],[12,2,1,"","path"],[12,2,1,"","polish"],[12,2,1,"","popsize"],[12,2,1,"","porv"],[12,2,1,"","pressure"],[12,2,1,"","random_seed"],[12,2,1,"","recombination"],[12,2,1,"","rng"],[12,2,1,"","sensor_ik"],[12,2,1,"","sensors"],[12,2,1,"","source_ik"],[12,2,1,"","sources"],[12,2,1,"","strategy"],[12,2,1,"","temperature"],[12,2,1,"","thickness"],[12,2,1,"","times"],[12,2,1,"","tol"],[12,2,1,"","tuning"],[12,2,1,"","updating"],[12,2,1,"","use"],[12,2,1,"","vectorized"],[12,2,1,"","workers"],[12,2,1,"","x"],[12,2,1,"","x0"],[12,2,1,"","z"]],"pofff.core":[[14,0,0,"-","pofff"]],"pofff.core.pofff":[[14,3,1,"","cli_config"],[14,3,1,"","generate_figures"],[14,3,1,"","main"],[14,3,1,"","parse_args"],[14,3,1,"","prepare_jobs_folder"],[14,3,1,"","prepare_simulation"],[14,3,1,"","run_simulation_steps"]],"pofff.jobs":[[16,0,0,"-","data"],[17,0,0,"-","delete"],[18,0,0,"-","metric"]],"pofff.jobs.data":[[16,1,1,"","SimulationContext"],[16,1,1,"","SparseResults"],[16,3,1,"","compute_m_c"],[16,3,1,"","create_from_summary"],[16,3,1,"","dense_data"],[16,3,1,"","find_simulation_base"],[16,3,1,"","interpolate_sparse"],[16,3,1,"","main"],[16,3,1,"","read_opm"],[16,3,1,"","sparse_data"],[16,3,1,"","write_dense_data"],[16,3,1,"","write_sparse_data"]],"pofff.jobs.data.SimulationContext":[[16,2,1,"","actind"],[16,2,1,"","dense_t"],[16,2,1,"","dims"],[16,2,1,"","egrid"],[16,2,1,"","gxyz"],[16,2,1,"","ini"],[16,2,1,"","maps"],[16,2,1,"","norst"],[16,4,1,"","nxz"],[16,2,1,"","porv"],[16,2,1,"","resolution"],[16,2,1,"","sim"],[16,2,1,"","smspec"],[16,2,1,"","sparse_t"],[16,2,1,"","time_initial"],[16,2,1,"","times"],[16,2,1,"","times_summary"],[16,2,1,"","unrst"],[16,2,1,"","where"]],"pofff.jobs.data.SparseResults":[[16,2,1,"","ctx"],[16,2,1,"","dissa"],[16,2,1,"","dissb"],[16,2,1,"","dx"],[16,2,1,"","dz"],[16,2,1,"","fipnum"],[16,2,1,"","imma"],[16,2,1,"","immb"],[16,2,1,"","m_c"],[16,2,1,"","m_c_series"],[16,2,1,"","moba"],[16,2,1,"","mobb"],[16,2,1,"","pop1"],[16,2,1,"","pop2"],[16,2,1,"","seala"],[16,2,1,"","sealb"],[16,2,1,"","sealt"],[16,2,1,"","times_data"]],"pofff.jobs.metric":[[18,3,1,"","before_emd"],[18,3,1,"","calculate_emd"],[18,3,1,"","generate_segment_map"],[18,3,1,"","main"]],"pofff.utils":[[20,0,0,"-","inputvalues"],[21,0,0,"-","mapproperties"],[22,0,0,"-","runs"],[23,0,0,"-","writefile"]],"pofff.utils.inputvalues":[[20,3,1,"","build_config"],[20,3,1,"","extract_facies"],[20,3,1,"","load_toml"],[20,3,1,"","postprocess_config"],[20,3,1,"","process_tuning"]],"pofff.utils.mapproperties":[[21,3,1,"","classify_boxes"],[21,3,1,"","corner"],[21,3,1,"","corner_point_handling_fluidflower"],[21,3,1,"","get_cellmaps"],[21,3,1,"","get_lines"],[21,3,1,"","getpolygons"],[21,3,1,"","grid_and_properties"],[21,3,1,"","handle_thickness_map"],[21,3,1,"","positions"],[21,3,1,"","refinement_z"],[21,3,1,"","sensors_corner_point"],[21,3,1,"","sensors_structured"],[21,3,1,"","structured_handling_fluidflower"],[21,3,1,"","wells_corner_point"],[21,3,1,"","wells_structured"]],"pofff.utils.runs":[[22,3,1,"","_run"],[22,3,1,"","benchmark"],[22,3,1,"","data"],[22,3,1,"","ert"],[22,3,1,"","everest"],[22,3,1,"","flow"],[22,3,1,"","postprocess"]],"pofff.utils.writefile":[[23,3,1,"","compact_format"],[23,3,1,"","create_corner_point_grid"],[23,3,1,"","render_bcprop"],[23,3,1,"","render_copyd"],[23,3,1,"","render_equalreg"],[23,3,1,"","render_ert"],[23,3,1,"","render_everest"],[23,3,1,"","render_flow"],[23,3,1,"","render_monotonic"],[23,3,1,"","render_satufunc"],[23,3,1,"","render_scale"],[23,3,1,"","write_files"],[23,3,1,"","write_keywords"]],"pofff.visualization":[[25,0,0,"-","benchmark"],[26,0,0,"-","error_table"],[27,0,0,"-","everert"],[28,0,0,"-","maps"],[29,0,0,"-","sparse_values"]],"pofff.visualization.benchmark":[[25,3,1,"","benchmark"],[25,3,1,"","load_parser"],[25,3,1,"","run_benchmark"]],"pofff.visualization.error_table":[[26,3,1,"","load_sparse_csv"],[26,3,1,"","parse_arguments"],[26,3,1,"","run_error_table"]],"pofff.visualization.everert":[[27,1,1,"","Config"],[27,1,1,"","EnsembleState"],[27,1,1,"","OptimizationState"],[27,3,1,"","copy_tree_contents"],[27,3,1,"","ensure_dir"],[27,3,1,"","extract_best_simulation"],[27,3,1,"","extract_optimal_solution"],[27,3,1,"","initialize_ensemble"],[27,3,1,"","parse_args"],[27,3,1,"","plot_cumulative_misfit"],[27,3,1,"","plot_hm_mismatch"],[27,3,1,"","plot_misfit"],[27,3,1,"","plot_observable_distribution"],[27,3,1,"","plot_optimization"],[27,3,1,"","plot_optimization_details"],[27,3,1,"","plot_parameter_distributions"],[27,3,1,"","plot_simulation_ensemble"],[27,3,1,"","process_optimization"],[27,3,1,"","read_realisation"],[27,3,1,"","run"],[27,3,1,"","run_everert"],[27,3,1,"","save_figure"],[27,3,1,"","setup_matplotlib"]],"pofff.visualization.everert.Config":[[27,2,1,"","external"],[27,2,1,"","jobs"],[27,2,1,"","maps"],[27,2,1,"","min_concentration"],[27,2,1,"","min_saturation"],[27,2,1,"","path"],[27,2,1,"","run"],[27,2,1,"","times"]],"pofff.visualization.everert.EnsembleState":[[27,2,1,"","cumulative"],[27,2,1,"","idrealisation"],[27,2,1,"","miss_ens"],[27,2,1,"","n_e"],[27,2,1,"","n_i"],[27,2,1,"","no_obs"],[27,2,1,"","no_para"],[27,2,1,"","num_ens"],[27,2,1,"","observations"],[27,2,1,"","par_dis"],[27,2,1,"","para_file"],[27,2,1,"","para_names"],[27,2,1,"","sim_ens"],[27,2,1,"","simulations"]],"pofff.visualization.everert.OptimizationState":[[27,2,1,"","ind_batch"],[27,2,1,"","ind_sim"],[27,2,1,"","optimal_value"],[27,2,1,"","optimization"],[27,2,1,"","s"],[27,2,1,"","tot_eval"],[27,2,1,"","x"]],"pofff.visualization.maps":[[28,3,1,"","load_points"],[28,3,1,"","pngs"],[28,3,1,"","run_maps"],[28,3,1,"","segment"]],"pofff.visualization.sparse_values":[[29,3,1,"","main"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","property","Python property"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:function","4":"py:property"},"terms":{"01_conmin":[4,30],"0f":30,"100e3":2,"10d":30,"10f":30,"1500e3":2,"1cm":30,"1cmish":30,"1e":[2,4,7,12,30],"1mm":30,"2e":[2,30],"2f":30,"3000e3":2,"300e3":2,"3e":[2,4],"50e3":2,"5d":30,"5e":[2,4,7,30],"5f":30,"636b45":30,"7e":30,"800e3":2,"9ca245":30,"9da347":30,"9fa44a":30,"A":[30,31],"About":5,"After":4,"All":30,"An":[3,31],"Below":31,"Both":0,"Each":2,"For":[0,2,3,4,6,30],"Here":2,"If":[2,4,6,30],"In":3,"THAN":4,"The":[0,1,2,3,4,6,7,9,30],"Then":[4,6,30],"There":6,"These":30,"This":[7,30],"To":[4,6,30],"We":[3,4],"While":[4,6],"YOURS":4,"You":[4,6,30],"_2":[4,30],"_build":3,"_run":[10,19,22],"a0a64d":30,"a2a750":30,"a3a953":30,"a5aa56":30,"a6ac59":30,"a8ad5c":30,"a9af5f":30,"abb062":30,"abl":6,"abort":[22,27],"abov":7,"accept":3,"access":30,"accord":[21,30],"accuraci":30,"across":12,"actind":[15,16],"action":[3,6],"activ":6,"ad":5,"adapt":30,"adb164":30,"add":[2,3,5,6,9,30],"addit":[3,4,30],"adjust":30,"aeb367":30,"ale":30,"alia":16,"also":[3,4,6,30],"altern":3,"alway":4,"anaconda":6,"analys":3,"ani":[3,12],"anoth":6,"answer":3,"api":[5,30],"appendix":30,"appendixb":[4,30],"appendixc":30,"appli":27,"approach":[0,3],"apt":6,"arg":[11,12,14],"argument":[7,12,14,22,25,26,27],"argv":[16,18,25,26,27,28],"array":2,"assign":[4,21],"atol":[11,12],"attempt":30,"auto":3,"automat":26,"avail":[6,30],"avoid":2,"b":30,"b0b46a":30,"b1b66d":30,"b3b770":30,"b4b973":30,"b6ba76":30,"b7bc79":30,"b9bd7c":30,"babf7f":30,"background":30,"base":[0,7,12,16,21,27,30,31],"basetemp":3,"bashrc":6,"basic":[7,12],"bcc082":30,"bcprop":23,"bec184":30,"befor":[3,12],"before_emd":[10,15,18],"behavior":18,"benchmark":[1,7,10,14,16,19,22,24,29,30,31],"best":27,"best_simul":9,"better":4,"bfc387":30,"bin":[2,3,6],"binari":[3,5],"bit":23,"black":[3,30],"bool":12,"bottom":2,"boundari":28,"box":21,"boxa":[11,12],"boxb":[11,12],"boxc":[11,12],"boxplot":27,"branch":6,"brew":5,"build":[2,3,5,14,20,21],"build_config":[10,19,20],"build_opm_mpi":6,"built":6,"c":[2,4,7,30],"c00b0b":30,"c1":7,"c10f0f":30,"c1c48a":30,"c2":7,"c21313":30,"c2c68d":30,"c31717":30,"c41b1b":30,"c4c790":30,"c5":7,"c51f1f":30,"c5c993":30,"c62323":30,"c72626":30,"c7ca96":30,"c82a2a":30,"c8cc99":30,"c92e2e":30,"ca3232":30,"cacd9c":30,"calcit":31,"calculate_emd":[10,15,18],"call":[1,4],"callabl":12,"callback":[11,12],"can":[3,4,6,30],"cap":[2,11,12],"capabl":4,"capillari":2,"cartesian":[2,30],"case":[4,30],"cb3636":30,"cbcf9f":30,"cbsfax":[4,30],"cc3a3a":30,"cco2":16,"cd":[6,30],"cd3e3e":30,"cdd0a2":30,"ce4141":30,"cell":[2,21],"center":[0,16],"central":12,"centroid":21,"cet_diverging_gwr_55_95_c38":30,"cf4545":30,"cfd":31,"cfd1a4":30,"cfg":[14,20,21,22,23,25,27],"cformat":[4,30],"chang":[3,4,30],"check":[3,6,30,31],"checker":3,"checkout":6,"choic":30,"ci":[3,6],"ci_pycopm_maco":3,"cite":5,"clabel":[4,30],"class":[12,16,27,28],"classify_box":[10,19,21],"cli":[12,14,20],"cli_config":[10,13,14],"cliconfig":[10,11,12,14,20],"clone":6,"closest":9,"cm":[6,30],"cmake":6,"cmd":[22,27],"cnum":[4,30],"cnv":30,"cnv_relax":30,"co":[4,30],"co2":[0,7,30,31],"code":[3,6,10],"codebas":12,"collabor":3,"color":4,"com":[1,4,6,7,30],"combin":[7,12,30],"comma":7,"command":[4,6,12,14,22,25,26,27,30],"commit":3,"common":[4,6],"compact":23,"compact_format":[10,19,23],"compar":[4,30],"compare_all_time_seri":4,"comparison":[14,22,25,26],"comput":[7,16,18,21,26,30],"compute_m_c":[10,15,16],"comun":1,"concentr":[7,18,28,30],"concept":5,"config":[1,4,8,10,20,24,27],"configur":[4,5,6,7,12,14,20,22,27,30],"conmin":[18,28],"connect":28,"consid":[4,7],"consist":27,"constant":4,"constraint":[11,12],"construct":21,"contain":[1,3,4,9,12,16],"content":[1,3,5,8,20,27,30],"continu":18,"contour":28,"contribut":[0,5,6,27],"control":[26,30],"convert":18,"coord":23,"coordin":[2,21],"copi":[3,6,14,27],"copy_tree_cont":[10,24,27],"copyd":23,"core":[1,4,8,10,11,12,30],"corner":[1,2,10,12,19,21,23,30],"corner_point_handling_fluidflow":[10,19,21],"correct":4,"correspond":[4,21,30],"cov":3,"cp":27,"cpr_trueimp":30,"cpus":[4,30],"creat":[3,6,18,27],"create_corner_point_grid":[10,19,23],"create_from_summari":[10,15,16],"csiro":4,"csp":31,"cssr":[0,4,6,7,30],"csv":[4,7,16,26,29,30],"csvs":4,"ctick":30,"ctx":[15,16],"cumul":[24,27],"curl":30,"current":[6,7],"current_directori":6,"custom":[4,30],"d":[0,4,30],"d04949":30,"d0d3a7":30,"d14d4d":30,"d25151":30,"d2d4aa":30,"d35555":30,"d3d6ad":30,"d45959":30,"d55c5c":30,"d5d7b0":30,"d66060":30,"d6d9b3":30,"d76464":30,"d86868":30,"d8dab6":30,"d96c6c":30,"d9dcb9":30,"da7070":30,"darus":30,"data":[1,4,7,10,11,12,15,19,20,22,26,30],"datafil":30,"datum":2,"day":[4,30],"db7474":30,"dbddbc":30,"dc7777":30,"dcdfbf":30,"dcmake_build_typ":6,"dcmake_prefix_path":6,"dd7b7b":30,"de":30,"de7f7f":30,"decay":30,"deck":[1,11,12],"decreas":[4,30],"dedic":6,"dee0c1":30,"default":7,"defin":[2,12,14,25],"definit":[20,21],"delax":30,"delet":[10,11,12,15],"dens":16,"dense_data":[10,15,16],"dense_t":[15,16],"depend":[3,6],"deriv":[12,20],"describ":[3,7],"descript":[2,4],"detail":[4,30],"determin":21,"dev":[3,6],"develop":6,"df8383":30,"diagnost":27,"dict":[12,20],"differ":[1,4,30],"diffus":[2,11,12],"dim":[11,12,15,16],"dir":2,"direct":4,"directori":[3,14,27,30],"discret":[18,28],"disk":26,"disp":[11,12],"dispatch":21,"disperc1":2,"disperc2":2,"disperc3":2,"disperc4":2,"disperc5":2,"disperc6":2,"dissa":[15,16],"dissb":[15,16],"dissolv":7,"distanc":[7,18,26,30],"distribut":27,"divid":2,"dmar":2,"doc":3,"docmunet":4,"document":[3,4,6,7],"doe":30,"doi":0,"done":6,"download":[1,6,30],"dpi":[4,27],"dst":27,"duse_mpi":6,"dvipng":6,"dwith_ndebug":6,"dx":[11,12,15,16,23],"dynam":31,"dz":[11,12,15,16,23],"e":[0,2,3,4,6,7,30],"e08787":30,"e0e1c4":30,"e18b8b":30,"e1e3c7":30,"e28f8f":30,"e39292":30,"e3e4ca":30,"e49696":30,"e4e6cd":30,"e59a9a":30,"e69e9":30,"e6e7d0":30,"e7a2a2":30,"e7e9d3":30,"e8a6a6":30,"e9aaaa":30,"e9ead6":30,"eaadad":30,"eaecd9":30,"ebb1b1":30,"ecb5b5":30,"eceddc":30,"eclfil":16,"eclips":23,"edb9b9":30,"edefdf":30,"edg":6,"edit":30,"eebdbd":30,"efc1c1":30,"eff0e1":30,"effici":23,"egrid":[15,16],"eight":4,"either":[6,21],"els":6,"em":31,"email":3,"emd":18,"enabl":[2,20,30],"encod":[23,30],"end":[4,6,30],"enkf_alpha":[11,12],"enrich":20,"ensembl":[11,12,27],"ensemblest":[10,24,27],"ensure_dir":[10,24,27],"enterpris":6,"entri":[2,14,16,25,27],"environ":[3,6],"equalreg":23,"error":[4,11,12,26],"error_t":[10,24],"error_table_satmin":[4,30],"erst":16,"ert":[1,4,5,7,10,19,22,23,27],"ertarg":[11,12],"esf":30,"esmri":16,"etc":[4,23],"evalu":[2,4,7],"everert":[10,11,12,24],"everest":[1,4,5,7,10,19,22,23,27,30],"everest_iter_3":4,"exact":18,"exampl":[2,5,9,30],"except":2,"execut":[1,2,3,4,6,7,9,14,22,27,30],"experi":[4,11,12,28],"experiment":[4,7,18,26,28],"experimental_data":18,"export":[3,6],"exprecc":5,"extend":3,"extern":[24,27],"extra":6,"extract":[16,20,27,29],"extract_best_simul":[10,24,27],"extract_faci":[10,19,20],"extract_optimal_solut":[10,24,27],"f":[4,7,30],"f0c5c5":30,"f1c8c8":30,"f1f1e4":30,"f2cccc":30,"f2f3e7":30,"f3d0d0":30,"f4d4d4":30,"f4f4ea":30,"f5d8d8":30,"f5f6ed":30,"f6dcdc":30,"f7e0e0":30,"f7f7f0":30,"f8e3e3":30,"f8f9f3":30,"f9e7e7":30,"faci":[2,4,11,12,21],"facie1":2,"facie2":2,"facie3":2,"facie4":2,"facie5":2,"facie6":2,"factor":[21,30],"factori":[12,16,27],"faebeb":30,"fafaf6":30,"fail":22,"failur":27,"fair":[7,30],"fals":12,"familiar":3,"fbefef":30,"fbfcf9":30,"fcf3f3":30,"fdf7f7":30,"fdfdfc":30,"featur":0,"fefbfb":30,"ff0000":30,"ff0100":30,"ff0200":30,"ff0300":30,"ff0400":30,"ff0500":30,"ff0600":30,"ff0700":30,"ff0800":30,"ff0900":30,"ff0a00":30,"ff0b00":30,"ff0c00":30,"ff0d00":30,"ff0e00":30,"ff0f00":30,"ff1000":30,"ff1100":30,"ff1200":30,"ff1300":30,"ff1400":30,"ff1500":30,"ff1600":30,"ff1700":30,"ff1800":30,"ff1900":30,"ff1a00":30,"ff1b00":30,"ff1c00":30,"ff1d00":30,"ff1e00":30,"ff1f00":30,"ff2000":30,"ff2100":30,"ff2200":30,"ff2300":30,"ff2400":30,"ff2500":30,"ff2600":30,"ff2700":30,"ff2800":30,"ff2900":30,"ff2a00":30,"ff2b00":30,"ff2c00":30,"ff2d00":30,"ff2e00":30,"ff2f00":30,"ff3000":30,"ff3100":30,"ff3200":30,"ff3300":30,"ff3400":30,"ff3500":30,"ff3600":30,"ff3700":30,"ff3800":30,"ff3900":30,"ff3a00":30,"ff3b00":30,"ff3c00":30,"ff3d00":30,"ff3e00":30,"ff3f00":30,"ff4000":30,"ff4100":30,"ff4200":30,"ff4300":30,"ff4400":30,"ff4500":30,"ff4600":30,"ff4700":30,"ff4800":30,"ff4900":30,"ff4a00":30,"ff4b00":30,"ff4c00":30,"ff4d00":30,"ff4e00":30,"ff4f00":30,"ff5000":30,"ff5100":30,"ff5200":30,"ff5300":30,"ff5400":30,"ff5500":30,"ff5600":30,"ff5700":30,"ff5800":30,"ff5900":30,"ff5a00":30,"ff5b00":30,"ff5c00":30,"ff5d00":30,"ff5e00":30,"ff5f00":30,"ff6000":30,"ff6100":30,"ff6200":30,"ff6300":30,"ff6400":30,"ff6500":30,"ff6600":30,"ff6700":30,"ff6800":30,"ff6900":30,"ff6a00":30,"ff6b00":30,"ff6c00":30,"ff6d00":30,"ff6e00":30,"ff6f00":30,"ff7000":30,"ff7100":30,"ff7200":30,"ff7300":30,"ff7400":30,"ff7500":30,"ff7600":30,"ff7700":30,"ff7800":30,"ff7900":30,"ff7a00":30,"ff7b00":30,"ff7c00":30,"ff7d00":30,"ff7e00":30,"ff7f00":30,"ff8000":30,"ff8100":30,"ff8200":30,"ff8300":30,"ff8400":30,"ff8500":30,"ff8600":30,"ff8700":30,"ff8800":30,"ff8900":30,"ff8a00":30,"ff8b00":30,"ff8c00":30,"ff8d00":30,"ff8e00":30,"ff8f00":30,"ff9000":30,"ff9100":30,"ff9200":30,"ff9300":30,"ff9400":30,"ff9500":30,"ff9600":30,"ff9700":30,"ff9800":30,"ff9900":30,"ff9a00":30,"ff9b00":30,"ff9c00":30,"ff9d00":30,"ff9e00":30,"ff9f00":30,"ffa000":30,"ffa100":30,"ffa200":30,"ffa300":30,"ffa400":30,"ffa500":30,"ffa600":30,"ffa700":30,"ffa800":30,"ffa900":30,"ffaa00":30,"ffab00":30,"ffac00":30,"ffad00":30,"ffae00":30,"ffaf00":30,"ffb000":30,"ffb100":30,"ffb200":30,"ffb300":30,"ffb400":30,"ffb500":30,"ffb600":30,"ffb700":30,"ffb800":30,"ffb900":30,"ffba00":30,"ffbb00":30,"ffbc00":30,"ffbd00":30,"ffbe00":30,"ffbf00":30,"ffc000":30,"ffc100":30,"ffc200":30,"ffc300":30,"ffc400":30,"ffc500":30,"ffc600":30,"ffc700":30,"ffc800":30,"ffc900":30,"ffca00":30,"ffcb00":30,"ffcc00":30,"ffcd00":30,"ffce00":30,"ffcf00":30,"ffd000":30,"ffd100":30,"ffd200":30,"ffd300":30,"ffd400":30,"ffd500":30,"ffd600":30,"ffd700":30,"ffd800":30,"ffd900":30,"ffda00":30,"ffdb00":30,"ffdc00":30,"ffdd00":30,"ffde00":30,"ffdf00":30,"ffe000":30,"ffe100":30,"ffe200":30,"ffe300":30,"ffe400":30,"ffe500":30,"ffe600":30,"ffe700":30,"ffe800":30,"ffe900":30,"ffea00":30,"ffeb00":30,"ffec00":30,"ffed00":30,"ffee00":30,"ffef00":30,"fff000":30,"fff100":30,"fff200":30,"fff300":30,"fff400":30,"fff500":30,"fff600":30,"fff700":30,"fff800":30,"fff900":30,"fffa00":30,"fffb00":30,"fffc00":30,"fffd00":30,"ffffff":30,"fi":6,"field":[18,28],"fig":27,"figur":[4,6,7,9,11,12,14,22,25,27,30],"figure10":30,"figure10d":30,"figure10f":30,"figure3":30,"figure3a":30,"figure3b":30,"figure4":30,"figure4ish":30,"figure5":30,"figure5d":30,"figure5f":30,"figures10":30,"figures10d":30,"figures5":30,"figures5d":30,"file":[1,3,4,5,6,7,9,14,16,17,20,23,26,28,30],"file_1":18,"file_2":18,"file_nam":18,"filenam":[20,26,28,30],"filledtempl":30,"final":[1,2,12,27,30],"find_simulation_bas":[10,15,16],"fip":21,"fipnum":[11,12,15,16,23],"first":2,"fit":27,"five":4,"fix":[2,3],"flag":[2,4,20,30],"flexibl":30,"float":[12,16,18,21,27],"float64":21,"flow":[2,3,4,5,7,10,11,12,19,22,23,30,31],"flow_maco":3,"fluidflow":[1,4,7,21],"flux":21,"fluxnum":[11,12,23],"fol":[11,12],"folder":[1,3,4,5,6,7,27,30],"follow":[2,4,6,7,9,30],"font":[4,6],"forecast":4,"fork":[0,3],"forlder":1,"format":[3,4,6,25,26,29,30],"formula":5,"found":4,"fraction":[4,30],"framework":[0,1,4,7,31],"friend":[7,30],"full":[2,6],"fulli":20,"function":[2,4,20,21,22,23],"fund":0,"g":[2,3,4,6,30],"gas":2,"gasda":0,"gaseous":7,"generat":[1,2,3,4,7,9,14,21,22,23,25,27,28,29,30,31],"generate_figur":[10,13,14],"generate_segment_map":[10,15,18],"geo":28,"geolog":[1,21,28,31],"geometri":1,"get":[3,6],"get_cellmap":[10,19,21],"get_lin":[10,19,21],"getpolygon":[10,19,21],"gif":[4,31],"git":[4,6,30],"github":[1,2,3,4,6,7,30],"githubusercont":30,"give":30,"given":4,"grid":[1,2,4,6,11,12,16,21,23,30],"grid_and_properti":[10,19,21],"ground":5,"growth":30,"gxyz":[15,16],"h":[0,4,30],"handl":[16,26],"handle_thickness_map":[10,19,21],"hascellmap":[11,12],"hat":6,"head":30,"header":26,"hello":5,"help":[3,6],"histori":[0,2,5,7],"hm":[4,11,12],"hold":27,"homebrew":6,"horizon":21,"host":[1,7],"hour":[7,16],"html":3,"https":[0,1,4,6,7,30],"ident":23,"idrealis":[24,27],"ignor":3,"imag":[0,7,18,31],"imma":[15,16],"immb":[15,16],"implement":[7,23],"import":[3,30],"includ":[6,23,30],"increas":30,"ind_batch":[24,27],"ind_sim":[24,27],"index":[5,21],"indic":21,"induc":31,"indx":18,"inf":27,"inform":[4,16],"ini":[15,16],"init":[11,12],"initi":[2,4,20,27],"initialize_ensembl":[10,24,27],"inj":[2,4,11,12],"inject":[2,20],"input":[1,2,7,12,14,20,30],"inputvalu":[10,19],"insid":6,"instal":[3,4,5,30],"instruct":6,"int":[12,16,18,21,27],"int64":18,"integr":[11,12],"interact":22,"interest":[6,30,31],"interpol":16,"interpolate_spars":[10,15,16],"interval":4,"introduct":5,"isotrop":4,"issu":[0,4,5],"iter":[2,4,12,27,30],"j":[0,27],"j5":6,"job":[1,8,10,11,12,14,24,27],"keyword":[4,23],"kg":2,"krn":[2,11,12],"krw":[2,11,12],"l":[6,30],"label":4,"landa":0,"larg":17,"last":4,"latest":6,"latex":6,"leakag":31,"length":23,"less":[4,30],"librari":6,"like":4,"limit":30,"line":[2,3,4,6,12,14,21,25,26,27,28,30],"linear":30,"link":6,"lint":6,"linux":5,"liquid":[2,4,30],"list":[12,16,21,23,27],"load":[16,20,21,26,28],"load_pars":[10,24,25],"load_point":[10,24,28],"load_sparse_csv":[10,24,26],"load_toml":[10,19,20],"local":[3,4],"locat":[1,11,12,16],"look":3,"loop":4,"low":4,"m":[0,2,4,6,7,9,30],"m_c":[15,16],"m_c_seri":[15,16],"mac":[4,30],"machin":[2,4,6,30],"maco":[3,5],"macport":6,"mactex":6,"main":[1,3,10,13,14,15,16,18,20,24,25,29,30],"maintain":3,"make":[3,6,14],"mako":[1,23,30],"mamba":6,"manag":6,"manual":30,"map":[2,4,10,15,16,18,21,24,27,30],"map_24h":4,"mapproperti":[10,19],"marb\u00e1n":0,"mask":[4,30],"maskthr":[4,30],"mass":[4,16,30],"master":6,"match":[0,2,5,7],"matplotlib":27,"matrix":7,"max":[2,12,30],"max_batch_num":[11,12],"max_function_evalu":[4,11,12],"maximum":4,"maxit":[11,12],"maxtim":[11,12],"mcon":[11,12],"mean":27,"measur":2,"med":0,"memori":27,"merg":3,"metric":[7,10,15,16,26],"micp":5,"microbi":31,"microsystem":31,"might":[3,4,6,30,31],"migrat":16,"min":[2,30],"min_concentr":[24,27],"min_realizations_success":[11,12],"min_satur":[24,27],"miniforg":6,"minimum":7,"minut":4,"misfit":27,"miss":[3,4,27],"miss_en":[24,27],"mit_m1":4,"mkdir":[6,30],"moba":[15,16],"mobb":[15,16],"mode":[11,12,14],"model":[2,12,21,31],"model_result":18,"modifi":[1,4,6,30],"modul":[1,5,8,31],"monoton":[11,12,23],"mpi":[6,30],"mpirun":[2,30],"msat":[11,12],"mult_thick":[2,11,12],"multipli":[2,4,21],"multpv":[11,12],"multx":30,"mutat":[11,12],"my_simul":4,"mypi":3,"mytempl":30,"n":[3,23],"n_e":[24,27],"n_i":[24,27],"name":[4,7,16],"name_of_input_fil":7,"namespac":14,"ncz":21,"ndarray":[12,16,18,21,23,27],"near":31,"need":[3,4,6,30],"new":[0,3,4,30],"newton":[2,30],"newtoniterationcount":30,"next":2,"nice":[3,6],"nkrn":[2,12],"nkrn1":2,"nkrn2":2,"nkrn3":2,"nkrn4":2,"nkrn5":2,"nkrn6":2,"nkrw":[2,12],"nkrw1":2,"nkrw2":2,"nkrw3":2,"nkrw4":2,"nkrw5":2,"nkrw6":2,"no_ob":[24,27],"no_para":[24,27],"non":2,"none":[4,7,12,14,16,18,20,21,22,23,25,26,27,28,29,30],"nordbotten":0,"normal":[12,14,20,21],"norst":[15,16],"note":4,"np":[2,30],"np6":4,"npe1":2,"npe2":2,"npe3":2,"npe4":2,"npe5":2,"npe6":2,"npen":[2,12],"npnt1":2,"npnt2":2,"npnt3":2,"npnt4":2,"npnt5":2,"npnt6":2,"npntn":2,"num_en":[24,27],"number":[2,4,21,30],"numer":18,"numpi":23,"nxz":[11,12,15,16],"o":[4,7,9,30],"object":[12,14,16,20,27],"observ":[9,24,27],"obtain":30,"one":[2,4,27],"onli":7,"onlin":[4,6],"onto":16,"open":[0,6,7,30,31],"oper":30,"opm":[2,3,4,5,7,16,22,23,30,31],"opm2":30,"opm3":30,"opm4":30,"opt":27,"optim":[22,24,27],"optimal_valu":[24,27],"optimizationst":[10,24,27],"option":[6,7,12,22,26],"org":[0,6],"origin":[16,18,23],"otherwis":2,"outcom":27,"output":[2,4,5,7,12,14,16,23],"output_fil":29,"overlay":28,"overview":5,"pa":2,"packag":[1,3,5,8],"page":[3,5],"paper":[4,30],"par_di":[24,27],"para":[11,12],"para_fil":[24,27],"para_nam":[24,27],"parallel":4,"paramet":[2,4,27],"pars":[14,25,26,27],"parse_arg":[10,13,14,24,27],"parse_argu":[10,24,26],"part":1,"path":[2,3,6,11,12,14,16,20,24,26,27,28],"pen":[2,12],"pen1":2,"pen2":2,"pen3":2,"pen4":2,"pen5":[2,4],"pen6":2,"per":27,"perform":0,"perm":2,"perm3":4,"permeabl":4,"permx1":2,"permx2":[2,4],"permx3":2,"permx4":2,"permx5":2,"permx6":2,"permz1":2,"permz2":2,"permz3":2,"permz4":2,"permz5":2,"permz6":2,"phase":30,"pip":[3,4,6,30],"platform":6,"pleas":[0,3,4],"plopm":[4,5,6,30],"plot":[4,7,14,18,22,27,28],"plot_cumulative_misfit":[10,24,27],"plot_hm_mismatch":[10,24,27],"plot_misfit":[10,24,27],"plot_observable_distribut":[10,24,27],"plot_optim":[10,24,27],"plot_optimization_detail":[10,24,27],"plot_parameter_distribut":[10,24,27],"plot_simulation_ensembl":[10,24,27],"png":[4,18],"pngs":[4,9,10,24,28,31],"pofff":[3,4,6,7,9,30],"pofff_path":[14,20],"pofffconfig":[10,11,12,14,20,21,22,23],"point":[1,2,12,16,21,23,25,27,28,30],"polish":[11,12],"polygon":21,"pop1":[15,16],"pop2":[15,16],"popsiz":[11,12],"poro1":2,"poro2":2,"poro3":2,"poro4":2,"poro5":2,"poro6":2,"porous":0,"porv":[11,12,15,16],"posit":[2,10,19,21],"posixpath":[12,16],"possibl":[3,4],"postprocess":[1,4,10,16,19,22,27],"postprocess_config":[10,19,20],"precipit":31,"precomput":7,"prefer":3,"prepar":[14,20],"prepare_jobs_fold":[10,13,14],"prepare_simul":[10,13,14],"prerequisit":6,"preserv":[16,18],"pressur":[2,11,12],"previous":[3,6],"principl":30,"problem":5,"process":[22,27],"process_optim":[10,24,27],"process_tun":[10,19,20],"profil":[4,30],"progress":27,"project":[0,6,31],"prompt":22,"properti":[2,16,21],"prs":3,"public":[2,3,4,5],"pull":[0,3,4],"push":3,"pushd":3,"pvtnum":30,"pwd":6,"py":[4,23,30],"py312":3,"pycopm":[3,5,6],"pylint":3,"pymm":5,"pyopmnearwel":5,"pyopmspe11":[5,30],"pytest":3,"python":[3,5,30,31],"python3":[6,30],"quantifi":26,"quantiti":16,"quick":31,"r":[3,6,27,30],"r2_cart_1cm_capmax2500pa":30,"r3_cp_1cmish_capmax2500pa":30,"r4_cart_1mm_capmax2500pa":30,"r5_cart_1mm_capmax2500pa_strictol":30,"rais":[0,3,4],"ran":4,"random":[4,30],"random_se":[11,12],"rang":4,"rate":[2,30],"raw":[12,30],"read":[21,27,29],"read_opm":[10,15,16],"read_realis":[10,24,27],"real":2,"realiz":27,"recent":6,"recombin":[11,12],"recommend":6,"red":6,"ref":30,"refer":[4,21],"refin":[2,21],"refinement_z":[10,19,21],"refxz":16,"regard":30,"region":[21,31],"rel":2,"relat":[3,5],"releas":[6,27],"reload":6,"remedi":31,"remov":[20,30],"render":30,"render_bcprop":[10,19,23],"render_copyd":[10,19,23],"render_equalreg":[10,19,23],"render_ert":[10,19,23],"render_everest":[10,19,23],"render_flow":[10,19,23],"render_monoton":[10,19,23],"render_satufunc":[10,19,23],"render_scal":[10,19,23],"replac":3,"repo":[3,6],"report":[5,30],"repositori":[3,6],"reproduc":[4,18,30],"request":[0,3,4,18,20],"requir":[3,4,6,18,30],"res":16,"reservoir":31,"resinsight":6,"resolut":[4,15,16],"resourc":[0,30],"restart":[16,30],"result":[2,5,6,9,18,22,26,27,30],"return":20,"review":3,"rig":2,"rise":3,"rng":[11,12,30],"round":18,"routin":14,"rst":[2,30],"ruff":3,"rule":5,"run":[3,4,5,6,7,10,14,19,23,24,25,27,30],"run2":12,"run_benchmark":[10,24,25],"run_error_t":[10,24,26],"run_everert":[10,24,27],"run_map":[10,24,28],"run_simulation_step":[10,13,14],"runtim":[12,20,27],"s":[0,2,3,6,7,24,27],"s11242":0,"sand":30,"sandv":0,"satmin":[18,28],"satnum":[4,30],"satufunc":23,"satur":[2,7,18,28],"save":[27,30],"save_figur":[10,24,27],"scale":23,"schedul":2,"score":18,"screenshot":9,"script":[1,3,4,6,14,17,30],"seala":[15,16],"sealb":[15,16],"sealt":[15,16],"search":[5,6],"section":[23,30],"see":[2,3,4,6,30],"seed":[4,30],"seek":5,"segment":[7,10,18,24,28],"select":[14,16,21,28],"send":3,"sensit":30,"sensor":[11,12,21],"sensor_ik":[11,12],"sensors_corner_point":[10,19,21],"sensors_structur":[10,19,21],"separ":7,"sequenc":[12,22],"seri":[16,22,29],"set":[2,4,6,7,12,30],"setup":30,"setup_matplotlib":[10,24,27],"setuptool":6,"sgas":16,"sh":6,"shorter":4,"show":[9,30],"sim":[15,16],"sim_en":[24,27],"similar":30,"simpli":6,"simul":[2,3,4,6,7,9,16,18,22,24,26,27,28,30,31],"simulationcontext":[10,15,16],"simxcent":21,"simzcent":21,"singl":[3,4,5,7,12,16,30],"site":31,"six":3,"size":[2,4],"skip":[6,22],"slow":7,"smspec":[15,16],"sni":[2,12],"sni1":2,"sni2":2,"sni3":2,"sni4":2,"sni5":2,"sni6":2,"softwar":5,"solver":30,"soon":3,"sourc":[0,2,3,5,7,11,12,31],"source1":2,"source2":2,"source_ik":[11,12],"spars":[16,26,29],"sparse_data":[4,10,15,16,29],"sparse_t":[15,16],"sparse_valu":[10,24],"sparseresult":[10,15,16],"spatial":[4,16,18,21,22,28,30],"spatial_map_xh":4,"spe11":31,"spe11a":30,"spe11a_spatial_map_48h":30,"specif":[6,20,21],"speed":[7,30],"split":4,"squash":3,"src":[3,27],"state":[16,27],"static":3,"statist":27,"step":[2,3,4,6,30],"storag":[0,31],"str":[12,18,20,21,22,27,29],"strategi":[11,12],"stricter":30,"structur":[12,21],"structured_handling_fluidflow":[10,19,21],"studi":[4,7,27,30,31],"stuttgart":30,"style":[4,21,23,27],"subfig":30,"submit":30,"submodul":[1,8,10],"subpackag":[1,5,8],"subprocess":30,"subsect":[9,30],"subsurfac":0,"subsystem":6,"succed":6,"succeed":[3,6],"success":27,"sudo":6,"sum":27,"summar":26,"summari":16,"super":6,"support":[2,4,5,6,7,30],"suptitl":30,"sustain":0,"sw":[2,12],"swi":[2,12],"swi1":2,"swi2":2,"swi3":2,"swi4":2,"swi5":2,"swi6":2,"system":[3,4,30],"t":[0,4,7,28,30],"tab20":27,"tabl":[2,9,26,30],"tag":6,"tailor":31,"target":3,"temperatur":[2,11,12],"templat":[23,30],"templeat":1,"tensor":2,"term":3,"termin":[4,6,30],"test":[2,3,4,6],"test_output":3,"texliv":6,"thick":[2,11,12,21,30],"thicknessmult":4,"thre1":2,"thre2":2,"thre3":2,"thre4":2,"thre5":2,"thre6":2,"thren":2,"threshold":[2,26],"tick":4,"time":[2,4,7,11,12,15,16,18,22,24,27,28,29,30],"time_initi":[15,16],"time_seri":[4,29],"times_data":[15,16],"times_summari":[15,16],"timeseries_fil":29,"tol":[11,12],"toler":30,"toml":[2,4,7,9,12,20,30],"tool":[0,3,4,6,7,30,31],"top":2,"tot_ev":[24,27],"total":[4,18],"track":27,"trade":30,"transp":0,"tri":[3,6,30],"trip":18,"true":[2,30],"tug":6,"tune":[2,11,12,20],"tunit":4,"tupl":[12,16,18,21],"turn":6,"tutori":[3,6],"two":[4,18],"txt":[3,6,23],"type":[2,4,6,12,21,31],"u":7,"ubuntu":[3,6],"uni":30,"unifi":12,"uniform":16,"unrst":[15,16],"unzip":30,"updat":[11,12,27],"upgrad":6,"use":[0,2,3,4,6,7,11,12,23,30,31],"user":[2,3,6,7],"utf8":30,"util":[1,8,10],"v":[4,30],"v2026":6,"valid":7,"valu":[2,7,16,20,23,29,30],"var":30,"variabl":[2,3,4,23],"vector":[11,12,16],"venv":6,"version":[3,6,10],"vertic":21,"via":[4,6],"virtual":6,"visit":3,"visual":[1,5,6,8,10],"vpofff":6,"vtks":31,"w":[0,30],"wasserstain":7,"wasserstein":[7,18,26,30],"websit":30,"welcom":[0,3,4],"well":[2,3,21,30,31],"wells_corner_point":[10,19,21],"wells_structur":[10,19,21],"wet":2,"wheel":6,"wide":16,"will":3,"window":5,"without":30,"work":[3,6],"worker":[11,12],"world":5,"write":[2,6,16,23,26,29,30],"write_dense_data":[10,15,16],"write_fil":[10,19,23],"write_keyword":[10,19,23],"write_sparse_data":[10,15,16],"writefil":[10,19],"wsl":6,"www":6,"x":[2,4,11,12,21,24,27,28],"x0":[11,12],"xcent":21,"xci":21,"xco2l":[4,30],"xcoord":[21,23],"xformat":30,"xlim":18,"xlnum":30,"xunit":30,"xyz":21,"yformat":30,"yml":[3,4,6,23],"yournam":3,"yunit":30,"z":[2,4,11,12,21,28],"zcent":21,"zci":21,"zcoord":[21,23],"zcorn":23,"zip":30,"zlim":18,"znr":21,"zshrc":6,"ztop":21},"titles":["About pofff","pofff Python API","Configuration file","Contributing","Examples","Welcome to pofff\u2019s documentation!","Installation","Introduction","pofff","Output folder","pofff package","pofff.config package","pofff.config.config module","pofff.core package","pofff.core.pofff module","pofff.jobs package","pofff.jobs.data module","pofff.jobs.delete module","pofff.jobs.metric module","pofff.utils package","pofff.utils.inputvalues module","pofff.utils.mapproperties module","pofff.utils.runs module","pofff.utils.writefile module","pofff.visualization package","pofff.visualization.benchmark module","pofff.visualization.error_table module","pofff.visualization.everert module","pofff.visualization.maps module","pofff.visualization.sparse_values module","Publication","Related"],"titleterms":{"About":0,"ad":31,"add":4,"api":1,"benchmark":25,"binari":6,"brew":6,"build":6,"cite":0,"concept":7,"config":[11,12],"configur":2,"content":[10,11,13,15,19,24],"contribut":3,"core":[13,14],"data":16,"delet":17,"document":5,"error_t":26,"ert":9,"everert":27,"everest":9,"exampl":4,"exprecc":31,"file":2,"flow":6,"folder":9,"formula":6,"ground":3,"hello":4,"histori":4,"indic":5,"inputvalu":20,"instal":6,"introduct":7,"issu":3,"job":[15,16,17,18],"linux":6,"maco":6,"map":28,"mapproperti":21,"match":4,"metric":18,"micp":31,"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],"opm":6,"output":9,"overview":7,"packag":[6,10,11,13,15,19,24],"plopm":31,"pofff":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],"problem":3,"public":30,"pycopm":31,"pymm":31,"pyopmnearwel":31,"pyopmspe11":31,"python":[1,6],"relat":31,"report":3,"result":4,"rule":3,"run":[9,22],"s":5,"seek":3,"singl":9,"softwar":3,"sourc":6,"sparse_valu":29,"submodul":[11,13,15,19,24],"subpackag":10,"support":3,"tabl":5,"util":[19,20,21,22,23],"visual":[4,24,25,26,27,28,29],"welcom":5,"window":6,"world":4,"writefil":23}}) \ No newline at end of file +Search.setIndex({"alltitles":{"About pofff":[[0,null]],"Adding your results":[[4,"adding-your-results"]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"Citing":[[0,"citing"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"ERT":[[9,"ert"]],"Everest":[[9,"everest"]],"Examples":[[4,null]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"History matching":[[4,"history-matching"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pofff"],[11,"module-pofff.config"],[13,"module-pofff.core"],[15,"module-pofff.jobs"],[19,"module-pofff.utils"],[24,"module-pofff.visualization"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Publication":[[30,null]],"Python package":[[6,"python-package"]],"Related":[[31,null]],"Report issues or problems":[[3,"report-issues-or-problems"]],"Seek support":[[3,"seek-support"]],"Single run":[[9,"single-run"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodules":[[11,"submodules"],[13,"submodules"],[15,"submodules"],[19,"submodules"],[24,"submodules"]],"Subpackages":[[10,"subpackages"]],"Visualization":[[4,"visualization"]],"Welcome to pofff\u2019s documentation!":[[5,null]],"ad-micp":[[31,"ad-micp"]],"expreccs":[[31,"expreccs"]],"plopm":[[31,"plopm"]],"pofff":[[1,"pofff"],[8,null]],"pofff Python API":[[1,null]],"pofff package":[[10,null]],"pofff.config package":[[11,null]],"pofff.config.config module":[[12,null]],"pofff.core package":[[13,null]],"pofff.core.pofff module":[[14,null]],"pofff.jobs package":[[15,null]],"pofff.jobs.data module":[[16,null]],"pofff.jobs.delete module":[[17,null]],"pofff.jobs.metric module":[[18,null]],"pofff.utils package":[[19,null]],"pofff.utils.inputvalues module":[[20,null]],"pofff.utils.mapproperties module":[[21,null]],"pofff.utils.runs module":[[22,null]],"pofff.utils.writefile module":[[23,null]],"pofff.visualization package":[[24,null]],"pofff.visualization.benchmark module":[[25,null]],"pofff.visualization.error_table module":[[26,null]],"pofff.visualization.everert module":[[27,null]],"pofff.visualization.maps module":[[28,null]],"pofff.visualization.sparse_values module":[[29,null]],"pycopm":[[31,"pycopm"]],"pymm":[[31,"pymm"]],"pyopmnearwell":[[31,"pyopmnearwell"]],"pyopmspe11":[[31,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pofff","pofff.config","pofff.config.config","pofff.core","pofff.core.pofff","pofff.jobs","pofff.jobs.data","pofff.jobs.delete","pofff.jobs.metric","pofff.utils","pofff.utils.inputvalues","pofff.utils.mapproperties","pofff.utils.runs","pofff.utils.writefile","pofff.visualization","pofff.visualization.benchmark","pofff.visualization.error_table","pofff.visualization.everert","pofff.visualization.maps","pofff.visualization.sparse_values","publication","related"],"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","pofff.rst","pofff.config.rst","pofff.config.config.rst","pofff.core.rst","pofff.core.pofff.rst","pofff.jobs.rst","pofff.jobs.data.rst","pofff.jobs.delete.rst","pofff.jobs.metric.rst","pofff.utils.rst","pofff.utils.inputvalues.rst","pofff.utils.mapproperties.rst","pofff.utils.runs.rst","pofff.utils.writefile.rst","pofff.visualization.rst","pofff.visualization.benchmark.rst","pofff.visualization.error_table.rst","pofff.visualization.everert.rst","pofff.visualization.maps.rst","pofff.visualization.sparse_values.rst","publication.rst","related.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pofff"]],"pofff":[[11,0,0,"-","config"],[13,0,0,"-","core"],[15,0,0,"-","jobs"],[19,0,0,"-","utils"],[24,0,0,"-","visualization"]],"pofff.config":[[12,0,0,"-","config"]],"pofff.config.config":[[12,1,1,"","CliConfig"],[12,1,1,"","PofffConfig"]],"pofff.config.config.CliConfig":[[12,2,1,"","deck"],[12,2,1,"","experiment"],[12,2,1,"","figures"],[12,2,1,"","fol"],[12,2,1,"","jobs"],[12,2,1,"","location"],[12,2,1,"","mcon"],[12,2,1,"","mode"],[12,2,1,"","msat"],[12,2,1,"","times"],[12,2,1,"","use"]],"pofff.config.config.PofffConfig":[[12,2,1,"","args"],[12,2,1,"","atol"],[12,2,1,"","boxa"],[12,2,1,"","boxb"],[12,2,1,"","boxc"],[12,2,1,"","callback"],[12,2,1,"","cap"],[12,2,1,"","constraints"],[12,2,1,"","cores"],[12,2,1,"","data"],[12,2,1,"","deck"],[12,2,1,"","delete"],[12,2,1,"","diffusion"],[12,2,1,"","dims"],[12,2,1,"","disp"],[12,2,1,"","dx"],[12,2,1,"","dz"],[12,2,1,"","enkf_alpha"],[12,2,1,"","ensembles"],[12,2,1,"","errors"],[12,2,1,"","ertargs"],[12,2,1,"","everert"],[12,2,1,"","experiment"],[12,2,1,"","facies"],[12,2,1,"","figures"],[12,2,1,"","fipnum"],[12,2,1,"","flow"],[12,2,1,"","fluxnum"],[12,2,1,"","fol"],[12,2,1,"","grid"],[12,2,1,"","hascellmaps"],[12,2,1,"","hm"],[12,2,1,"","init"],[12,2,1,"","inj"],[12,2,1,"","integrality"],[12,2,1,"","jobs"],[12,2,1,"","krn"],[12,2,1,"","krw"],[12,2,1,"","location"],[12,2,1,"","max_batch_num"],[12,2,1,"","max_function_evaluations"],[12,2,1,"","maxiter"],[12,2,1,"","maxtime"],[12,2,1,"","mcon"],[12,2,1,"","min_realizations_success"],[12,2,1,"","mode"],[12,2,1,"","monotonic"],[12,2,1,"","msat"],[12,2,1,"","mult_thickness"],[12,2,1,"","multpv"],[12,2,1,"","mutation"],[12,2,1,"","nxz"],[12,2,1,"","para"],[12,2,1,"","path"],[12,2,1,"","polish"],[12,2,1,"","popsize"],[12,2,1,"","porv"],[12,2,1,"","pressure"],[12,2,1,"","random_seed"],[12,2,1,"","recombination"],[12,2,1,"","rng"],[12,2,1,"","sensor_ik"],[12,2,1,"","sensors"],[12,2,1,"","source_ik"],[12,2,1,"","sources"],[12,2,1,"","strategy"],[12,2,1,"","temperature"],[12,2,1,"","thickness"],[12,2,1,"","times"],[12,2,1,"","tol"],[12,2,1,"","tuning"],[12,2,1,"","updating"],[12,2,1,"","use"],[12,2,1,"","vectorized"],[12,2,1,"","workers"],[12,2,1,"","x"],[12,2,1,"","x0"],[12,2,1,"","z"]],"pofff.core":[[14,0,0,"-","pofff"]],"pofff.core.pofff":[[14,3,1,"","cli_config"],[14,3,1,"","generate_figures"],[14,3,1,"","main"],[14,3,1,"","parse_args"],[14,3,1,"","prepare_jobs_folder"],[14,3,1,"","prepare_simulation"],[14,3,1,"","run_simulation_steps"]],"pofff.jobs":[[16,0,0,"-","data"],[17,0,0,"-","delete"],[18,0,0,"-","metric"]],"pofff.jobs.data":[[16,1,1,"","SimulationContext"],[16,1,1,"","SparseResults"],[16,3,1,"","compute_m_c"],[16,3,1,"","create_from_summary"],[16,3,1,"","dense_data"],[16,3,1,"","find_simulation_base"],[16,3,1,"","interpolate_sparse"],[16,3,1,"","main"],[16,3,1,"","read_opm"],[16,3,1,"","sparse_data"],[16,3,1,"","write_dense_data"],[16,3,1,"","write_sparse_data"]],"pofff.jobs.data.SimulationContext":[[16,2,1,"","actind"],[16,2,1,"","dense_t"],[16,2,1,"","dims"],[16,2,1,"","egrid"],[16,2,1,"","gxyz"],[16,2,1,"","ini"],[16,2,1,"","maps"],[16,2,1,"","norst"],[16,4,1,"","nxz"],[16,2,1,"","porv"],[16,2,1,"","resolution"],[16,2,1,"","sim"],[16,2,1,"","smspec"],[16,2,1,"","sparse_t"],[16,2,1,"","time_initial"],[16,2,1,"","times"],[16,2,1,"","times_summary"],[16,2,1,"","unrst"],[16,2,1,"","where"]],"pofff.jobs.data.SparseResults":[[16,2,1,"","ctx"],[16,2,1,"","dissa"],[16,2,1,"","dissb"],[16,2,1,"","dx"],[16,2,1,"","dz"],[16,2,1,"","fipnum"],[16,2,1,"","imma"],[16,2,1,"","immb"],[16,2,1,"","m_c"],[16,2,1,"","m_c_series"],[16,2,1,"","moba"],[16,2,1,"","mobb"],[16,2,1,"","pop1"],[16,2,1,"","pop2"],[16,2,1,"","seala"],[16,2,1,"","sealb"],[16,2,1,"","sealt"],[16,2,1,"","times_data"]],"pofff.jobs.metric":[[18,3,1,"","before_emd"],[18,3,1,"","calculate_emd"],[18,3,1,"","generate_segment_map"],[18,3,1,"","main"]],"pofff.utils":[[20,0,0,"-","inputvalues"],[21,0,0,"-","mapproperties"],[22,0,0,"-","runs"],[23,0,0,"-","writefile"]],"pofff.utils.inputvalues":[[20,3,1,"","build_config"],[20,3,1,"","extract_facies"],[20,3,1,"","load_toml"],[20,3,1,"","postprocess_config"],[20,3,1,"","process_tuning"]],"pofff.utils.mapproperties":[[21,3,1,"","classify_boxes"],[21,3,1,"","corner"],[21,3,1,"","corner_point_handling_fluidflower"],[21,3,1,"","get_cellmaps"],[21,3,1,"","get_lines"],[21,3,1,"","getpolygons"],[21,3,1,"","grid_and_properties"],[21,3,1,"","handle_thickness_map"],[21,3,1,"","positions"],[21,3,1,"","refinement_z"],[21,3,1,"","sensors_corner_point"],[21,3,1,"","sensors_structured"],[21,3,1,"","structured_handling_fluidflower"],[21,3,1,"","wells_corner_point"],[21,3,1,"","wells_structured"]],"pofff.utils.runs":[[22,3,1,"","_run"],[22,3,1,"","benchmark"],[22,3,1,"","data"],[22,3,1,"","ert"],[22,3,1,"","everest"],[22,3,1,"","flow"],[22,3,1,"","postprocess"]],"pofff.utils.writefile":[[23,3,1,"","compact_format"],[23,3,1,"","create_corner_point_grid"],[23,3,1,"","render_bcprop"],[23,3,1,"","render_copyd"],[23,3,1,"","render_equalreg"],[23,3,1,"","render_ert"],[23,3,1,"","render_everest"],[23,3,1,"","render_flow"],[23,3,1,"","render_monotonic"],[23,3,1,"","render_satufunc"],[23,3,1,"","render_scale"],[23,3,1,"","write_files"],[23,3,1,"","write_keywords"]],"pofff.visualization":[[25,0,0,"-","benchmark"],[26,0,0,"-","error_table"],[27,0,0,"-","everert"],[28,0,0,"-","maps"],[29,0,0,"-","sparse_values"]],"pofff.visualization.benchmark":[[25,3,1,"","benchmark"],[25,3,1,"","load_parser"],[25,3,1,"","run_benchmark"]],"pofff.visualization.error_table":[[26,3,1,"","load_sparse_csv"],[26,3,1,"","parse_arguments"],[26,3,1,"","run_error_table"]],"pofff.visualization.everert":[[27,1,1,"","Config"],[27,1,1,"","EnsembleState"],[27,1,1,"","OptimizationState"],[27,3,1,"","copy_tree_contents"],[27,3,1,"","ensure_dir"],[27,3,1,"","extract_best_simulation"],[27,3,1,"","extract_optimal_solution"],[27,3,1,"","initialize_ensemble"],[27,3,1,"","parse_args"],[27,3,1,"","plot_cumulative_misfit"],[27,3,1,"","plot_hm_mismatch"],[27,3,1,"","plot_misfit"],[27,3,1,"","plot_observable_distribution"],[27,3,1,"","plot_optimization"],[27,3,1,"","plot_optimization_details"],[27,3,1,"","plot_parameter_distributions"],[27,3,1,"","plot_simulation_ensemble"],[27,3,1,"","process_optimization"],[27,3,1,"","read_realisation"],[27,3,1,"","run"],[27,3,1,"","run_everert"],[27,3,1,"","save_figure"],[27,3,1,"","setup_matplotlib"]],"pofff.visualization.everert.Config":[[27,2,1,"","external"],[27,2,1,"","jobs"],[27,2,1,"","maps"],[27,2,1,"","min_concentration"],[27,2,1,"","min_saturation"],[27,2,1,"","path"],[27,2,1,"","run"],[27,2,1,"","times"]],"pofff.visualization.everert.EnsembleState":[[27,2,1,"","cumulative"],[27,2,1,"","idrealisation"],[27,2,1,"","miss_ens"],[27,2,1,"","n_e"],[27,2,1,"","n_i"],[27,2,1,"","no_obs"],[27,2,1,"","no_para"],[27,2,1,"","num_ens"],[27,2,1,"","observations"],[27,2,1,"","par_dis"],[27,2,1,"","para_file"],[27,2,1,"","para_names"],[27,2,1,"","sim_ens"],[27,2,1,"","simulations"]],"pofff.visualization.everert.OptimizationState":[[27,2,1,"","ind_batch"],[27,2,1,"","ind_sim"],[27,2,1,"","optimal_value"],[27,2,1,"","optimization"],[27,2,1,"","s"],[27,2,1,"","tot_eval"],[27,2,1,"","x"]],"pofff.visualization.maps":[[28,3,1,"","load_points"],[28,3,1,"","pngs"],[28,3,1,"","run_maps"],[28,3,1,"","segment"]],"pofff.visualization.sparse_values":[[29,3,1,"","main"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","property","Python property"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:function","4":"py:property"},"terms":{"01_conmin":[4,30],"0f":30,"100e3":2,"10d":30,"10f":30,"1500e3":2,"1cm":30,"1cmish":30,"1e":[2,4,7,12,30],"1mm":30,"2e":[2,30],"2f":30,"3000e3":2,"300e3":2,"3e":[2,4],"50e3":2,"5d":30,"5e":[2,4,7,30],"5f":30,"636b45":30,"7e":30,"800e3":2,"9ca245":30,"9da347":30,"9fa44a":30,"A":[30,31],"About":5,"After":4,"All":30,"An":[3,31],"Below":31,"Both":0,"Each":2,"For":[0,2,3,4,6,30],"Here":2,"If":[2,4,6,30],"In":3,"THAN":4,"The":[0,1,2,3,4,6,7,9,30],"Then":[4,6,30],"There":6,"These":30,"This":[7,30],"To":[4,6,30],"We":[3,4],"While":[4,6],"YOURS":4,"You":[4,6,30],"_2":[4,30],"_build":3,"_run":[10,19,22],"a0a64d":30,"a2a750":30,"a3a953":30,"a5aa56":30,"a6ac59":30,"a8ad5c":30,"a9af5f":30,"abb062":30,"abl":6,"abort":[22,27],"abov":7,"accept":3,"access":30,"accord":[21,30],"accuraci":30,"across":12,"actind":[15,16],"action":[3,6],"activ":6,"ad":5,"adapt":30,"adb164":30,"add":[2,3,5,6,9,30],"addit":[3,4,30],"adjust":30,"aeb367":30,"ale":30,"alia":16,"also":[3,4,6,30],"altern":3,"alway":4,"anaconda":6,"analys":3,"ani":[3,12],"anoth":6,"answer":3,"api":[5,30],"appendix":30,"appendixb":[4,30],"appendixc":30,"appli":27,"approach":[0,3],"apt":6,"arg":[11,12,14],"argument":[7,12,14,22,25,26,27],"argv":[16,18,25,26,27,28],"array":2,"assign":[4,21],"atol":[11,12],"attempt":30,"auto":3,"automat":26,"avail":[6,30],"avoid":2,"b":30,"b0b46a":30,"b1b66d":30,"b3b770":30,"b4b973":30,"b6ba76":30,"b7bc79":30,"b9bd7c":30,"babf7f":30,"background":30,"base":[0,7,12,16,21,27,30,31],"basetemp":3,"bashrc":6,"basic":[7,12],"bcc082":30,"bcprop":23,"bec184":30,"befor":[3,12],"before_emd":[10,15,18],"behavior":18,"benchmark":[1,7,10,14,16,19,22,24,29,30,31],"best":27,"best_simul":9,"better":4,"bfc387":30,"bin":[2,3,6],"binari":[3,5],"bit":23,"black":[3,30],"bool":12,"bottom":2,"boundari":28,"box":21,"boxa":[11,12],"boxb":[11,12],"boxc":[11,12],"boxplot":27,"branch":6,"brew":5,"build":[2,3,5,14,20,21],"build_config":[10,19,20],"build_opm_mpi":6,"built":6,"c":[2,4,7,30],"c00b0b":30,"c1":7,"c10f0f":30,"c1c48a":30,"c2":7,"c21313":30,"c2c68d":30,"c31717":30,"c41b1b":30,"c4c790":30,"c5":7,"c51f1f":30,"c5c993":30,"c62323":30,"c72626":30,"c7ca96":30,"c82a2a":30,"c8cc99":30,"c92e2e":30,"ca3232":30,"cacd9c":30,"calcit":31,"calculate_emd":[10,15,18],"call":[1,4],"callabl":12,"callback":[11,12],"can":[3,4,6,30],"cap":[2,11,12],"capabl":4,"capillari":2,"cartesian":[2,30],"case":[4,30],"cb3636":30,"cbcf9f":30,"cbsfax":[4,30],"cc3a3a":30,"cco2":16,"cd":[6,30],"cd3e3e":30,"cdd0a2":30,"ce4141":30,"cell":[2,21],"center":[0,16],"central":12,"centroid":21,"cet_diverging_gwr_55_95_c38":30,"cf4545":30,"cfd":31,"cfd1a4":30,"cfg":[14,20,21,22,23,25,27],"cformat":[4,30],"chang":[3,4,30],"check":[3,6,30,31],"checker":3,"checkout":6,"choic":30,"ci":[3,6],"ci_pycopm_maco":3,"cite":5,"clabel":[4,30],"class":[12,16,27,28],"classify_box":[10,19,21],"cli":[12,14,20],"cli_config":[10,13,14],"cliconfig":[10,11,12,14,20],"clone":6,"closest":9,"cm":[6,30],"cmake":6,"cmd":[22,27],"cnum":[4,30],"cnv":30,"cnv_relax":30,"co":[4,30],"co2":[0,7,30,31],"code":[3,6,10],"codebas":12,"collabor":3,"color":4,"com":[1,4,6,7,30],"combin":[7,12,30],"comma":7,"command":[4,6,12,14,22,25,26,27,30],"commit":3,"common":[4,6],"compact":23,"compact_format":[10,19,23],"compar":[4,30],"compare_all_time_seri":4,"comparison":[14,22,25,26],"comput":[7,16,18,21,26,30],"compute_m_c":[10,15,16],"comun":1,"concentr":[7,18,28,30],"concept":5,"config":[1,4,8,10,20,24,27],"configur":[4,5,6,7,12,14,20,22,27,30],"conmin":[18,28],"connect":28,"consid":[4,7],"consist":27,"constant":4,"constraint":[11,12],"construct":21,"contain":[1,3,4,9,12,16],"content":[1,3,5,8,20,27,30],"continu":18,"contour":28,"contribut":[0,5,6,27],"control":[26,30],"convert":18,"coord":23,"coordin":[2,21],"copi":[3,6,14,27],"copy_tree_cont":[10,24,27],"copyd":23,"core":[1,4,8,10,11,12,30],"corner":[1,2,10,12,19,21,23,30],"corner_point_handling_fluidflow":[10,19,21],"correct":4,"correspond":[4,21,30],"cov":3,"cp":27,"cpr_trueimp":30,"cpus":[4,30],"creat":[3,6,18,27],"create_corner_point_grid":[10,19,23],"create_from_summari":[10,15,16],"csiro":4,"csp":31,"cssr":[0,4,6,7,30],"csv":[4,7,16,26,29,30],"csvs":4,"ctick":30,"ctx":[15,16],"cumul":[24,27],"curl":30,"current":[6,7],"current_directori":6,"custom":[4,30],"d":[0,4,30],"d04949":30,"d0d3a7":30,"d14d4d":30,"d25151":30,"d2d4aa":30,"d35555":30,"d3d6ad":30,"d45959":30,"d55c5c":30,"d5d7b0":30,"d66060":30,"d6d9b3":30,"d76464":30,"d86868":30,"d8dab6":30,"d96c6c":30,"d9dcb9":30,"da7070":30,"darus":30,"data":[1,4,7,10,11,12,15,19,20,22,26,30],"datafil":30,"datum":2,"day":[4,30],"db7474":30,"dbddbc":30,"dc7777":30,"dcdfbf":30,"dcmake_build_typ":6,"dcmake_prefix_path":6,"dd7b7b":30,"de":30,"de7f7f":30,"decay":30,"deck":[1,11,12],"decreas":[4,30],"dedic":6,"dee0c1":30,"default":7,"defin":[2,12,14,25],"definit":[20,21],"delax":30,"delet":[10,11,12,15],"dens":16,"dense_data":[10,15,16],"dense_t":[15,16],"depend":[3,6],"deriv":[12,20],"describ":[3,7],"descript":[2,4],"detail":[4,30],"determin":21,"dev":[3,6],"develop":6,"df8383":30,"diagnost":27,"dict":[12,20],"differ":[1,4,30],"diffus":[2,11,12],"dim":[11,12,15,16],"dir":2,"direct":4,"directori":[3,14,27,30],"discret":[18,28],"disk":26,"disp":[11,12],"dispatch":21,"disperc1":2,"disperc2":2,"disperc3":2,"disperc4":2,"disperc5":2,"disperc6":2,"dissa":[15,16],"dissb":[15,16],"dissolv":7,"distanc":[7,18,26,30],"distribut":27,"divid":2,"dmar":2,"doc":3,"docmunet":4,"document":[3,4,6,7],"doe":30,"doi":0,"done":6,"download":[1,6,30],"dpi":[4,27],"dst":27,"duse_mpi":6,"dvipng":6,"dwith_ndebug":6,"dx":[11,12,15,16,23],"dynam":31,"dz":[11,12,15,16,23],"e":[0,2,3,4,6,7,30],"e08787":30,"e0e1c4":30,"e18b8b":30,"e1e3c7":30,"e28f8f":30,"e39292":30,"e3e4ca":30,"e49696":30,"e4e6cd":30,"e59a9a":30,"e69e9":30,"e6e7d0":30,"e7a2a2":30,"e7e9d3":30,"e8a6a6":30,"e9aaaa":30,"e9ead6":30,"eaadad":30,"eaecd9":30,"ebb1b1":30,"ecb5b5":30,"eceddc":30,"eclfil":16,"eclips":23,"edb9b9":30,"edefdf":30,"edg":6,"edit":30,"eebdbd":30,"efc1c1":30,"eff0e1":30,"effici":23,"egrid":[15,16],"eight":4,"either":[6,21],"els":6,"em":31,"email":3,"emd":18,"enabl":[2,20,30],"encod":[23,30],"end":[4,6,30],"enkf_alpha":[11,12],"enrich":20,"ensembl":[11,12,27],"ensemblest":[10,24,27],"ensure_dir":[10,24,27],"enterpris":6,"entri":[2,14,16,25,27],"environ":[3,6],"equalreg":23,"error":[4,11,12,26],"error_t":[10,24],"error_table_satmin":[4,30],"erst":16,"ert":[1,4,5,7,10,19,22,23,27],"ertarg":[11,12],"esf":30,"esmri":16,"etc":[4,23],"evalu":[2,4,7],"everert":[10,11,12,24],"everest":[1,4,5,7,10,19,22,23,27,30],"everest_iter_3":4,"exact":18,"exampl":[2,5,9,30],"except":2,"execut":[1,2,3,4,6,7,9,14,22,27,30],"experi":[4,11,12,28],"experiment":[4,7,18,26,28],"experimental_data":18,"export":[3,6],"exprecc":5,"extend":3,"extern":[24,27],"extra":6,"extract":[16,20,27,29],"extract_best_simul":[10,24,27],"extract_faci":[10,19,20],"extract_optimal_solut":[10,24,27],"f":[4,7,30],"f0c5c5":30,"f1c8c8":30,"f1f1e4":30,"f2cccc":30,"f2f3e7":30,"f3d0d0":30,"f4d4d4":30,"f4f4ea":30,"f5d8d8":30,"f5f6ed":30,"f6dcdc":30,"f7e0e0":30,"f7f7f0":30,"f8e3e3":30,"f8f9f3":30,"f9e7e7":30,"faci":[2,4,11,12,21],"facie1":2,"facie2":2,"facie3":2,"facie4":2,"facie5":2,"facie6":2,"factor":[21,30],"factori":[12,16,27],"faebeb":30,"fafaf6":30,"fail":22,"failur":27,"fair":[7,30],"fals":12,"familiar":3,"fbefef":30,"fbfcf9":30,"fcf3f3":30,"fdf7f7":30,"fdfdfc":30,"featur":0,"fefbfb":30,"ff0000":30,"ff0100":30,"ff0200":30,"ff0300":30,"ff0400":30,"ff0500":30,"ff0600":30,"ff0700":30,"ff0800":30,"ff0900":30,"ff0a00":30,"ff0b00":30,"ff0c00":30,"ff0d00":30,"ff0e00":30,"ff0f00":30,"ff1000":30,"ff1100":30,"ff1200":30,"ff1300":30,"ff1400":30,"ff1500":30,"ff1600":30,"ff1700":30,"ff1800":30,"ff1900":30,"ff1a00":30,"ff1b00":30,"ff1c00":30,"ff1d00":30,"ff1e00":30,"ff1f00":30,"ff2000":30,"ff2100":30,"ff2200":30,"ff2300":30,"ff2400":30,"ff2500":30,"ff2600":30,"ff2700":30,"ff2800":30,"ff2900":30,"ff2a00":30,"ff2b00":30,"ff2c00":30,"ff2d00":30,"ff2e00":30,"ff2f00":30,"ff3000":30,"ff3100":30,"ff3200":30,"ff3300":30,"ff3400":30,"ff3500":30,"ff3600":30,"ff3700":30,"ff3800":30,"ff3900":30,"ff3a00":30,"ff3b00":30,"ff3c00":30,"ff3d00":30,"ff3e00":30,"ff3f00":30,"ff4000":30,"ff4100":30,"ff4200":30,"ff4300":30,"ff4400":30,"ff4500":30,"ff4600":30,"ff4700":30,"ff4800":30,"ff4900":30,"ff4a00":30,"ff4b00":30,"ff4c00":30,"ff4d00":30,"ff4e00":30,"ff4f00":30,"ff5000":30,"ff5100":30,"ff5200":30,"ff5300":30,"ff5400":30,"ff5500":30,"ff5600":30,"ff5700":30,"ff5800":30,"ff5900":30,"ff5a00":30,"ff5b00":30,"ff5c00":30,"ff5d00":30,"ff5e00":30,"ff5f00":30,"ff6000":30,"ff6100":30,"ff6200":30,"ff6300":30,"ff6400":30,"ff6500":30,"ff6600":30,"ff6700":30,"ff6800":30,"ff6900":30,"ff6a00":30,"ff6b00":30,"ff6c00":30,"ff6d00":30,"ff6e00":30,"ff6f00":30,"ff7000":30,"ff7100":30,"ff7200":30,"ff7300":30,"ff7400":30,"ff7500":30,"ff7600":30,"ff7700":30,"ff7800":30,"ff7900":30,"ff7a00":30,"ff7b00":30,"ff7c00":30,"ff7d00":30,"ff7e00":30,"ff7f00":30,"ff8000":30,"ff8100":30,"ff8200":30,"ff8300":30,"ff8400":30,"ff8500":30,"ff8600":30,"ff8700":30,"ff8800":30,"ff8900":30,"ff8a00":30,"ff8b00":30,"ff8c00":30,"ff8d00":30,"ff8e00":30,"ff8f00":30,"ff9000":30,"ff9100":30,"ff9200":30,"ff9300":30,"ff9400":30,"ff9500":30,"ff9600":30,"ff9700":30,"ff9800":30,"ff9900":30,"ff9a00":30,"ff9b00":30,"ff9c00":30,"ff9d00":30,"ff9e00":30,"ff9f00":30,"ffa000":30,"ffa100":30,"ffa200":30,"ffa300":30,"ffa400":30,"ffa500":30,"ffa600":30,"ffa700":30,"ffa800":30,"ffa900":30,"ffaa00":30,"ffab00":30,"ffac00":30,"ffad00":30,"ffae00":30,"ffaf00":30,"ffb000":30,"ffb100":30,"ffb200":30,"ffb300":30,"ffb400":30,"ffb500":30,"ffb600":30,"ffb700":30,"ffb800":30,"ffb900":30,"ffba00":30,"ffbb00":30,"ffbc00":30,"ffbd00":30,"ffbe00":30,"ffbf00":30,"ffc000":30,"ffc100":30,"ffc200":30,"ffc300":30,"ffc400":30,"ffc500":30,"ffc600":30,"ffc700":30,"ffc800":30,"ffc900":30,"ffca00":30,"ffcb00":30,"ffcc00":30,"ffcd00":30,"ffce00":30,"ffcf00":30,"ffd000":30,"ffd100":30,"ffd200":30,"ffd300":30,"ffd400":30,"ffd500":30,"ffd600":30,"ffd700":30,"ffd800":30,"ffd900":30,"ffda00":30,"ffdb00":30,"ffdc00":30,"ffdd00":30,"ffde00":30,"ffdf00":30,"ffe000":30,"ffe100":30,"ffe200":30,"ffe300":30,"ffe400":30,"ffe500":30,"ffe600":30,"ffe700":30,"ffe800":30,"ffe900":30,"ffea00":30,"ffeb00":30,"ffec00":30,"ffed00":30,"ffee00":30,"ffef00":30,"fff000":30,"fff100":30,"fff200":30,"fff300":30,"fff400":30,"fff500":30,"fff600":30,"fff700":30,"fff800":30,"fff900":30,"fffa00":30,"fffb00":30,"fffc00":30,"fffd00":30,"ffffff":30,"fi":6,"field":[18,28],"fig":27,"figur":[4,6,7,9,11,12,14,22,25,27,30],"figure10":30,"figure10d":30,"figure10f":30,"figure3":30,"figure3a":30,"figure3b":30,"figure4":30,"figure4ish":30,"figure5":30,"figure5d":30,"figure5f":30,"figures10":30,"figures10d":30,"figures5":30,"figures5d":30,"file":[1,3,4,5,6,7,9,14,16,17,20,23,26,28,30],"file_1":18,"file_2":18,"file_nam":18,"filenam":[20,26,28,30],"filledtempl":30,"final":[1,2,12,27,30],"find_simulation_bas":[10,15,16],"fip":21,"fipnum":[11,12,15,16,23],"first":2,"fit":27,"five":4,"fix":[2,3],"flag":[2,4,20,30],"flexibl":30,"float":[12,16,18,21,27],"float64":21,"flow":[2,3,4,5,7,10,11,12,19,22,23,30,31],"flow_maco":3,"fluidflow":[1,4,7,21],"flux":21,"fluxnum":[11,12,23],"fol":[11,12],"folder":[1,3,4,5,6,7,27,30],"follow":[2,4,6,7,9,30],"font":[4,6],"forecast":4,"fork":[0,3],"forlder":1,"format":[3,4,6,25,26,29,30],"formula":5,"found":4,"fraction":[4,30],"framework":[0,1,4,7,31],"friend":[7,30],"full":[2,6],"fulli":20,"function":[2,4,20,21,22,23],"fund":0,"g":[2,3,4,6,30],"gas":2,"gasda":0,"gaseous":7,"generat":[1,2,3,4,7,9,14,21,22,23,25,27,28,29,30,31],"generate_figur":[10,13,14],"generate_segment_map":[10,15,18],"geo":28,"geolog":[1,21,28,31],"geometri":1,"get":[3,6],"get_cellmap":[10,19,21],"get_lin":[10,19,21],"getpolygon":[10,19,21],"gif":[4,31],"git":[4,6,30],"github":[1,2,3,4,6,7,30],"githubusercont":30,"give":30,"given":4,"grid":[1,2,4,6,11,12,16,21,23,30],"grid_and_properti":[10,19,21],"ground":5,"growth":30,"gxyz":[15,16],"h":[0,4,30],"handl":[16,26],"handle_thickness_map":[10,19,21],"hascellmap":[11,12],"hat":6,"head":30,"header":26,"hello":5,"help":[3,6],"histori":[0,2,5,7],"hm":[4,11,12],"hold":27,"homebrew":6,"horizon":21,"host":[1,7],"hour":[7,16],"html":3,"https":[0,1,4,6,7,30],"ident":23,"idrealis":[24,27],"ignor":3,"imag":[0,7,18,31],"imma":[15,16],"immb":[15,16],"implement":[7,23],"import":[3,30],"includ":[6,23,30],"increas":30,"ind_batch":[24,27],"ind_sim":[24,27],"index":[5,21],"indic":21,"induc":31,"indx":18,"inf":27,"inform":[4,16],"ini":[15,16],"init":[11,12],"initi":[2,4,20,27],"initialize_ensembl":[10,24,27],"inj":[2,4,11,12],"inject":[2,20],"input":[1,2,7,12,14,20,30],"inputvalu":[10,19],"insid":6,"instal":[3,4,5,30],"instruct":6,"int":[12,16,18,21,27],"int64":18,"integr":[11,12],"interact":22,"interest":[6,30,31],"interim":6,"interpol":16,"interpolate_spars":[10,15,16],"interval":4,"introduct":5,"isotrop":4,"issu":[0,4,5],"iter":[2,4,12,27,30],"j":[0,27],"j5":6,"job":[1,8,10,11,12,14,24,27],"keyword":[4,23],"kg":2,"krn":[2,11,12],"krw":[2,11,12],"l":[6,30],"label":4,"landa":0,"larg":17,"last":4,"latest":6,"latex":6,"leakag":31,"length":23,"less":[4,30],"librari":6,"like":4,"limit":30,"line":[2,3,4,6,12,14,21,25,26,27,28,30],"linear":30,"link":6,"lint":6,"linux":5,"liquid":[2,4,30],"list":[12,16,21,23,27],"load":[16,20,21,26,28],"load_pars":[10,24,25],"load_point":[10,24,28],"load_sparse_csv":[10,24,26],"load_toml":[10,19,20],"local":[3,4],"locat":[1,11,12,16],"look":3,"loop":4,"low":4,"m":[0,2,4,6,7,9,30],"m_c":[15,16],"m_c_seri":[15,16],"mac":[4,30],"machin":[2,4,6,30],"maco":[3,5],"macport":6,"mactex":6,"main":[1,3,10,13,14,15,16,18,20,24,25,29,30],"maintain":3,"make":[3,6,14],"mako":[1,23,30],"mamba":6,"manag":6,"manual":30,"map":[2,4,10,15,16,18,21,24,27,30],"map_24h":4,"mapproperti":[10,19],"marb\u00e1n":0,"mask":[4,30],"maskthr":[4,30],"mass":[4,16,30],"master":6,"match":[0,2,5,7],"matplotlib":27,"matrix":7,"max":[2,12,30],"max_batch_num":[11,12],"max_function_evalu":[4,11,12],"maximum":4,"maxit":[11,12],"maxtim":[11,12],"mcon":[11,12],"mean":27,"measur":2,"med":0,"memori":27,"merg":3,"metric":[7,10,15,16,26],"micp":5,"microbi":31,"microsystem":31,"might":[3,4,6,30,31],"migrat":16,"min":[2,30],"min_concentr":[24,27],"min_realizations_success":[11,12],"min_satur":[24,27],"miniforg":6,"minimum":7,"minut":4,"misfit":27,"miss":[3,4,27],"miss_en":[24,27],"mit_m1":4,"mkdir":[6,30],"moba":[15,16],"mobb":[15,16],"mode":[11,12,14],"model":[2,12,21,31],"model_result":18,"modifi":[1,4,6,30],"modul":[1,5,8,31],"monoton":[11,12,23],"mpi":[6,30],"mpirun":[2,30],"msat":[11,12],"mult_thick":[2,11,12],"multipli":[2,4,21],"multpv":[11,12],"multx":30,"mutat":[11,12],"my_simul":4,"mypi":3,"mytempl":30,"n":[3,23],"n_e":[24,27],"n_i":[24,27],"name":[4,7,16],"name_of_input_fil":7,"namespac":14,"ncz":21,"ndarray":[12,16,18,21,23,27],"near":31,"need":[3,4,6,30],"new":[0,3,4,30],"newton":[2,30],"newtoniterationcount":30,"next":2,"nice":[3,6],"nkrn":[2,12],"nkrn1":2,"nkrn2":2,"nkrn3":2,"nkrn4":2,"nkrn5":2,"nkrn6":2,"nkrw":[2,12],"nkrw1":2,"nkrw2":2,"nkrw3":2,"nkrw4":2,"nkrw5":2,"nkrw6":2,"no_ob":[24,27],"no_para":[24,27],"non":2,"none":[4,7,12,14,16,18,20,21,22,23,25,26,27,28,29,30],"nordbotten":0,"normal":[12,14,20,21],"norst":[15,16],"note":4,"np":[2,30],"np6":4,"npe1":2,"npe2":2,"npe3":2,"npe4":2,"npe5":2,"npe6":2,"npen":[2,12],"npnt1":2,"npnt2":2,"npnt3":2,"npnt4":2,"npnt5":2,"npnt6":2,"npntn":2,"num_en":[24,27],"number":[2,4,21,30],"numer":18,"numpi":23,"nxz":[11,12,15,16],"o":[4,7,9,30],"object":[12,14,16,20,27],"observ":[9,24,27],"obtain":30,"one":[2,4,27],"onli":7,"onlin":[4,6],"onto":16,"open":[0,6,7,30,31],"oper":30,"opm":[2,3,4,5,7,16,22,23,30,31],"opm2":30,"opm3":30,"opm4":30,"opt":27,"optim":[22,24,27],"optimal_valu":[24,27],"optimizationst":[10,24,27],"option":[6,7,12,22,26],"org":[0,6],"origin":[16,18,23],"otherwis":2,"outcom":27,"output":[2,4,5,7,12,14,16,23],"output_fil":29,"overlay":28,"overview":5,"pa":2,"packag":[1,3,5,8],"page":[3,5],"paper":[4,30],"par_di":[24,27],"para":[11,12],"para_fil":[24,27],"para_nam":[24,27],"parallel":4,"paramet":[2,4,27],"pars":[14,25,26,27],"parse_arg":[10,13,14,24,27],"parse_argu":[10,24,26],"part":1,"path":[2,3,6,11,12,14,16,20,24,26,27,28],"pen":[2,12],"pen1":2,"pen2":2,"pen3":2,"pen4":2,"pen5":[2,4],"pen6":2,"per":27,"perform":0,"perm":2,"perm3":4,"permeabl":4,"permx1":2,"permx2":[2,4],"permx3":2,"permx4":2,"permx5":2,"permx6":2,"permz1":2,"permz2":2,"permz3":2,"permz4":2,"permz5":2,"permz6":2,"phase":30,"pip":[3,4,6,30],"platform":6,"pleas":[0,3,4],"plopm":[4,5,6,30],"plot":[4,7,14,18,22,27,28],"plot_cumulative_misfit":[10,24,27],"plot_hm_mismatch":[10,24,27],"plot_misfit":[10,24,27],"plot_observable_distribut":[10,24,27],"plot_optim":[10,24,27],"plot_optimization_detail":[10,24,27],"plot_parameter_distribut":[10,24,27],"plot_simulation_ensembl":[10,24,27],"png":[4,18],"pngs":[4,9,10,24,28,31],"pofff":[3,4,6,7,9,30],"pofff_path":[14,20],"pofffconfig":[10,11,12,14,20,21,22,23],"point":[1,2,12,16,21,23,25,27,28,30],"polish":[11,12],"polygon":21,"pop1":[15,16],"pop2":[15,16],"popsiz":[11,12],"poro1":2,"poro2":2,"poro3":2,"poro4":2,"poro5":2,"poro6":2,"porous":0,"porv":[11,12,15,16],"posit":[2,10,19,21],"posixpath":[12,16],"possibl":[3,4],"postprocess":[1,4,10,16,19,22,27],"postprocess_config":[10,19,20],"precipit":31,"precomput":7,"prefer":3,"prepar":[14,20],"prepare_jobs_fold":[10,13,14],"prepare_simul":[10,13,14],"prerequisit":6,"preserv":[16,18],"pressur":[2,11,12],"previous":[3,6],"principl":30,"problem":5,"process":[22,27],"process_optim":[10,24,27],"process_tun":[10,19,20],"profil":[4,30],"progress":27,"project":[0,6,31],"prompt":22,"properti":[2,16,21],"prs":3,"public":[2,3,4,5],"pull":[0,3,4],"push":3,"pushd":3,"pvtnum":30,"pwd":6,"py":[4,23,30],"py314":3,"pycopm":[3,5,6],"pylint":3,"pymm":5,"pyopmnearwel":5,"pyopmspe11":[5,30],"pytest":3,"python":[3,5,30,31],"python3":[6,30],"quantifi":26,"quantiti":16,"quick":31,"r":[3,6,27,30],"r2_cart_1cm_capmax2500pa":30,"r3_cp_1cmish_capmax2500pa":30,"r4_cart_1mm_capmax2500pa":30,"r5_cart_1mm_capmax2500pa_strictol":30,"rais":[0,3,4],"ran":4,"random":[4,30],"random_se":[11,12],"rang":4,"rate":[2,30],"raw":[12,30],"read":[21,27,29],"read_opm":[10,15,16],"read_realis":[10,24,27],"real":2,"realiz":27,"recent":6,"recombin":[11,12],"recommend":6,"red":6,"ref":30,"refer":[4,21],"refin":[2,21],"refinement_z":[10,19,21],"refxz":16,"regard":30,"region":[21,31],"rel":2,"relat":[3,5],"releas":[6,27],"reload":6,"remedi":31,"remov":[20,30],"render":30,"render_bcprop":[10,19,23],"render_copyd":[10,19,23],"render_equalreg":[10,19,23],"render_ert":[10,19,23],"render_everest":[10,19,23],"render_flow":[10,19,23],"render_monoton":[10,19,23],"render_satufunc":[10,19,23],"render_scal":[10,19,23],"replac":3,"repo":[3,6],"report":[5,30],"repositori":[3,6],"reproduc":[4,18,30],"request":[0,3,4,18,20],"requir":[3,4,6,18,30],"res":16,"reservoir":31,"resinsight":6,"resolut":[4,15,16],"resourc":[0,30],"restart":[16,30],"result":[2,5,6,9,18,22,26,27,30],"return":20,"review":3,"rig":2,"rise":3,"rng":[11,12,30],"round":18,"routin":14,"rst":[2,30],"ruff":3,"rule":5,"run":[3,4,5,6,7,10,14,19,23,24,25,27,30],"run2":12,"run_benchmark":[10,24,25],"run_error_t":[10,24,26],"run_everert":[10,24,27],"run_map":[10,24,28],"run_simulation_step":[10,13,14],"runtim":[12,20,27],"s":[0,2,3,6,7,24,27],"s11242":0,"sand":30,"sandv":0,"satmin":[18,28],"satnum":[4,30],"satufunc":23,"satur":[2,7,18,28],"save":[27,30],"save_figur":[10,24,27],"scale":23,"schedul":2,"score":18,"screenshot":9,"script":[1,3,4,6,14,17,30],"seala":[15,16],"sealb":[15,16],"sealt":[15,16],"search":[5,6],"section":[23,30],"see":[2,3,4,6,30],"seed":[4,30],"seek":5,"segment":[7,10,18,24,28],"select":[14,16,21,28],"send":3,"sensit":30,"sensor":[11,12,21],"sensor_ik":[11,12],"sensors_corner_point":[10,19,21],"sensors_structur":[10,19,21],"separ":7,"sequenc":[12,22],"seri":[16,22,29],"set":[2,4,6,7,12,30],"setup":30,"setup_matplotlib":[10,24,27],"setuptool":6,"sgas":16,"sh":6,"shorter":4,"show":[9,30],"sim":[15,16],"sim_en":[24,27],"similar":30,"simpli":6,"simul":[2,3,4,6,7,9,16,18,22,24,26,27,28,30,31],"simulationcontext":[10,15,16],"simxcent":21,"simzcent":21,"singl":[3,4,5,7,12,16,30],"site":31,"six":3,"size":[2,4],"skip":[6,22],"slow":7,"smspec":[15,16],"sni":[2,12],"sni1":2,"sni2":2,"sni3":2,"sni4":2,"sni5":2,"sni6":2,"softwar":5,"solver":30,"soon":3,"sourc":[0,2,3,5,7,11,12,31],"source1":2,"source2":2,"source_ik":[11,12],"spars":[16,26,29],"sparse_data":[4,10,15,16,29],"sparse_t":[15,16],"sparse_valu":[10,24],"sparseresult":[10,15,16],"spatial":[4,16,18,21,22,28,30],"spatial_map_xh":4,"spe11":31,"spe11a":30,"spe11a_spatial_map_48h":30,"specif":[6,20,21],"speed":[7,30],"split":4,"squash":3,"src":[3,27],"state":[16,27],"static":3,"statist":27,"step":[2,3,4,6,30],"storag":[0,31],"str":[12,18,20,21,22,27,29],"strategi":[11,12],"stricter":30,"structur":[12,21],"structured_handling_fluidflow":[10,19,21],"studi":[4,7,27,30,31],"stuttgart":30,"style":[4,21,23,27],"subfig":30,"submit":30,"submodul":[1,8,10],"subpackag":[1,5,8],"subprocess":30,"subsect":[9,30],"subsurfac":0,"subsystem":6,"succed":6,"succeed":[3,6],"success":27,"sudo":6,"sum":27,"summar":26,"summari":16,"super":6,"support":[2,4,5,6,7,30],"suptitl":30,"sustain":0,"sw":[2,12],"swi":[2,12],"swi1":2,"swi2":2,"swi3":2,"swi4":2,"swi5":2,"swi6":2,"system":[3,4,30],"t":[0,4,7,28,30],"tab20":27,"tabl":[2,9,26,30],"tag":6,"tailor":31,"tap":6,"target":3,"temperatur":[2,11,12],"templat":[23,30],"templeat":1,"tensor":2,"term":3,"termin":[4,6,30],"test":[2,3,4,6],"test_output":3,"texliv":6,"thick":[2,11,12,21,30],"thicknessmult":4,"thre1":2,"thre2":2,"thre3":2,"thre4":2,"thre5":2,"thre6":2,"thren":2,"threshold":[2,26],"tick":4,"time":[2,4,7,11,12,15,16,18,22,24,27,28,29,30],"time_initi":[15,16],"time_seri":[4,29],"times_data":[15,16],"times_summari":[15,16],"timeseries_fil":29,"tol":[11,12],"toler":30,"toml":[2,4,7,9,12,20,30],"tool":[0,3,4,6,7,30,31],"top":2,"tot_ev":[24,27],"total":[4,18],"track":27,"trade":30,"transp":0,"tri":[3,6,30],"trip":18,"true":[2,30],"trust":6,"tug":6,"tune":[2,11,12,20],"tunit":4,"tupl":[12,16,18,21],"turn":6,"tutori":[3,6],"two":[4,18],"txt":[3,6,23],"type":[2,4,6,12,21,31],"u":7,"ubuntu":[3,6],"uni":30,"unifi":12,"uniform":16,"unrst":[15,16],"unzip":30,"updat":[11,12,27],"upgrad":6,"use":[0,2,3,4,6,7,11,12,23,30,31],"user":[2,3,6,7],"utf8":30,"util":[1,8,10],"v":[4,30],"v2026":6,"valid":7,"valu":[2,7,16,20,23,29,30],"var":30,"variabl":[2,3,4,23],"vector":[11,12,16],"venv":6,"version":[3,6,10],"vertic":21,"via":[4,6],"virtual":6,"visit":3,"visual":[1,5,6,8,10],"vpofff":6,"vtks":31,"w":[0,30],"wasserstain":7,"wasserstein":[7,18,26,30],"websit":30,"welcom":[0,3,4],"well":[2,3,21,30,31],"wells_corner_point":[10,19,21],"wells_structur":[10,19,21],"wet":2,"wheel":6,"wide":16,"will":3,"window":5,"without":30,"work":[3,6],"worker":[11,12],"world":5,"write":[2,6,16,23,26,29,30],"write_dense_data":[10,15,16],"write_fil":[10,19,23],"write_keyword":[10,19,23],"write_sparse_data":[10,15,16],"writefil":[10,19],"wsl":6,"www":6,"x":[2,4,11,12,21,24,27,28],"x0":[11,12],"xcent":21,"xci":21,"xco2l":[4,30],"xcoord":[21,23],"xformat":30,"xlim":18,"xlnum":30,"xunit":30,"xyz":21,"y":6,"yformat":30,"yml":[3,4,6,23],"yournam":3,"yunit":30,"z":[2,4,11,12,21,28],"zcent":21,"zci":21,"zcoord":[21,23],"zcorn":23,"zip":30,"zlim":18,"znr":21,"zshrc":6,"ztop":21},"titles":["About pofff","pofff Python API","Configuration file","Contributing","Examples","Welcome to pofff\u2019s documentation!","Installation","Introduction","pofff","Output folder","pofff package","pofff.config package","pofff.config.config module","pofff.core package","pofff.core.pofff module","pofff.jobs package","pofff.jobs.data module","pofff.jobs.delete module","pofff.jobs.metric module","pofff.utils package","pofff.utils.inputvalues module","pofff.utils.mapproperties module","pofff.utils.runs module","pofff.utils.writefile module","pofff.visualization package","pofff.visualization.benchmark module","pofff.visualization.error_table module","pofff.visualization.everert module","pofff.visualization.maps module","pofff.visualization.sparse_values module","Publication","Related"],"titleterms":{"About":0,"ad":31,"add":4,"api":1,"benchmark":25,"binari":6,"brew":6,"build":6,"cite":0,"concept":7,"config":[11,12],"configur":2,"content":[10,11,13,15,19,24],"contribut":3,"core":[13,14],"data":16,"delet":17,"document":5,"error_t":26,"ert":9,"everert":27,"everest":9,"exampl":4,"exprecc":31,"file":2,"flow":6,"folder":9,"formula":6,"ground":3,"hello":4,"histori":4,"indic":5,"inputvalu":20,"instal":6,"introduct":7,"issu":3,"job":[15,16,17,18],"linux":6,"maco":6,"map":28,"mapproperti":21,"match":4,"metric":18,"micp":31,"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],"opm":6,"output":9,"overview":7,"packag":[6,10,11,13,15,19,24],"plopm":31,"pofff":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],"problem":3,"public":30,"pycopm":31,"pymm":31,"pyopmnearwel":31,"pyopmspe11":31,"python":[1,6],"relat":31,"report":3,"result":4,"rule":3,"run":[9,22],"s":5,"seek":3,"singl":9,"softwar":3,"sourc":6,"sparse_valu":29,"submodul":[11,13,15,19,24],"subpackag":10,"support":3,"tabl":5,"util":[19,20,21,22,23],"visual":[4,24,25,26,27,28,29],"welcom":5,"window":6,"world":4,"writefil":23}}) \ No newline at end of file diff --git a/docs/text/contributing.rst b/docs/text/contributing.rst index a6b013b..4fcc813 100644 --- a/docs/text/contributing.rst +++ b/docs/text/contributing.rst @@ -23,7 +23,7 @@ Contribute to the software #. In the main repo execute: #. **pip install -r dev-requirements.txt** (this installs the `dev-requirements.txt `_) - #. **black \-\-target-version py312 src/ tests/ publication/** (this formats the code) + #. **black \-\-target-version py314 src/ tests/ publication/** (this formats the code) #. **pylint src/ tests/ publication/** (this analyses the code, and might rise issues that need to be fixed before the pull request) #. **ruff check src/ tests/ publication/** (this also analyses the code, and might rise issues that need to be fixed before the pull request) #. **mypy \-\-ignore-missing-imports src/ tests/** (this is a static checker, and might rise issues that need to be fixed before the pull request) diff --git a/docs/text/installation.rst b/docs/text/installation.rst index b59cba8..ef29fab 100644 --- a/docs/text/installation.rst +++ b/docs/text/installation.rst @@ -14,7 +14,9 @@ supported Python versions are 3.12 to 3.14. .. code-block:: bash - brew install cssr-tools/opm/resinsight + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/resinsight -y Then, you should be able to open resinsight by typing in the terminal **resinsight**. @@ -128,11 +130,13 @@ Brew formula for macOS ++++++++++++++++++++++ For macOS, there are no available binary packages, so OPM Flow needs to be built from source. Recently, a formula to build flow using brew has been added in `https://github.com/cssr-tools/homebrew-opm `_. -Then, you can try to install flow (v2026.02) by simply typing: +Then, you can try to install flow (v2026.07 interim release) by simply typing: .. code-block:: console - brew install cssr-tools/opm/opm-simulators + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/opm-simulators -y You can check if the installation of OPM Flow succeded by typing in the terminal **flow \-\-help**. diff --git a/publication/accuracy.py b/publication/accuracy.py index baaecf6..9fb44e8 100644 --- a/publication/accuracy.py +++ b/publication/accuracy.py @@ -6,11 +6,11 @@ Accuracy vs wall-time trade-offs for CNV solver tolerances. """ -from pathlib import Path import subprocess +from pathlib import Path -from opm.io.ecl import ESmry as OpmSummary from mako.template import Template +from opm.io.ecl import ESmry as OpmSummary # ----------------------------------------------------------------------------- # Configuration diff --git a/publication/profiling.py b/publication/profiling.py index aabedb7..4be8cd8 100644 --- a/publication/profiling.py +++ b/publication/profiling.py @@ -7,16 +7,16 @@ Profiling workflow wall-time and OPM Flow simulation statistics. """ -from pathlib import Path import shutil import subprocess import time +from pathlib import Path -import numpy as np import matplotlib import matplotlib.pyplot as plt -from opm.io.ecl import ESmry as OpmSummary +import numpy as np from mako.template import Template +from opm.io.ecl import ESmry as OpmSummary # ----------------------------------------------------------------------------- # Configuration diff --git a/publication/sensitivity.py b/publication/sensitivity.py index 58ce3de..34acb16 100644 --- a/publication/sensitivity.py +++ b/publication/sensitivity.py @@ -4,6 +4,7 @@ """Table 8 in the pofff paper""" import subprocess + from mako.template import Template mytemplate = Template(filename="appendixc.mako") diff --git a/src/pofff/config/config.py b/src/pofff/config/config.py index 8830622..a70320e 100644 --- a/src/pofff/config/config.py +++ b/src/pofff/config/config.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # SPDX-FileCopyrightText: 2023-2026 NORCE Research AS # SPDX-License-Identifier: GPL-3.0 @@ -10,9 +9,11 @@ - PofffConfig: unified runtime and TOML-based configuration """ +from collections.abc import Callable, Iterable, Sequence from dataclasses import dataclass, field from pathlib import Path -from typing import Any, Callable, Dict, List, Iterable, Sequence, Tuple, Optional, Union +from typing import Any + import numpy as np @@ -66,13 +67,13 @@ class PofffConfig: grid: str = "corner-point" thickness: str = "final" mult_thickness: float = 1.0 - x: List[int] = field(default_factory=list) - z: List[int] = field(default_factory=list) - temperature: List[float] = field(default_factory=lambda: [20, 20]) + x: list[int] = field(default_factory=list) + z: list[int] = field(default_factory=list) + temperature: list[float] = field(default_factory=lambda: [20, 20]) pressure: float = 0.0 diffusion: np.ndarray = field(default_factory=lambda: np.array([1e-9, 2e-8])) - sources: List[List[float]] = field(default_factory=lambda: [[0, 0], [0, 0]]) - inj: List[List[Any]] = field(default_factory=lambda: [[]]) + sources: list[list[float]] = field(default_factory=lambda: [[0, 0], [0, 0]]) + inj: list[list[Any]] = field(default_factory=lambda: [[]]) krw: str = "(max(0, (sw - swi) / (1 - swi))) ** nkrw" krn: str = "(max(0, (1 - sw - sni) / (1 - sni))) ** nkrn" cap: str = "pen * ((sw-swi) / (1-swi)) ** (-(1.0 / npen))" @@ -80,48 +81,48 @@ class PofffConfig: # ------------------------------------------------------------------ # TOML configuration (ERT / everest runtime) # ------------------------------------------------------------------ - cores: Optional[int] = None - maxtime: Optional[float] = None - delete: Optional[bool] = None + cores: int | None = None + maxtime: float | None = None + delete: bool | None = None # ------------------------------------------------------------------ # TOML configuration (ERT) # ------------------------------------------------------------------ - ertargs: Optional[str] = None - ensembles: Optional[int] = None - enkf_alpha: Optional[float] = None - errors: Optional[np.ndarray] = None - random_seed: Optional[int] = None # Used by scipy differential evolution + ertargs: str | None = None + ensembles: int | None = None + enkf_alpha: float | None = None + errors: np.ndarray | None = None + random_seed: int | None = None # Used by scipy differential evolution # ------------------------------------------------------------------ # TOML configuration (everest) # ------------------------------------------------------------------ - min_realizations_success: Optional[int] = None - max_function_evaluations: Optional[int] = None - max_batch_num: Optional[int] = None + min_realizations_success: int | None = None + max_function_evaluations: int | None = None + max_batch_num: int | None = None # ------------------------------------------------------------------ # TOML differential evolution parameters (via everest) # ------------------------------------------------------------------ - args: Optional[Tuple[Any, ...]] = None - strategy: Optional[str] = None - maxiter: Optional[int] = None - popsize: Optional[int] = None - tol: Optional[float] = None - mutation: Optional[Union[float, Tuple[float, float]]] = None - recombination: Optional[float] = None - rng: Optional[Any] = None - callback: Optional[Callable] = None - disp: Optional[bool] = None - polish: Optional[bool] = None - init: Optional[str] = None - atol: Optional[float] = None - updating: Optional[str] = None - workers: Optional[int] = None - constraints: Optional[Iterable[Any]] = None - x0: Optional[Sequence[float]] = None - integrality: Optional[Sequence[bool]] = None - vectorized: Optional[bool] = None + args: tuple[Any, ...] | None = None + strategy: str | None = None + maxiter: int | None = None + popsize: int | None = None + tol: float | None = None + mutation: float | tuple[float, float] | None = None + recombination: float | None = None + rng: Any | None = None + callback: Callable | None = None + disp: bool | None = None + polish: bool | None = None + init: str | None = None + atol: float | None = None + updating: str | None = None + workers: int | None = None + constraints: Iterable[Any] | None = None + x0: Sequence[float] | None = None + integrality: Sequence[bool] | None = None + vectorized: bool | None = None # ------------------------------------------------------------------ # OPM input arrays @@ -131,28 +132,28 @@ class PofffConfig: fipnum: list[str] = field(default_factory=list) porv: list[str] = field(default_factory=list) multpv: list[str] = field(default_factory=list) - dx: Optional[list] = field(default_factory=list) - dz: Optional[list] = field(default_factory=list) + dx: list | None = field(default_factory=list) + dz: list | None = field(default_factory=list) # ------------------------------------------------------------------ # FluidFlower geometry and observation setup # ------------------------------------------------------------------ - dims: List[float] = field(default_factory=lambda: [2.8, 0.019, 1.2]) - sensors: List[List[float]] = field(default_factory=lambda: [[1.5, 0.5], [1.7, 1.1]]) - sensor_ik: List[List[int]] = field(default_factory=lambda: [[0, 0], [0, 0]]) - source_ik: List[List[int]] = field(default_factory=lambda: [[0, 0], [0, 0]]) - boxa: List[List[float]] = field(default_factory=lambda: [[1.1, 0.0], [2.8, 0.6]]) - boxb: List[List[float]] = field(default_factory=lambda: [[0.0, 0.6], [1.1, 1.2]]) - boxc: List[List[float]] = field(default_factory=lambda: [[1.1, 0.1], [2.6, 0.4]]) + dims: list[float] = field(default_factory=lambda: [2.8, 0.019, 1.2]) + sensors: list[list[float]] = field(default_factory=lambda: [[1.5, 0.5], [1.7, 1.1]]) + sensor_ik: list[list[int]] = field(default_factory=lambda: [[0, 0], [0, 0]]) + source_ik: list[list[int]] = field(default_factory=lambda: [[0, 0], [0, 0]]) + boxa: list[list[float]] = field(default_factory=lambda: [[1.1, 0.0], [2.8, 0.6]]) + boxb: list[list[float]] = field(default_factory=lambda: [[0.0, 0.6], [1.1, 1.2]]) + boxc: list[list[float]] = field(default_factory=lambda: [[1.1, 0.1], [2.6, 0.4]]) # ------------------------------------------------------------------ # Miscellaneous runtime flags and metadata # ------------------------------------------------------------------ - hm: Dict[str, Any] = field(default_factory=dict) + hm: dict[str, Any] = field(default_factory=dict) monotonic: bool = False hascellmaps: bool = False everert: bool = False tuning: bool = False - para: Dict[str, Any] = field(default_factory=dict) - nxz: List[int] = field(default_factory=lambda: [0, 0]) - data: Optional[str] = None + para: dict[str, Any] = field(default_factory=dict) + nxz: list[int] = field(default_factory=lambda: [0, 0]) + data: str | None = None diff --git a/src/pofff/core/pofff.py b/src/pofff/core/pofff.py index 2c475a9..872df5c 100644 --- a/src/pofff/core/pofff.py +++ b/src/pofff/core/pofff.py @@ -3,16 +3,16 @@ """Main entry script for pofff.""" +import argparse import os import shutil -import argparse from pathlib import Path from pofff.config.config import CliConfig, PofffConfig -from pofff.utils.inputvalues import load_toml, build_config, postprocess_config -from pofff.utils.runs import flow, data, benchmark, everest, ert, postprocess -from pofff.utils.writefile import write_files +from pofff.utils.inputvalues import build_config, load_toml, postprocess_config from pofff.utils.mapproperties import grid_and_properties +from pofff.utils.runs import benchmark, data, ert, everest, flow, postprocess +from pofff.utils.writefile import write_files def main() -> None: diff --git a/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_pofff.py b/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_pofff.py old mode 100644 new mode 100755 index ae9a946..2aa4283 --- a/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_pofff.py +++ b/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_pofff.py @@ -7,11 +7,13 @@ Script to calculate Wasserstein distances between segmented data. """ +import argparse import os import os.path -import argparse + import numpy as np from PIL import Image + import pofff.fluidflower.general.visualization.generate_segmented_images as seg from pofff.fluidflower.general.evaluation import emd @@ -20,8 +22,8 @@ def calculateEMD(modelResult, experimentalData): """Calculate Wasserstein distance""" modImage = Image.new("L", (280, 120)) modPixels = modImage.load() - for i in range(0, modImage.size[0]): - for j in range(0, modImage.size[1]): + for i in range(modImage.size[0]): + for j in range(modImage.size[1]): if modelResult[j, i] == 1: modPixels[i, j] = 128 elif modelResult[j, i] == 2: @@ -33,8 +35,8 @@ def calculateEMD(modelResult, experimentalData): expImage = Image.new("L", (280, 120)) expPixels = expImage.load() - for i in range(0, expImage.size[0]): - for j in range(0, expImage.size[1]): + for i in range(expImage.size[0]): + for j in range(expImage.size[1]): if experimentalData[j, i] == 1: expPixels[i, j] = 128 elif experimentalData[j, i] == 2: diff --git a/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_simplified_pofff.py b/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_simplified_pofff.py old mode 100644 new mode 100755 index 354a584..18c114b --- a/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_simplified_pofff.py +++ b/src/pofff/fluidflower/general/evaluation/calculate_segmented_emds_simplified_pofff.py @@ -7,11 +7,13 @@ Script to calculate Wasserstein distances between segmented data. """ +import argparse import os import os.path -import argparse + import numpy as np from PIL import Image + import pofff.fluidflower.general.visualization.generate_segmented_images as seg from pofff.fluidflower.general.evaluation import emd @@ -20,8 +22,8 @@ def calculateEMD(modelResult, experimentalData): """Calculate Wasserstein distance""" modImage = Image.new("L", (280, 120)) modPixels = modImage.load() - for i in range(0, modImage.size[0]): - for j in range(0, modImage.size[1]): + for i in range(modImage.size[0]): + for j in range(modImage.size[1]): if modelResult[j, i] == 1: modPixels[i, j] = 128 elif modelResult[j, i] == 2: @@ -33,8 +35,8 @@ def calculateEMD(modelResult, experimentalData): expImage = Image.new("L", (280, 120)) expPixels = expImage.load() - for i in range(0, expImage.size[0]): - for j in range(0, expImage.size[1]): + for i in range(expImage.size[0]): + for j in range(expImage.size[1]): if experimentalData[j, i] == 1: expPixels[i, j] = 128 elif experimentalData[j, i] == 2: diff --git a/src/pofff/fluidflower/general/evaluation/compare_sparse_data_pofff.py b/src/pofff/fluidflower/general/evaluation/compare_sparse_data_pofff.py old mode 100644 new mode 100755 index 21e40d3..80ae499 --- a/src/pofff/fluidflower/general/evaluation/compare_sparse_data_pofff.py +++ b/src/pofff/fluidflower/general/evaluation/compare_sparse_data_pofff.py @@ -5,12 +5,13 @@ """Generate the sparse data figure""" +import argparse import os import shutil -import argparse -import numpy as np -import matplotlib.pyplot as plt + import matplotlib +import matplotlib.pyplot as plt +import numpy as np def visualizeRow(means, stddevs, expData, ax, colors, groups, withlegend): diff --git a/src/pofff/fluidflower/general/evaluation/compare_time_series_pofff.py b/src/pofff/fluidflower/general/evaluation/compare_time_series_pofff.py old mode 100644 new mode 100755 index 4e4455f..fa8f15a --- a/src/pofff/fluidflower/general/evaluation/compare_time_series_pofff.py +++ b/src/pofff/fluidflower/general/evaluation/compare_time_series_pofff.py @@ -7,13 +7,14 @@ Generate the time series figures. """ +import argparse import os import shutil -import argparse from operator import methodcaller -import numpy as np + import matplotlib import matplotlib.pyplot as plt +import numpy as np from scipy import interpolate diff --git a/src/pofff/fluidflower/general/evaluation/emd.py b/src/pofff/fluidflower/general/evaluation/emd.py old mode 100644 new mode 100755 index 88fb4cc..56f59dd --- a/src/pofff/fluidflower/general/evaluation/emd.py +++ b/src/pofff/fluidflower/general/evaluation/emd.py @@ -8,8 +8,9 @@ """ import argparse -import ot + import numpy as np +import ot from PIL import Image diff --git a/src/pofff/fluidflower/general/evaluation/means_from_segmented_distances_pofff.py b/src/pofff/fluidflower/general/evaluation/means_from_segmented_distances_pofff.py old mode 100644 new mode 100755 index 6171cca..2319c8d --- a/src/pofff/fluidflower/general/evaluation/means_from_segmented_distances_pofff.py +++ b/src/pofff/fluidflower/general/evaluation/means_from_segmented_distances_pofff.py @@ -7,12 +7,13 @@ Generate the Wasserstein distance plots. """ +import argparse import os import shutil -import argparse -import numpy as np -import matplotlib.pyplot as plt + import matplotlib +import matplotlib.pyplot as plt +import numpy as np parser = argparse.ArgumentParser() parser.add_argument( @@ -329,7 +330,7 @@ ) for k, hour, ki, kj in zip( - range(0, 5), [24, 48, 72, 96, 120], [0, 0, 0, 1, 1], [0, 1, 2, 0, 1] + range(5), [24, 48, 72, 96, 120], [0, 0, 0, 1, 1], [0, 1, 2, 0, 1] ): # axs[ki][kj].set_xlim((0, 120)) axs[ki][kj].set_xlim((0, 80)) diff --git a/src/pofff/fluidflower/general/visualization/generate_segmented_images.py b/src/pofff/fluidflower/general/visualization/generate_segmented_images.py old mode 100644 new mode 100755 index 64b80b2..b4ba830 --- a/src/pofff/fluidflower/general/visualization/generate_segmented_images.py +++ b/src/pofff/fluidflower/general/visualization/generate_segmented_images.py @@ -9,6 +9,7 @@ """ import argparse + import numpy as np from PIL import Image @@ -19,8 +20,8 @@ def generateImages( "Generate images" modImage = Image.new("RGBA", (280, 120)) modPixels = modImage.load() - for i in range(0, modImage.size[0]): - for j in range(0, modImage.size[1]): + for i in range(modImage.size[0]): + for j in range(modImage.size[1]): if modelResult[j, i] == 1: modPixels[i, j] = (0, 255, 0) elif modelResult[j, i] == 2: @@ -36,8 +37,8 @@ def generateImages( expImage = Image.new("RGBA", (280, 120)) expPixels = expImage.load() - for i in range(0, expImage.size[0]): - for j in range(0, expImage.size[1]): + for i in range(expImage.size[0]): + for j in range(expImage.size[1]): if experimentalData[j, i] == 1: expPixels[i, j] = (0, 255, 0) elif experimentalData[j, i] == 2: diff --git a/src/pofff/jobs/data.py b/src/pofff/jobs/data.py index 61dfbcc..5729606 100755 --- a/src/pofff/jobs/data.py +++ b/src/pofff/jobs/data.py @@ -8,18 +8,16 @@ import argparse import sys -from pathlib import Path -from typing import Optional, Union from dataclasses import dataclass, field +from pathlib import Path import numpy as np -from scipy.interpolate import interp1d from numpy.typing import NDArray - from opm.io.ecl import EclFile as OpmFile from opm.io.ecl import EGrid as OpmGrid from opm.io.ecl import ERst as OpmRestart from opm.io.ecl import ESmry as OpmSummary +from scipy.interpolate import interp1d SECONDS_IN_DAY = 86400.0 GAS_DEN_REF = 1.86843 @@ -31,7 +29,7 @@ FIP_DISS_B = (3, 6) FIP_SEAL_B = (6,) -ArrayLike = Union[float, NDArray] +ArrayLike = float | NDArray @dataclass @@ -44,18 +42,18 @@ class SimulationContext: where: Path = Path(".") sparse_t: float = 600.0 dims: NDArray = field(default_factory=lambda: np.array([2.8, 1.0, 1.2])) - sim: Optional[Path] = None - unrst: Optional[OpmRestart] = None - ini: Optional[OpmFile] = None - egrid: Optional[OpmGrid] = None - smspec: Optional[OpmSummary] = None + sim: Path | None = None + unrst: OpmRestart | None = None + ini: OpmFile | None = None + egrid: OpmGrid | None = None + smspec: OpmSummary | None = None times: list[float] = field(default_factory=list) - times_summary: Optional[NDArray] = None + times_summary: NDArray | None = None time_initial: float = 0.0 - porv: Optional[NDArray] = None - actind: Optional[NDArray] = None - gxyz: Optional[tuple[int, int, int]] = None - norst: Optional[int] = None + porv: NDArray | None = None + actind: NDArray | None = None + gxyz: tuple[int, int, int] | None = None + norst: int | None = None @property def nxz(self) -> NDArray: @@ -84,7 +82,7 @@ class SparseResults: sealb: NDArray = field(init=False) sealt: NDArray = field(init=False) m_c_series: list[float] = field(default_factory=list) - m_c: Optional[NDArray] = None + m_c: NDArray | None = None def __post_init__(self) -> None: assert self.ctx.ini @@ -136,7 +134,7 @@ def read_opm(ctx: SimulationContext) -> None: assert ctx.sim ctx.unrst = OpmRestart(f"{ctx.sim}.UNRST") - t0: Optional[float] = None + t0: float | None = None for i in range(len(ctx.unrst.report_steps)): t = SECONDS_IN_DAY * float(ctx.unrst["DOUBHEAD", i][0]) @@ -175,8 +173,9 @@ def create_from_summary(ctx: SimulationContext, res: SparseResults) -> None: """Extract sparse quantities from OPM summary vectors.""" assert ctx.smspec smry = ctx.smspec + smry_keys = smry.keys() - bwpr = sorted(k for k in smry.keys() if k.startswith("BWPR") and "," in k)[:2] + bwpr = sorted(k for k in smry_keys if k.startswith("BWPR") and "," in k)[:2] def initial_pressure(fip: int) -> float: assert ctx.unrst diff --git a/src/pofff/jobs/delete.py b/src/pofff/jobs/delete.py index 9463221..45d9c87 100755 --- a/src/pofff/jobs/delete.py +++ b/src/pofff/jobs/delete.py @@ -4,8 +4,8 @@ """Script to delete large files""" -from pathlib import Path import sys +from pathlib import Path if Path("NOMONOTONIC").exists(): sys.exit(0) diff --git a/src/pofff/jobs/metric.py b/src/pofff/jobs/metric.py index 1139552..fb5fd54 100755 --- a/src/pofff/jobs/metric.py +++ b/src/pofff/jobs/metric.py @@ -8,9 +8,10 @@ import argparse import os import sys + import numpy as np -from numpy.typing import NDArray import ot +from numpy.typing import NDArray from PIL import Image diff --git a/src/pofff/utils/inputvalues.py b/src/pofff/utils/inputvalues.py index b55c9a4..53da72b 100644 --- a/src/pofff/utils/inputvalues.py +++ b/src/pofff/utils/inputvalues.py @@ -5,6 +5,7 @@ import tomllib from pathlib import Path + import numpy as np from pofff.config.config import CliConfig, PofffConfig diff --git a/src/pofff/utils/mapproperties.py b/src/pofff/utils/mapproperties.py index 5a23715..a9681ef 100644 --- a/src/pofff/utils/mapproperties.py +++ b/src/pofff/utils/mapproperties.py @@ -5,18 +5,19 @@ """Utility functions for grid generation and spatial indexing in geological FluidFlower-style models.""" -import sys import csv import shutil -from pathlib import Path +import sys from contextlib import nullcontext +from pathlib import Path + import numpy as np +from alive_progress import alive_bar from numpy.typing import NDArray from shapely.geometry import Point, Polygon -from alive_progress import alive_bar -from pofff.utils.writefile import create_corner_point_grid from pofff.config.config import PofffConfig +from pofff.utils.writefile import create_corner_point_grid def grid_and_properties(cfg: PofffConfig) -> None: @@ -53,8 +54,8 @@ def tensor(parts, dim): cfg.nxz = [len(xvert) - 1, len(zvert) - 1] xcent = 0.5 * (xvert[:-1] + xvert[1:]) zcent = 0.5 * (zvert[:-1] + zvert[1:]) - setattr(cfg, "dx", xvert[1:] - xvert[:-1]) - setattr(cfg, "dz", zvert[1:] - zvert[:-1]) + cfg.dx = list(xvert[1:] - xvert[:-1]) + cfg.dz = list(zvert[1:] - zvert[:-1]) positions(cfg, polygons, xcent=xcent, zcent=zcent) if cfg.grid == "tensor": cfg.dx = list(map(str, xvert[1:] - xvert[:-1])) diff --git a/src/pofff/utils/runs.py b/src/pofff/utils/runs.py index 73bd93c..103d1c3 100644 --- a/src/pofff/utils/runs.py +++ b/src/pofff/utils/runs.py @@ -4,14 +4,14 @@ """Utility functions for running simulations, processing data, and generating benchmark plots.""" -from pathlib import Path import subprocess -from typing import Sequence +from collections.abc import Sequence +from pathlib import Path from pofff.config.config import PofffConfig from pofff.visualization.benchmark import run_benchmark -from pofff.visualization.everert import run_everert from pofff.visualization.error_table import run_error_table +from pofff.visualization.everert import run_everert from pofff.visualization.maps import run_maps diff --git a/src/pofff/utils/writefile.py b/src/pofff/utils/writefile.py index 5cfc558..de3fc5f 100644 --- a/src/pofff/utils/writefile.py +++ b/src/pofff/utils/writefile.py @@ -6,8 +6,10 @@ import os import subprocess -from mako.template import Template +from itertools import pairwise + import numpy as np +from mako.template import Template from numpy.typing import NDArray from pofff.config.config import PofffConfig @@ -186,7 +188,7 @@ def render_monotonic(cfg: PofffConfig) -> None: inc_lines = [] for name in inc_names: keys = [f"{name}{i}" for i in range(1, 8) if f"{name}{i}" in cfg.hm] - for prev, cur in zip(keys, keys[1:]): + for prev, cur in pairwise(keys): inc_lines.append( f"if coef['{prev}'] < coef['{cur}']:\n" f" nomonotonic = True" ) @@ -194,7 +196,7 @@ def render_monotonic(cfg: PofffConfig) -> None: dec_lines = [] for name in dec_names: keys = [f"{name}{i}" for i in reversed(range(1, 8)) if f"{name}{i}" in cfg.hm] - for prev, cur in zip(keys, keys[1:]): + for prev, cur in pairwise(keys): dec_lines.append( f"if coef['{prev}'] < coef['{cur}']:\n" f" nomonotonic = True" ) @@ -352,16 +354,12 @@ def render_flow(cfg: PofffConfig) -> None: delete_block = "" if cfg.delete: - delete_block = "\n".join( - [ - ( - ' for suff in ["INC", "EGRID", "DBG", "PRT", "SMSPEC", "UNRST", ' - '"UNSMRY", "INIT", "ESMRY", "DATA"]:' - ), - ' os.system(f"rm -rf *.{suff}")', - ' for pref in ["thickness_eval","metr_eval","safu_eval","poro_eval"]:', - ' os.system(f"rm -rf {pref}.*")', - ] + delete_block = ( + ' for suff in ["INC", "EGRID", "DBG", "PRT", "SMSPEC", "UNRST", ' + '"UNSMRY", "INIT", "ESMRY", "DATA"]:\n' + ' os.system(f"rm -rf *.{suff}")\n' + ' for pref in ["thickness_eval","metr_eval","safu_eval","poro_eval"]:\n' + ' os.system(f"rm -rf {pref}.*")' ) tmpl = Template(filename=f"{cfg.path}/templates/flow.mako") @@ -601,15 +599,10 @@ def render_everest(cfg: PofffConfig) -> None: install_jobs_block = ( ( - "\n".join( - [ - " - name: scale", - " executable: jobs/scale.py", - " - name: monotonic", - " executable: jobs/monotonic.py", - ] - ) - + "\n" + " - name: scale\n" + " executable: jobs/scale.py\n" + " - name: monotonic\n" + " executable: jobs/monotonic.py\n" ) if cfg.monotonic else "" @@ -630,7 +623,7 @@ def render_everest(cfg: PofffConfig) -> None: ) forward_block = ( - (("\n".join([" - scale", " - monotonic"]) + "\n") if cfg.monotonic else "") + (" - scale\n - monotonic\n" if cfg.monotonic else "") + "\n".join( [ " - copyd", diff --git a/src/pofff/visualization/benchmark.py b/src/pofff/visualization/benchmark.py old mode 100644 new mode 100755 index 0c5102d..b974d3f --- a/src/pofff/visualization/benchmark.py +++ b/src/pofff/visualization/benchmark.py @@ -6,8 +6,8 @@ import argparse import shutil -import sys import subprocess +import sys from pathlib import Path import matplotlib diff --git a/src/pofff/visualization/error_table.py b/src/pofff/visualization/error_table.py old mode 100644 new mode 100755 index d960630..a7b436c --- a/src/pofff/visualization/error_table.py +++ b/src/pofff/visualization/error_table.py @@ -6,8 +6,9 @@ """Quantify errors between simulation results and experimental data and summarize them in a comparison table.""" -import os import argparse +import os + import numpy as np NUM_EXPERIMENTS = 5 # Number of experimental realizations diff --git a/src/pofff/visualization/everert.py b/src/pofff/visualization/everert.py old mode 100644 new mode 100755 index 8cf825d..28dff14 --- a/src/pofff/visualization/everert.py +++ b/src/pofff/visualization/everert.py @@ -15,11 +15,10 @@ import subprocess from dataclasses import dataclass, field from pathlib import Path -from typing import List -import numpy as np import matplotlib import matplotlib.pyplot as plt +import numpy as np from matplotlib.ticker import MaxNLocator @@ -29,7 +28,7 @@ class Config: path: Path times: str - jobs: List[str] + jobs: list[str] external: Path run: str maps: Path @@ -46,31 +45,31 @@ class EnsembleState: n_i: int no_obs: int no_para: int - simulations: List[List[list]] = field(default_factory=list) - sim_ens: List[List[float]] = field(default_factory=list) - miss_ens: List[List[float]] = field(default_factory=list) - par_dis: List[List[float]] = field(default_factory=list) - idrealisation: List[List[int]] = field(default_factory=list) - num_ens: List[int] = field(default_factory=list) - cumulative: List[List[List[float]]] = field(default_factory=list) + simulations: list[list[list]] = field(default_factory=list) + sim_ens: list[list[float]] = field(default_factory=list) + miss_ens: list[list[float]] = field(default_factory=list) + par_dis: list[list[float]] = field(default_factory=list) + idrealisation: list[list[int]] = field(default_factory=list) + num_ens: list[int] = field(default_factory=list) + cumulative: list[list[list[float]]] = field(default_factory=list) para_file: Path | None = None - para_names: List[str] = field(default_factory=list) + para_names: list[str] = field(default_factory=list) @dataclass class OptimizationState: """Tracks optimization progress and outcomes.""" - optimization: List[float] = field(default_factory=list) + optimization: list[float] = field(default_factory=list) optimal_value: float = -np.inf ind_batch: int = 0 ind_sim: int = 0 tot_eval: int = 0 - s: List[List[int]] = field(default_factory=lambda: [[], [], []]) - x: List[int] = field(default_factory=lambda: [0, 0, 0]) + s: list[list[int]] = field(default_factory=lambda: [[], [], []]) + x: list[int] = field(default_factory=lambda: [0, 0, 0]) -def run(cmd: List[str]) -> None: +def run(cmd: list[str]) -> None: """Execute external command and abort on failure.""" subprocess.run(cmd, check=True) diff --git a/src/pofff/visualization/maps.py b/src/pofff/visualization/maps.py old mode 100644 new mode 100755 index 8072db0..81afa4e --- a/src/pofff/visualization/maps.py +++ b/src/pofff/visualization/maps.py @@ -6,11 +6,12 @@ """Overlay simulated spatial maps with experimental contour boundaries.""" import argparse -import shutil import csv -import numpy as np +import shutil + import matplotlib import matplotlib.pyplot as plt +import numpy as np from matplotlib import colors DX = 1.0e-2 # Grid spacing [m] diff --git a/src/pofff/visualization/sparse_values.py b/src/pofff/visualization/sparse_values.py old mode 100644 new mode 100755 index 7a51267..c672578 --- a/src/pofff/visualization/sparse_values.py +++ b/src/pofff/visualization/sparse_values.py @@ -6,6 +6,7 @@ import sys from pathlib import Path + import numpy as np SECONDS_PER_HOUR = 3600 diff --git a/tests/test_a_main.py b/tests/test_a_main.py index d9968bb..ec6d741 100644 --- a/tests/test_a_main.py +++ b/tests/test_a_main.py @@ -3,11 +3,12 @@ """Test the configuration files""" -from pathlib import Path import shutil +from pathlib import Path + import numpy as np -from opm.io.ecl import EGrid as OpmGrid from opm.io.ecl import EclFile as OpmFile +from opm.io.ecl import EGrid as OpmGrid from pofff.core.pofff import main diff --git a/tests/test_b_grid.py b/tests/test_b_grid.py index 3635d42..d862336 100644 --- a/tests/test_b_grid.py +++ b/tests/test_b_grid.py @@ -3,8 +3,8 @@ """Test the ert functionality via the configuration file""" -from pathlib import Path import subprocess +from pathlib import Path def test_b_grid(tmp_path, monkeypatch): diff --git a/tests/test_c_data.py b/tests/test_c_data.py index 8dfff95..60fc601 100644 --- a/tests/test_c_data.py +++ b/tests/test_c_data.py @@ -3,8 +3,8 @@ """Test the functionality of the data generation""" -from pathlib import Path import shutil +from pathlib import Path from pofff.jobs.data import main diff --git a/tests/test_d_metric.py b/tests/test_d_metric.py index 6391722..f674f15 100644 --- a/tests/test_d_metric.py +++ b/tests/test_d_metric.py @@ -3,8 +3,8 @@ """Test the functionality of the metric evaluations""" -from pathlib import Path import shutil +from pathlib import Path from pofff.jobs.metric import main diff --git a/tests/test_e_ert.py b/tests/test_e_ert.py index 8b7a92c..fccd7f4 100644 --- a/tests/test_e_ert.py +++ b/tests/test_e_ert.py @@ -3,8 +3,8 @@ """Test the ert functionality via the configuration file""" -from pathlib import Path import subprocess +from pathlib import Path def test_e_ert(tmp_path, monkeypatch): diff --git a/tests/test_f_everest.py b/tests/test_f_everest.py index ac4d402..cd094b3 100644 --- a/tests/test_f_everest.py +++ b/tests/test_f_everest.py @@ -3,8 +3,8 @@ """Test the everest functionality via the configuration file""" -from pathlib import Path import subprocess +from pathlib import Path def test_f_everest(tmp_path, monkeypatch): diff --git a/tests/test_g_sparse.py b/tests/test_g_sparse.py index d2e0e28..3da7b5a 100644 --- a/tests/test_g_sparse.py +++ b/tests/test_g_sparse.py @@ -3,8 +3,8 @@ """Test the sparse data generation""" -from pathlib import Path import shutil +from pathlib import Path from pofff.visualization.sparse_values import main diff --git a/tests/test_h_benchmark.py b/tests/test_h_benchmark.py index c60af77..5b06925 100644 --- a/tests/test_h_benchmark.py +++ b/tests/test_h_benchmark.py @@ -3,8 +3,8 @@ """Test the single functionality and plotting for the benchmark""" -from pathlib import Path import subprocess +from pathlib import Path def test_h_benchmark(tmp_path, monkeypatch):