From e9939b7e5dc65afcf51a5a04fb8e0a1584845597 Mon Sep 17 00:00:00 2001 From: David Landa Marban Date: Wed, 4 Dec 2024 18:03:54 +0100 Subject: [PATCH] Support for toml input files --- .github/workflows/CI.yml | 2 +- .gitignore | 10 +- README.md | 4 +- docs/_sources/configuration_file.rst.txt | 113 ++++++++++++++++-- docs/_sources/contributing.rst.txt | 2 +- docs/_sources/examples.rst.txt | 6 + docs/_sources/introduction.rst.txt | 2 +- docs/configuration_file.html | 108 +++++++++++++++-- docs/contributing.html | 2 +- docs/examples.html | 4 + docs/genindex.html | 8 +- docs/index.html | 10 +- docs/introduction.html | 2 +- docs/objects.inv | Bin 1353 -> 1389 bytes docs/pyopmspe11.html | 2 + docs/pyopmspe11.utils.html | 2 + docs/pyopmspe11.utils.inputvalues.html | 24 ++++ docs/searchindex.js | 2 +- docs/text/configuration_file.rst | 113 ++++++++++++++++-- docs/text/contributing.rst | 2 +- docs/text/examples.rst | 6 + docs/text/introduction.rst | 2 +- examples/hello_world/spe11a.toml | 49 ++++++++ examples/hello_world/spe11a.txt | 6 +- examples/hello_world/spe11b.toml | 52 ++++++++ examples/hello_world/spe11b.txt | 2 +- examples/hello_world/spe11c.toml | 56 +++++++++ examples/hello_world/spe11c.txt | 8 +- src/pyopmspe11/core/pyopmspe11.py | 2 +- src/pyopmspe11/utils/inputvalues.py | 76 +++++++++--- src/pyopmspe11/utils/mapproperties.py | 28 ++--- tests/configs/input.txt | 2 +- tests/configs/spe11a_data_format.toml | 51 ++++++++ tests/configs/spe11a_data_format.txt | 2 +- tests/configs/spe11b_data_format.toml | 56 +++++++++ tests/configs/spe11b_data_format.txt | 2 +- tests/configs/spe11c.txt | 2 +- tests/configs/spe11c_data_format.toml | 61 ++++++++++ tests/configs/spe11c_data_format.txt | 2 +- tests/test_0_input_format.py | 48 ++++++++ tests/{test_0_spe11a.py => test_1_spe11a.py} | 0 tests/{test_1_spe11b.py => test_2_spe11b.py} | 0 tests/{test_2_spe11c.py => test_3_spe11c.py} | 0 tests/{test_3_data.py => test_4_data.py} | 0 tests/{test_4_plot.py => test_5_plot.py} | 0 .../{test_5_compare.py => test_6_compare.py} | 0 ...6_data_format.py => test_7_data_format.py} | 0 47 files changed, 832 insertions(+), 99 deletions(-) create mode 100644 examples/hello_world/spe11a.toml create mode 100644 examples/hello_world/spe11b.toml create mode 100644 examples/hello_world/spe11c.toml create mode 100644 tests/configs/spe11a_data_format.toml create mode 100644 tests/configs/spe11b_data_format.toml create mode 100644 tests/configs/spe11c_data_format.toml create mode 100644 tests/test_0_input_format.py rename tests/{test_0_spe11a.py => test_1_spe11a.py} (100%) rename tests/{test_1_spe11b.py => test_2_spe11b.py} (100%) rename tests/{test_2_spe11c.py => test_3_spe11c.py} (100%) rename tests/{test_3_data.py => test_4_data.py} (100%) rename tests/{test_4_plot.py => test_5_plot.py} (100%) rename tests/{test_5_compare.py => test_6_compare.py} (100%) rename tests/{test_6_data_format.py => test_7_data_format.py} (100%) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9ddf0a9..12c2af3 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.8'] + python-version: ['3.11'] os: [ubuntu-latest] runs-on: ${{ matrix.os }} diff --git a/.gitignore b/.gitignore index 2b0e3d5..68163cc 100644 --- a/.gitignore +++ b/.gitignore @@ -180,9 +180,7 @@ examples/hello_world/spe11a examples/hello_world/spe11b examples/hello_world/spe11c playground -tests/configs/test_compare -tests/configs/output -tests/configs/spe11a -tests/configs/spe11b -tests/configs/spe11c -tests/configs/check_format.py \ No newline at end of file + +# Tests +tests/configs/check_format.py +**/tests/configs/*/ \ No newline at end of file diff --git a/README.md b/README.md index 2e522e9..d7ad409 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,10 @@ See the [_installation_](https://OPM.github.io/pyopmspe11/installation.html) for ## Running pyopmspe11 You can run _pyopmspe11_ as a single command line: ``` -pyopmspe11 -i configuration_file.txt +pyopmspe11 -i configuration_file ``` Run `pyopmspe11 --help` to see all possible command line -argument options. Inside the `configuration_file.txt` you provide the path to the flow executable and simulation parameters. See the .txt files in the [_examples_](https://github.com/OPM/pyopmspe11/tree/main/examples), [_benchmark_](https://github.com/OPM/pyopmspe11/tree/main/benchmark), and [_tests_](https://github.com/OPM/pyopmspe11/tree/main/tests/configs) folders. +argument options. Inside the `configuration_file` you provide the path to the flow executable and simulation parameters. See the .txt and .toml files in the [_examples_](https://github.com/OPM/pyopmspe11/tree/main/examples), [_benchmark_](https://github.com/OPM/pyopmspe11/tree/main/benchmark), and [_tests_](https://github.com/OPM/pyopmspe11/tree/main/tests/configs) folders. ## Getting started See the [_examples_](https://OPM.github.io/pyopmspe11/examples.html) in the [_documentation_](https://OPM.github.io/pyopmspe11/introduction.html). diff --git a/docs/_sources/configuration_file.rst.txt b/docs/_sources/configuration_file.rst.txt index 1e9871e..bf6cac0 100644 --- a/docs/_sources/configuration_file.rst.txt +++ b/docs/_sources/configuration_file.rst.txt @@ -1,6 +1,17 @@ -================== +****************** Configuration file -================== +****************** + +In the initial development of **pyopmspe11**, the adopted configuration file format was the +one described below, i.e., via :ref:`txt` files. The current development of **pyopmspe11** considers +:ref:`toml` files. To keep compatibility with previous configuration files, then support for :ref:`txt` files +will be kept, while new features will by added using :ref:`toml` configuration files. + +.. _txt: + +=== +txt +=== The first input parameter in the configuration file is: @@ -8,7 +19,7 @@ The first input parameter in the configuration file is: :linenos: """Set the full path to the flow executable and flags""" - flow --linear-solver=cprw --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --newton-min-iterations=1 + flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations If **flow** is not in your path, then write the full path to the executable (e.g., /Users/dmar/opm/build/opm-simulators/bin/flow). We also add in the same @@ -23,9 +34,9 @@ line as many flags as required (see the OPM Flow documentation `here `_ as: + +.. code-block:: python + :linenos: + + # Set the full path to the flow executable and flags + flow = "flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations" + + # Set the model parameters + spe11 = "spe11c" # Name of the spe case (spe11a, spe11b, or spe11c) + version = "release" # OPM Flow version (release or master) + model = "complete" # Name of the co2 model (immiscible, convective, or complete) + co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) + grid = "corner-point" # Type of grid (cartesian, tensor, or corner-point) + dims = [8400.0, 5000.0, 1200.0] # Length, width, and depth [m] + x_n = [420] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment + y_n = [30, 40, 50, 40, 30] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) + z_n = [5, 3, 1, 2, 3, 2, 4, 4, 10, 4, 6, 6, 4, 8, 4, 15, 30, 9] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) + temperature = [70.0, 36.12] # Temperature bottom and top rig [C] + datum = 300 # Datum [m] + pressure = 3e7 # Pressure at the datum [Pa] + kzMult = 0.1 # Multiplier for the permeability in the z direction [-] + diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] + rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) + pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) + widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) + elevation = 150 # Maximum elevation difference (relative to the baseline gradient) of the arch in the y direction [m] (for spe11c) + backElevation = 10 # Back boundary elevation w.r.t the front boundary [m] (for spe11c) + dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 + rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 + radius = [0.15, 0.15] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 + wellCoord = [[2700.0, 1000.0, 300.0], [5100.0, 1000.0, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + wellCoordF = [[2700.0, 4000.0, 300.0], [5100.0, 4000.0, 700.0]] # Well final positions: x, y, and z coordinates [m], well 1 to 2 (for spe11c) + + # Set the saturation functions + krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] + krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] + pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] + s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + + # Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 + safu = [[0.32, 0.1, 193531.39, 3e7, 1000], + [0.14, 0.1, 8654.99, 3e7, 1000], + [0.12, 0.1, 6120.00, 3e7, 1000], + [0.12, 0.1, 3870.63, 3e7, 1000], + [0.12, 0.1, 3060.00, 3e7, 1000], + [0.10, 0.1, 2560.18, 3e7, 1000], + [0, 0, 0, 3e7, 2]] + + # Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 + rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + + # Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) + inj = [[999.9, 999.9, 100, 1, 0, 10, 1, 0, 10], + [ 0.1, 0.1, 0.1, 1, 0, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 50, 10], + [ 50, 25, 25, 1, 0, 10, 1, 0, 10], + [ 400, 50, 50, 1, 0, 10, 1, 0, 10], + [ 500, 100, 100, 1, 0, 10, 1, 0, 10]] + + +For additional examples of configuration files using toml, see the +`hello_world `_ and `configs `_ folders. + +.. note:: + A Python version of at least 3.11 is requiered to use the toml format. For older Python versions, then use the :ref:`txt` configuration files. \ No newline at end of file diff --git a/docs/_sources/contributing.rst.txt b/docs/_sources/contributing.rst.txt index 7f5734a..4df9c15 100644 --- a/docs/_sources/contributing.rst.txt +++ b/docs/_sources/contributing.rst.txt @@ -25,7 +25,7 @@ Contribute to the software #. **black src/ tests/** (this formats the code) #. **pylint src/ tests/** (this 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) - #. **pytest --cov=pyopmspe11 --cov-report term-missing tests/** (this runs locally the tests, and might rise issues that need to be fixed before the pull request) + #. **pytest --cov=pyopmspe11 --cov-report term-missing tests/** (this runs locally the tests, and might rise issues that need to be fixed before the pull request; to save the files, add the flag **--basetemp=test_outputs**) #. **pushd docs & make html** (this generates the documentation, and might rise issues that need to be fixed before the pull request; if the build succeeds and if the contribution changes the documentation, then delete all content from the `docs `_ folder except `Makefile `_, `text `_, and `.nojekyll `_, after copy all contents from the docs/_build/html/ folder, and finally paste them in the `docs `_ folder) .. tip:: diff --git a/docs/_sources/examples.rst.txt b/docs/_sources/examples.rst.txt index eb3b263..92f8262 100644 --- a/docs/_sources/examples.rst.txt +++ b/docs/_sources/examples.rst.txt @@ -19,6 +19,12 @@ compare your example results to this figure to evaluate if your example ran corr .. figure:: figs/spe11b_tco2_2Dmaps.png +Using the :ref:`toml` format, the previous run is equivalent to: + +.. code-block:: bash + + pyopmspe11 -i spe11b.toml -o spe11b -m all -g all -t 5 -r 50,1,15 -w 1 + Let us now change the grid type from corner-point to tensor in line 7 of the configuration file. Then, we run the simulations and we save the results in a different output folder: diff --git a/docs/_sources/introduction.rst.txt b/docs/_sources/introduction.rst.txt index 243272c..79272f9 100644 --- a/docs/_sources/introduction.rst.txt +++ b/docs/_sources/introduction.rst.txt @@ -29,7 +29,7 @@ The current implementation supports the following executable with the argument o .. code-block:: bash - pyopmspe11 -i configuration_file.txt + pyopmspe11 -i configuration_file where diff --git a/docs/configuration_file.html b/docs/configuration_file.html index 239d16f..0c372ab 100644 --- a/docs/configuration_file.html +++ b/docs/configuration_file.html @@ -48,9 +48,13 @@
  • Introduction
  • Installation
  • Configuration file
  • Examples
  • @@ -88,9 +92,15 @@

    Configuration file

    +

    In the initial development of pyopmspe11, the adopted configuration file format was the +one described below, i.e., via txt files. The current development of pyopmspe11 considers +toml files. To keep compatibility with previous configuration files, then support for txt files +will be kept, while new features will by added using toml configuration files.

    +
    +

    txt

    The first input parameter in the configuration file is:

    1"""Set the full path to the flow executable and flags"""
    -2flow --linear-solver=cprw --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --newton-min-iterations=1
    +2flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations
     

    If flow is not in your path, then write the full path to the executable @@ -108,11 +118,11 @@

    Configuration file -

    Reservoir-related parameters

    +

    Reservoir-related parameters

    The following input lines in the configuration file are:

     4"""Set the model parameters"""
      5spe11c master     #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release)
    - 6complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow])
    + 6complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow])
      7corner-point      #Type of grid (cartesian, tensor, or corner-point)
      88400 5000 1200    #Length, width, and depth [m]
      9420               #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment
    @@ -141,17 +151,17 @@ 

    Reservoir-related parameters _images/satnum.png -
    +
    _images/fipnum.png

    Corner-point grid generated by the configuration file (INJ0 the horizontal well and INJ1 the curve well). The top figure shows the 7 different facies, while the bottom figure shows the fipnum numbers used to identify -the boxes (A, B, and C), sensors, and the required regions to report the benchmark data.

    +the boxes (A, B, and C), sensors, and the required regions to report the benchmark data.

    +
    +
    +

    toml

    +

    The previous configuration file can be written using the widely in-use toml format as:

    +
     1# Set the full path to the flow executable and flags
    + 2flow = "flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations"
    + 3
    + 4# Set the model parameters
    + 5spe11 = "spe11c" # Name of the spe case (spe11a, spe11b, or spe11c)
    + 6version = "release" # OPM Flow version (release or master)
    + 7model = "complete" # Name of the co2 model (immiscible, convective, or complete)
    + 8co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow])
    + 9grid = "corner-point" # Type of grid (cartesian, tensor, or corner-point)
    +10dims = [8400.0, 5000.0, 1200.0] # Length, width, and depth [m]
    +11x_n = [420] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment
    +12y_n = [30, 40, 50, 40, 30] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c)
    +13z_n = [5, 3, 1, 2, 3, 2, 4, 4, 10, 4, 6, 6, 4, 8, 4, 15, 30, 9] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries)
    +14temperature = [70.0, 36.12] # Temperature bottom and top rig [C]
    +15datum = 300 # Datum [m]
    +16pressure = 3e7 # Pressure at the datum [Pa]
    +17kzMult = 0.1 # Multiplier for the permeability in the z direction [-]
    +18diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s]
    +19rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c)
    +20pvAdded = 5e4  # Extra pore volume per area on lateral boundaries [m] (for spe11b/c)
    +21widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c)
    +22elevation = 150 # Maximum elevation difference (relative to the baseline gradient) of the arch in the y direction [m] (for spe11c)
    +23backElevation = 10 # Back boundary elevation w.r.t the front boundary [m] (for spe11c)
    +24dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7
    +25rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7
    +26radius = [0.15, 0.15] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2
    +27wellCoord = [[2700.0, 1000.0, 300.0], [5100.0, 1000.0, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2
    +28wellCoordF = [[2700.0, 4000.0, 300.0], [5100.0, 4000.0, 700.0]] # Well final positions: x, y, and z coordinates [m], well 1 to 2 (for spe11c)
    +29
    +30# Set the saturation functions
    +31krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5"                                                         # Wetting rel perm saturation function [-]
    +32krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5"                                                     # Non-wetting rel perm saturation function [-]
    +33pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa]
    +34s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)"                          # Points to evaluate the saturation functions (s_w) [-]
    +35
    +36# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7
    +37safu = [[0.32, 0.1, 193531.39, 3e7, 1000],
    +38        [0.14, 0.1, 8654.99,   3e7, 1000],
    +39        [0.12, 0.1, 6120.00,   3e7, 1000],
    +40        [0.12, 0.1, 3870.63,   3e7, 1000],
    +41        [0.12, 0.1, 3060.00,   3e7, 1000],
    +42        [0.10, 0.1, 2560.18,   3e7, 1000],
    +43        [0,      0,       0,   3e7,    2]]
    +44
    +45# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7
    +46rock = [[0.10132, 0.10],
    +47        [101.324, 0.20],
    +48        [202.650, 0.20],
    +49        [506.625, 0.20],
    +50        [1013.25, 0.25],
    +51        [2026.50, 0.35],
    +52        [1e-5,    1e-6]]
    +53
    +54# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2)
    +55inj = [[999.9, 999.9, 100, 1,  0, 10, 1,  0, 10],
    +56       [  0.1,   0.1, 0.1, 1,  0, 10, 1,  0, 10],
    +57       [   25,     5,   5, 1, 50, 10, 1,  0, 10],
    +58       [   25,     5,   5, 1, 50, 10, 1, 50, 10],
    +59       [   50,    25,  25, 1,  0, 10, 1,  0, 10],
    +60       [  400,    50,  50, 1,  0, 10, 1,  0, 10],
    +61       [  500,   100, 100, 1,  0, 10, 1,  0, 10]]
    +
    +
    +

    For additional examples of configuration files using toml, see the +hello_world and configs folders.

    +
    +

    Note

    +

    A Python version of at least 3.11 is requiered to use the toml format. For older Python versions, then use the txt configuration files.

    +
    +
    diff --git a/docs/contributing.html b/docs/contributing.html index a7b1fe0..ab54a49 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -111,7 +111,7 @@

    Contribute to the softwaredocs folder except Makefile, text, and .nojekyll, after copy all contents from the docs/_build/html/ folder, and finally paste them in the docs folder)

    diff --git a/docs/examples.html b/docs/examples.html index dde9c7f..a6d875c 100644 --- a/docs/examples.html +++ b/docs/examples.html @@ -111,6 +111,10 @@

    Hello world _images/spe11b_tco2_2Dmaps.png +

    Using the toml format, the previous run is equivalent to:

    +
    pyopmspe11 -i spe11b.toml -o spe11b -m all -g all -t 5 -r 50,1,15 -w 1
    +
    +

    Let us now change the grid type from corner-point to tensor in line 7 of the configuration file. Then, we run the simulations and we save the results in a different output folder:

    pyopmspe11 -i spe11b.txt -o tensor -m deck_flow_data -g performance_sparse -t 5 -r 50,1,15 -w 1
    diff --git a/docs/genindex.html b/docs/genindex.html
    index 8325ee6..3c8a650 100644
    --- a/docs/genindex.html
    +++ b/docs/genindex.html
    @@ -302,6 +302,8 @@ 

    P

  • plotting() (in module pyopmspe11.utils.runs)
  • positions() (in module pyopmspe11.utils.mapproperties) +
  • +
  • postprocesstoml() (in module pyopmspe11.utils.inputvalues)
  • process_input() (in module pyopmspe11.utils.inputvalues)
  • @@ -417,17 +419,19 @@

    S

  • sensors() (in module pyopmspe11.utils.mapproperties)
  • set_back_front_fipnums() (in module pyopmspe11.utils.mapproperties) +
  • +
  • setcaseproperties() (in module pyopmspe11.utils.inputvalues)
  • simulations() (in module pyopmspe11.utils.runs)
  • + + -
    • static_map_to_report_grid_performance_spatial() (in module pyopmspe11.visualization.data)
    • structured_handling_spe11a() (in module pyopmspe11.utils.mapproperties) diff --git a/docs/index.html b/docs/index.html index 30093be..a35bbdb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -99,9 +99,13 @@

      Welcome to pyopmspe11’s documentation!Configuration file

    • Examples
        diff --git a/docs/introduction.html b/docs/introduction.html index 6f5a7cd..b887a68 100644 --- a/docs/introduction.html +++ b/docs/introduction.html @@ -107,7 +107,7 @@

        Concept

        Overview

        The current implementation supports the following executable with the argument options:

        -
        pyopmspe11 -i configuration_file.txt
        +
        pyopmspe11 -i configuration_file
         

        where

        diff --git a/docs/objects.inv b/docs/objects.inv index 7a7a866c3dcfddb0f5add023fac8b71dce59276d..57aa9fa66804cd4b427512688c95e5fcc35c5b71 100644 GIT binary patch delta 1231 zcmV;=1Tg!_3hfGzg?}@Z+1}kvDvP^F%~WQQC52IYOc@En!(-o7ej~q^FG&j|OR_8> zKX5iKscFuE7X1LD4pNmy!OKgo4qr-HI05<3_}q%0H?|Z%hK8q~@~5oV#H5C)ZgpF% z@3V@spQv4c_$(wXh@#qnuF==7VwTG)e~IEpfJ@4&`yvkQaDP3nvs{=dQ~Jg^0|o_N zDQ9<7IEWzi6fZ)3W*cBzQsB?@Y$qt9*c)0E0*G}LuRiV%ucWa`O9sYRS&9S%0i1Z* z{oysx!fs&AHO_>AUtbb_S8P1R{U|Y$3+(6es2R~j@#^EIqgVfbr^u8UND9O?OK5SsbAYPw7 zoN>j{P=0_V41~aVvX<#6a3ZM|8N&M&mI_|;A`P;Tj9MU{XnjKrR7UDVbHF$9JqTDzbuU4mtJ=>%Qmni059%`Lj2fO&fz)#66$RI${7y4Z;g z@dP}A$}5aXRNNO78%X_N?hEUm$QBNtQWrO3@3?VP@bCV!PkpU{(%iQiDz}uSo^J!AF*EYb$F}2ycR$9xO@!^$(FGk%gsyD*EK{<+TZdjDGhEr$zP6E zmVes=sii5&E-5Uo!N0;)uA;$*I_WrJO-i0CoN`Pc2H_89F(-9qhfTpeqoyaw`qW z-|EM#Q)>`=8h?UdvV`2qp8fv)`yZ2|uB*?7{iJ?C5KN;Y9DEJ2I(bXlNwAyM7$DiW zTPJV3b&{;4Oq$`$Mnt%B-lfy%Mk~iffeJZxdwtI^BA>C0Iy|)vf$;Yb=!1a+a*6sCT}-4ugi!?bVC&Aj;$p^p3;l>BLSCg*z}Z<^$zt10Jko}&Xgch_R3z4=Jvn;7TOyNek4`0mDd z$m44nbFioXb+*k=m!{ekg7BaUSD%{_)^Nk3CMrO=T^Mf*i!r$8eV?NU$R~klNzSF)oro9 z3l(KQQM&?hAtWt`qS}D2(O0fwmdh%Cjp9duOUkRqA`b0vJAbaTT$m|S`o=i}1_fRz zXLnRMh#>V8uR>k04X`aK@Mn6q6BJSG4Xp|R#JY-C>&L?@Eg2X?yzKGt8falRu;SWS zT)F8O3@}+0kE1B5LenVFmdBROKsCN_hU&CHm)?;TSCuQtO3TWUC5OiN^-QncRBPn;`Qm%8J8>#!=ntTBnMo4%Ed?Y=|e|5ma7bOrqkkpx8j_2lH51|3tQM_>{W16MM&v zqk@0;pMC0U4V31-)ljir<8jDZ^EzBCd`c|9fs|w>c1*Ec0FN62M8_ap664B}>O%^e z0#gZ)`CxE6`hOa*Hms*XwWbI21PX#-bR~63D+UAX+fLyI-2FMUla_zms|=k^J= zqc?l;XllQkfmak^cjzRT;%1Y?-BeHd?hV_4?zw4aMPP5yjc}e%W5mr?I>z~9w0m$B zv65&|Qd=^=NqHp8v(`pQ_hipLQ$Syk$ZrSlnI{E&eSfk=P$3z%29qj*d3?*uG=^^m zo-)51f6ksP!5fP&jQoE-7fR8zRm>^JbLW=WI|E6&Wzydt#_RA_`|?`+*yH*&FeJN- zY%3;qqRauW?c)Jew)Yf|#u;FMz; zx|Gi5#(x%H3d!=9*W3$yd;Zn8bzm7)e4wg$Q0)B;`hKt*9K+Z5Z`l$mw!y@;?e{qf zL(gB@*Nn+(#n(>zf%;;m-)-C)`v2OO=e4{BvYIcQk19imqx{(UD9KQh*zN5j z!-#ywGV1WsHUz@oL!b{f3Q>Gu_eONOxH4Rh%2~3KqTc!TIt&^@w>K}!gD8_b&^r#F zr%Mw%F$GTStSubpackagespyopmspe11.utils.inputvalues module
      • pyopmspe11.utils.mapproperties module
          diff --git a/docs/pyopmspe11.utils.html b/docs/pyopmspe11.utils.html index 592727c..c96749c 100644 --- a/docs/pyopmspe11.utils.html +++ b/docs/pyopmspe11.utils.html @@ -92,9 +92,11 @@

          Submodulespyopmspe11.utils.inputvalues module
        • pyopmspe11.utils.mapproperties module
            diff --git a/docs/pyopmspe11.utils.inputvalues.html b/docs/pyopmspe11.utils.inputvalues.html index 6680b0d..1a7d365 100644 --- a/docs/pyopmspe11.utils.inputvalues.html +++ b/docs/pyopmspe11.utils.inputvalues.html @@ -112,6 +112,18 @@ +
            +
            +pyopmspe11.utils.inputvalues.postprocesstoml(dic)
            +

            Perform the unit convertions and generation of needed variables

            +
            +
            Args:

            dic (dict): Global dictionary

            +
            +
            Returns:

            dic (dict): Modified global dictionary

            +
            +
            +
            +
            pyopmspe11.utils.inputvalues.process_input(dic, in_file)
            @@ -151,6 +163,18 @@
            +
            +
            +pyopmspe11.utils.inputvalues.setcaseproperties(dic)
            +

            Set the time scale, box, and sensor locations

            +
            +
            Args:

            dic (dict): Global dictionary

            +
            +
            Returns:

            dic (dict): Modified global dictionary

            +
            +
            +
            +
      • diff --git a/docs/searchindex.js b/docs/searchindex.js index 3b9fb6c..c92a4d7 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"About pyopmspe11": [[0, null]], "After the 13.06.2024 workshop": [[5, "after-the-13-06-2024-workshop"]], "Before the 13.06.2024 workshop": [[5, "before-the-13-06-2024-workshop"]], "Benchmark": [[2, null]], "Concept": [[8, "concept"]], "Configuration file": [[3, null]], "Contribute to the software": [[4, "contribute-to-the-software"]], "Contributing": [[4, null]], "Examples": [[5, null]], "Ground Rules": [[4, "ground-rules"]], "Hello world": [[5, "hello-world"]], "Indices and tables": [[6, "indices-and-tables"]], "Installation": [[7, null]], "Introduction": [[8, null]], "Module contents": [[11, "module-pyopmspe11"], [12, "module-pyopmspe11.core"], [14, "module-pyopmspe11.utils"], [19, "module-pyopmspe11.visualization"]], "OPM Flow": [[7, "opm-flow"]], "Output folder": [[10, null]], "Overview": [[8, "overview"]], "Performance data": [[2, "performance-data"], [2, "id2"], [2, "id5"]], "Python package": [[7, "python-package"]], "Related": [[22, null]], "Reporting issues or problems": [[4, "reporting-issues-or-problems"]], "Reservoir-related parameters": [[3, "reservoir-related-parameters"]], "SPE11A": [[2, "spe11a"], [5, "spe11a"], [5, "id1"]], "SPE11B": [[2, "spe11b"], [5, "spe11b"], [5, "id2"]], "SPE11C": [[2, "spe11c"], [5, "spe11c"], [5, "id3"]], "Seek support": [[4, "seek-support"]], "Soil-related parameters": [[3, "soil-related-parameters"]], "Source build in Linux/Windows": [[7, "source-build-in-linux-windows"]], "Source build in macOS": [[7, "source-build-in-macos"]], "Sparse data": [[2, "sparse-data"], [2, "id3"], [2, "id6"]], "Spatial maps": [[2, "spatial-maps"], [2, "id4"], [2, "id7"]], "Submodules": [[12, "submodules"], [14, "submodules"], [19, "submodules"]], "Subpackages": [[11, "subpackages"]], "Welcome to pyopmspe11\u2019s documentation!": [[6, null]], "Well-related parameters": [[3, "well-related-parameters"]], "ad-micp": [[22, "ad-micp"]], "expreccs": [[22, "expreccs"]], "plopm": [[22, "plopm"]], "pycopm": [[22, "pycopm"]], "pymm": [[22, "pymm"]], "pyopmnearwell": [[22, "pyopmnearwell"]], "pyopmspe11": [[1, "pyopmspe11"], [9, null]], "pyopmspe11 Python API": [[1, null]], "pyopmspe11 package": [[11, null]], "pyopmspe11.core package": [[12, null]], "pyopmspe11.core.pyopmspe11 module": [[13, null]], "pyopmspe11.utils package": [[14, null]], "pyopmspe11.utils.inputvalues module": [[15, null]], "pyopmspe11.utils.mapproperties module": [[16, null]], "pyopmspe11.utils.runs module": [[17, null]], "pyopmspe11.utils.writefile module": [[18, null]], "pyopmspe11.visualization package": [[19, null]], "pyopmspe11.visualization.data module": [[20, null]], "pyopmspe11.visualization.plotting module": [[21, null]]}, "docnames": ["about", "api", "benchmark", "configuration_file", "contributing", "examples", "index", "installation", "introduction", "modules", "output_folder", "pyopmspe11", "pyopmspe11.core", "pyopmspe11.core.pyopmspe11", "pyopmspe11.utils", "pyopmspe11.utils.inputvalues", "pyopmspe11.utils.mapproperties", "pyopmspe11.utils.runs", "pyopmspe11.utils.writefile", "pyopmspe11.visualization", "pyopmspe11.visualization.data", "pyopmspe11.visualization.plotting", "related"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["about.rst", "api.rst", "benchmark.rst", "configuration_file.rst", "contributing.rst", "examples.rst", "index.rst", "installation.rst", "introduction.rst", "modules.rst", "output_folder.rst", "pyopmspe11.rst", "pyopmspe11.core.rst", "pyopmspe11.core.pyopmspe11.rst", "pyopmspe11.utils.rst", "pyopmspe11.utils.inputvalues.rst", "pyopmspe11.utils.mapproperties.rst", "pyopmspe11.utils.runs.rst", "pyopmspe11.utils.writefile.rst", "pyopmspe11.visualization.rst", "pyopmspe11.visualization.data.rst", "pyopmspe11.visualization.plotting.rst", "related.rst"], "indexentries": {"add_pv_fipnum_front_back() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.add_pv_fipnum_front_back", false]], "added_pv() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.added_pv", false]], "boxes() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.boxes", false]], "check_deck() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.check_deck", false]], "check_facie1() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.check_facie1", false]], "compute_m_c() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.compute_m_c", false]], "corner() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner", false]], "corner_point_handling_spe11a() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner_point_handling_spe11a", false]], "corner_point_handling_spe11bc() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner_point_handling_spe11bc", false]], "create_from_summary() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.create_from_summary", false]], "data() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.data", false]], "dense_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.dense_data", false]], "dense_data() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.dense_data", false]], "generate_arrays() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.generate_arrays", false]], "generate_arrays_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.generate_arrays_performance_spatial", false]], "generate_grid() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.generate_grid", false]], "get_cell_info() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.get_cell_info", false]], "get_corners() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.get_corners", false]], "get_header() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.get_header", false]], "get_lines() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.get_lines", false]], "getfacies() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.getfacies", false]], "grid() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.grid", false]], "handle_fipnums() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_fipnums", false]], "handle_inactive_mapping() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_inactive_mapping", false]], "handle_kind() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.handle_kind", false]], "handle_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_performance_spatial", false]], "handle_tuning() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.handle_tuning", false]], "handle_yaxis_mapping_extensive() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_yaxis_mapping_extensive", false]], "handle_yaxis_mapping_intensive() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_yaxis_mapping_intensive", false]], "ini_quantity_plot() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.ini_quantity_plot", false]], "initial() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.initial", false]], "load_parser() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.load_parser", false]], "locate_wells_sensors() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.locate_wells_sensors", false]], "main() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.main", false]], "main() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.main", false]], "main() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.main", false]], "map_to_report_grid() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.map_to_report_grid", false]], "map_to_report_grid_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.map_to_report_grid_performance_spatial", false]], "map_z() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.map_z", false]], "max_xcw() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.max_xcw", false]], "module": [[11, "module-pyopmspe11", false], [12, "module-pyopmspe11.core", false], [13, "module-pyopmspe11.core.pyopmspe11", false], [14, "module-pyopmspe11.utils", false], [15, "module-pyopmspe11.utils.inputvalues", false], [16, "module-pyopmspe11.utils.mapproperties", false], [17, "module-pyopmspe11.utils.runs", false], [18, "module-pyopmspe11.utils.writefile", false], [19, "module-pyopmspe11.visualization", false], [20, "module-pyopmspe11.visualization.data", false], [21, "module-pyopmspe11.visualization.plotting", false]], "opm_files() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.opm_files", false]], "opm_files() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.opm_files", false]], "performance() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.performance", false]], "performance() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.performance", false]], "plot_results() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.plot_results", false]], "plotting() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.plotting", false]], "positions() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.positions", false]], "process_input() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.process_input", false]], "pyopmspe11": [[11, "module-pyopmspe11", false]], "pyopmspe11() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.pyopmspe11", false]], "pyopmspe11.core": [[12, "module-pyopmspe11.core", false]], "pyopmspe11.core.pyopmspe11": [[13, "module-pyopmspe11.core.pyopmspe11", false]], "pyopmspe11.utils": [[14, "module-pyopmspe11.utils", false]], "pyopmspe11.utils.inputvalues": [[15, "module-pyopmspe11.utils.inputvalues", false]], "pyopmspe11.utils.mapproperties": [[16, "module-pyopmspe11.utils.mapproperties", false]], "pyopmspe11.utils.runs": [[17, "module-pyopmspe11.utils.runs", false]], "pyopmspe11.utils.writefile": [[18, "module-pyopmspe11.utils.writefile", false]], "pyopmspe11.visualization": [[19, "module-pyopmspe11.visualization", false]], "pyopmspe11.visualization.data": [[20, "module-pyopmspe11.visualization.data", false]], "pyopmspe11.visualization.plotting": [[21, "module-pyopmspe11.visualization.plotting", false]], "read_opm() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_opm", false]], "read_resdata() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_resdata", false]], "read_times() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_times", false]], "readthefirstpart() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.readthefirstpart", false]], "readthesecondpart() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.readthesecondpart", false]], "refinement_z() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.refinement_z", false]], "resdata_summary() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.resdata_summary", false]], "sensors() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.sensors", false]], "set_back_front_fipnums() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.set_back_front_fipnums", false]], "simulations() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.simulations", false]], "sparse_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.sparse_data", false]], "sparse_data() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.sparse_data", false]], "static_map_to_report_grid_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.static_map_to_report_grid_performance_spatial", false]], "structured_handling_spe11a() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.structured_handling_spe11a", false]], "structured_handling_spe11bc() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.structured_handling_spe11bc", false]], "wells() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.wells", false]], "write_dense_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_dense_data", false]], "write_dense_data_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_dense_data_performance_spatial", false]], "write_keywords() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.write_keywords", false]], "write_performance() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_performance", false]], "write_sparse_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_sparse_data", false]]}, "objects": {"": [[11, 0, 0, "-", "pyopmspe11"]], "pyopmspe11": [[12, 0, 0, "-", "core"], [14, 0, 0, "-", "utils"], [19, 0, 0, "-", "visualization"]], "pyopmspe11.core": [[13, 0, 0, "-", "pyopmspe11"]], "pyopmspe11.core.pyopmspe11": [[13, 1, 1, "", "load_parser"], [13, 1, 1, "", "main"], [13, 1, 1, "", "pyopmspe11"]], "pyopmspe11.utils": [[15, 0, 0, "-", "inputvalues"], [16, 0, 0, "-", "mapproperties"], [17, 0, 0, "-", "runs"], [18, 0, 0, "-", "writefile"]], "pyopmspe11.utils.inputvalues": [[15, 1, 1, "", "check_deck"], [15, 1, 1, "", "handle_tuning"], [15, 1, 1, "", "process_input"], [15, 1, 1, "", "readthefirstpart"], [15, 1, 1, "", "readthesecondpart"]], "pyopmspe11.utils.mapproperties": [[16, 1, 1, "", "add_pv_fipnum_front_back"], [16, 1, 1, "", "boxes"], [16, 1, 1, "", "check_facie1"], [16, 1, 1, "", "corner"], [16, 1, 1, "", "corner_point_handling_spe11a"], [16, 1, 1, "", "corner_point_handling_spe11bc"], [16, 1, 1, "", "get_cell_info"], [16, 1, 1, "", "get_lines"], [16, 1, 1, "", "getfacies"], [16, 1, 1, "", "grid"], [16, 1, 1, "", "locate_wells_sensors"], [16, 1, 1, "", "map_z"], [16, 1, 1, "", "positions"], [16, 1, 1, "", "refinement_z"], [16, 1, 1, "", "sensors"], [16, 1, 1, "", "set_back_front_fipnums"], [16, 1, 1, "", "structured_handling_spe11a"], [16, 1, 1, "", "structured_handling_spe11bc"], [16, 1, 1, "", "wells"]], "pyopmspe11.utils.runs": [[17, 1, 1, "", "data"], [17, 1, 1, "", "plotting"], [17, 1, 1, "", "simulations"]], "pyopmspe11.utils.writefile": [[18, 1, 1, "", "added_pv"], [18, 1, 1, "", "initial"], [18, 1, 1, "", "opm_files"], [18, 1, 1, "", "write_keywords"]], "pyopmspe11.visualization": [[20, 0, 0, "-", "data"], [21, 0, 0, "-", "plotting"]], "pyopmspe11.visualization.data": [[20, 1, 1, "", "compute_m_c"], [20, 1, 1, "", "create_from_summary"], [20, 1, 1, "", "dense_data"], [20, 1, 1, "", "generate_arrays"], [20, 1, 1, "", "generate_arrays_performance_spatial"], [20, 1, 1, "", "get_corners"], [20, 1, 1, "", "get_header"], [20, 1, 1, "", "handle_fipnums"], [20, 1, 1, "", "handle_inactive_mapping"], [20, 1, 1, "", "handle_performance_spatial"], [20, 1, 1, "", "handle_yaxis_mapping_extensive"], [20, 1, 1, "", "handle_yaxis_mapping_intensive"], [20, 1, 1, "", "main"], [20, 1, 1, "", "map_to_report_grid"], [20, 1, 1, "", "map_to_report_grid_performance_spatial"], [20, 1, 1, "", "max_xcw"], [20, 1, 1, "", "opm_files"], [20, 1, 1, "", "performance"], [20, 1, 1, "", "read_opm"], [20, 1, 1, "", "read_resdata"], [20, 1, 1, "", "read_times"], [20, 1, 1, "", "resdata_summary"], [20, 1, 1, "", "sparse_data"], [20, 1, 1, "", "static_map_to_report_grid_performance_spatial"], [20, 1, 1, "", "write_dense_data"], [20, 1, 1, "", "write_dense_data_performance_spatial"], [20, 1, 1, "", "write_performance"], [20, 1, 1, "", "write_sparse_data"]], "pyopmspe11.visualization.plotting": [[21, 1, 1, "", "dense_data"], [21, 1, 1, "", "generate_grid"], [21, 1, 1, "", "handle_kind"], [21, 1, 1, "", "ini_quantity_plot"], [21, 1, 1, "", "main"], [21, 1, 1, "", "performance"], [21, 1, 1, "", "plot_results"], [21, 1, 1, "", "sparse_data"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:function"}, "terms": {"": [2, 3, 7, 8], "0": [2, 3, 5, 7, 8], "00": 3, "02": 2, "04": [3, 7], "06": 6, "08": 3, "0f": 2, "1": [2, 3, 5, 7, 8, 16], "10": [2, 3, 4, 5, 7], "100": [2, 3, 5], "1000": [2, 3, 5], "101": 3, "1013": 3, "10132": 3, "10m": 2, "10mish": 2, "11": 3, "12": [3, 7], "120": [2, 5], "1200": 3, "13": [6, 7, 16], "14": [3, 16], "15": [2, 3, 5, 16], "150": [2, 3, 5], "16": [2, 16], "16666666666666666": [2, 5], "168": [2, 5], "17": 16, "18": [3, 16], "193531": 3, "1cm": 2, "1cmish": 2, "1e": [2, 3], "1f": 2, "1m": 2, "1mm": 2, "2": [2, 3], "20": [2, 3, 5], "200": [2, 5], "202": 3, "2024": [3, 6, 7], "2026": 3, "21729920": 5, "22": 3, "24": 4, "25": [2, 3, 5], "250": [2, 5], "2500": [2, 3], "2560": 3, "26": 3, "27": 2, "2700": 3, "280": [2, 5], "29": 2, "2e": [2, 3], "3": [2, 3, 7], "30": [2, 3, 5], "300": [2, 3, 5], "304": 2, "3060": 3, "32": 3, "324": 3, "331841": 0, "35": [2, 3, 5], "350": [2, 5], "36": 3, "3870": 3, "39": 3, "3e7": 3, "4": [2, 3], "40": [2, 3, 5], "400": [2, 3, 5], "4000": 3, "420": 3, "45": [2, 5], "450": [2, 5], "5": [2, 3, 5, 8], "50": [2, 3, 5], "500": [2, 3, 5], "5000": 3, "506": 3, "50m": 2, "51": 2, "5100": 3, "5e": [2, 3], "5e4": 3, "6": [2, 3], "600": [2, 5], "6120": 3, "622059": 0, "625": 3, "63": 3, "650": 3, "7": [3, 5], "70": 3, "700": [2, 3, 5], "75": [2, 5], "7e": 2, "8": [2, 3, 7, 8], "800": [2, 5], "840": [2, 5], "8400": 3, "8654": 3, "8m": 2, "8mish": 2, "8mish_convect": 2, "9": [3, 7], "90": 3, "900": [2, 5], "92": 3, "95000": 2, "97": 2, "98": 2, "99": 3, "999": 3, "A": [2, 3, 16, 22], "As": 2, "By": 3, "For": [0, 2, 5, 7, 16], "If": [3, 7, 8, 10, 15], "In": [2, 3, 4, 5, 7, 8, 10], "ON": 7, "The": [1, 3, 4, 5, 7, 8, 10], "Then": [3, 5, 7, 10], "There": 5, "To": [2, 7], "_2": 2, "_build": 4, "about": [4, 6], "accept": 4, "accord": 21, "account": 20, "accumul": 2, "accuraci": 2, "achiev": 7, "achiv": 5, "action": 4, "activ": [5, 7], "actual": 2, "ad": [3, 6, 18], "add": [3, 7, 10, 16], "add_pv_fipnum_front_back": [11, 14, 16], "added_pv": [11, 14, 18], "addit": [2, 3, 4, 7, 8, 10], "after": [2, 3, 4, 6, 7, 10, 15], "al": 2, "all": [2, 4, 5, 7, 8], "allow": 3, "along": 16, "also": [2, 3, 4, 7, 8, 16], "altern": [4, 7], "an": [0, 3, 4, 7, 10, 22], "anaconda": 7, "analys": 4, "ani": 4, "answer": 4, "api": 6, "approach": [0, 4], "apt": [4, 7], "ar": [0, 2, 3, 4, 5, 7, 10, 22], "arg": [15, 16, 17, 18, 20, 21], "argument": [8, 10, 13], "arrai": [3, 20], "assess": 8, "assign": [3, 16], "avail": [2, 3, 7], "axi": 16, "b": [3, 16], "back": [2, 3, 16], "base": [8, 22], "bc": [3, 16], "been": 5, "befor": [4, 6], "being": 0, "below": [5, 22], "benchmark": [3, 5, 6, 8, 17, 20, 21], "better": [2, 5], "between": [2, 3, 5, 8, 21], "big": 2, "bin": [3, 7], "binari": [4, 7], "black": 4, "bool": 17, "both": [4, 5, 7], "bottom": 3, "boundari": [2, 3, 16, 18], "box": [2, 3, 11, 14, 16, 20], "branch": [3, 7], "brew": 7, "buffer": [3, 16], "bug": 5, "build": [3, 4, 6], "build_opm_mpi": 7, "built": 7, "c": [2, 3, 5, 8, 16, 20], "ca": 2, "calcit": 22, "call": 10, "can": [2, 3, 4, 5, 7, 10], "capillari": [2, 3], "capmax": 2, "cart": [2, 5], "cartesian": [3, 5, 8, 16], "case": [2, 3, 8, 21], "cbsfax": 2, "cd": 7, "cell": [2, 3, 5, 8, 16, 18, 20], "center": [0, 16, 20], "cet_diverging_protanopic_deuteranopic_bwy_60_95_c32": 2, "cfd": 22, "cformat": 2, "challeng": 0, "chang": [3, 4, 5], "changu": 3, "check": 22, "check_deck": [11, 14, 15], "check_facie1": [11, 14, 16], "checker": 4, "checkout": 7, "choic": 2, "chop": 5, "ci": [4, 7], "clabel": 2, "clone": 7, "cluster": 2, "cm": [2, 4, 5, 7], "cmake": 7, "cmish": 5, "cnum": 2, "cnv": 3, "co": 2, "co2": [2, 3, 5, 20, 22], "co2stor": 3, "coarsen": 22, "coarser": 5, "code": [4, 7, 11], "collabor": 4, "com": [2, 7, 8], "comma": 8, "command": 7, "commit": 4, "common": [7, 8], "compar": [2, 5, 8], "comparison": [2, 5, 8], "compat": 3, "complet": 3, "compon": 3, "comput": [2, 20], "compute_m_c": [11, 19, 20], "concentr": 20, "concept": 6, "configur": [1, 2, 5, 6, 8, 10, 15], "configuration_fil": 8, "conserv": 5, "contain": [1, 5], "content": [1, 4, 6, 9], "continu": 3, "contribut": [0, 6, 7], "convect": [2, 3], "converg": 3, "coordin": [1, 16, 18], "copi": [4, 7], "core": [1, 7, 9, 11], "corner": [1, 2, 3, 5, 8, 11, 14, 16, 20], "corner_point_handling_spe11a": [11, 14, 16], "corner_point_handling_spe11bc": [11, 14, 16], "correctli": 5, "correspond": [2, 15], "could": [7, 10], "cours": 2, "cov": [4, 10], "cp": [2, 5], "cprw": 3, "cpu": 3, "creat": [1, 4, 7, 8, 16, 20, 21], "create_from_summari": [11, 19, 20], "csp": [2, 5], "cssr": [0, 2], "csv": [20, 21], "current": [3, 7, 8], "current_directori": 7, "curv": 3, "d": 2, "d_t": 20, "dai": 2, "data": [3, 5, 6, 8, 11, 14, 16, 17, 19, 21], "data_plot": 8, "datum": 3, "dcmake_build_typ": 7, "dcmake_disable_find_package_mpi": 7, "dcmake_prefix_path": 7, "deactiv": 7, "deadlin": 2, "debug": 5, "deck": [3, 5, 8, 17, 18], "deck_flow": 8, "deck_flow_data": [5, 8], "default": 8, "defin": [3, 5, 8], "delet": 4, "dens": [5, 8, 20, 21], "dense_data": [11, 19, 20, 21], "dense_perform": 8, "dense_performance_spars": 8, "dense_spars": 8, "densiti": 3, "depend": [4, 7], "depth": 3, "describ": [4, 8], "descript": 2, "destin": 17, "detail": [0, 2, 3], "dev": [4, 7, 10], "develop": 7, "dic": [15, 16, 17, 18, 21], "dict": [15, 16, 17, 18, 20, 21], "dictionari": [15, 16, 17, 18, 20, 21], "differ": [1, 3, 5, 10, 16], "diffus": 3, "dig": 20, "dil": 20, "dir": 16, "direct": [3, 20], "directli": 10, "disp": 3, "disp1": 3, "disp2": 3, "disp3": 3, "disp4": 3, "disp5": 3, "disp6": 3, "disp7": 3, "dissolut": 3, "dissolv": 2, "divid": 3, "dmar": 3, "do": 7, "doc": 4, "document": [3, 4, 7, 8, 10], "doe": 2, "domain": 5, "done": 7, "dopm_enable_python": 7, "dpi": 2, "dpython_execut": 7, "dry": 17, "dryrun": 17, "due": 7, "dune": 7, "dunecontrol": 7, "dure": 5, "duse_mpi": 7, "dvipng": [4, 7], "dwith_ndebug": 7, "dx": 2, "dy": 2, "dynam": [20, 22], "e": [2, 3, 5, 7, 8, 10, 18, 21], "each": 3, "easier": 7, "echo": 7, "edg": 7, "effect": 3, "element": [3, 8], "elev": 3, "els": 4, "email": 4, "enabl": [3, 15], "end": 15, "entri": [3, 15], "environ": 7, "equal": 7, "equidist": 5, "erf": 3, "error": 7, "et": 2, "etc": 3, "evalu": [3, 5], "event": 15, "exampl": [3, 6, 10], "except": 4, "execut": [1, 2, 3, 4, 5, 7, 8, 10, 13, 15], "exp": 3, "export": 7, "exprecc": 6, "extend": [4, 20], "extens": 20, "extra": [3, 4, 7], "face": [3, 7], "faci": [1, 2, 3, 16], "factor": 15, "familiar": 4, "fast": 5, "faster": [2, 3, 7], "featur": [0, 15], "field": 20, "figur": [3, 5, 7, 8, 10, 17, 21], "file": [1, 2, 5, 6, 7, 8, 10, 15, 16, 17, 18, 20, 21], "final": [3, 4, 5], "find": [16, 18], "fine": 2, "finer": 5, "finish": 2, "fipnum": [3, 16, 20], "first": 3, "fix": [3, 4, 5], "flag": [3, 5, 7, 8], "flexibl": [8, 22], "flip": 3, "float": [16, 20], "flow": [2, 3, 4, 6, 8, 10, 15, 17, 18, 22], "flow_data": 8, "flow_data_plot": 8, "fluid": [3, 8], "folder": [1, 2, 3, 4, 5, 6, 7, 8, 17], "follow": [2, 3, 4, 5, 7, 8, 10], "font": [4, 7], "fork": [0, 4], "format": [4, 7, 8, 10, 20], "found": [3, 7], "fraction": [2, 20], "framework": [3, 5, 8, 22], "free": 3, "from": [3, 4, 5, 7, 15, 16, 20, 21, 22], "front": [2, 16], "full": 3, "function": [2, 3, 8, 13, 15, 16, 17, 18], "fund": 0, "g": [2, 3, 5, 7, 8, 10, 18, 21], "ga": 3, "gasoil": 3, "gaswat": 3, "gener": [1, 2, 3, 4, 5, 8, 10, 17, 18, 20, 21, 22], "generate_arrai": [11, 19, 20], "generate_arrays_performance_spati": [11, 19, 20], "generate_grid": [11, 19, 21], "geo": 3, "geolog": [1, 2, 16, 22], "geometri": 7, "get": [3, 4, 7, 16, 20], "get_cell_info": [11, 14, 16], "get_corn": [11, 19, 20], "get_head": [11, 19, 20], "get_lin": [11, 14, 16], "getfaci": [11, 14, 16], "gif": [2, 22], "gigatonn": 0, "git": [2, 7, 18], "github": [2, 4, 7, 8, 18], "gitlab": 7, "global": [15, 16, 17, 18, 20, 21], "gmsh": [1, 16], "grid": [1, 2, 3, 5, 7, 8, 11, 14, 16, 20, 21], "ground": 6, "group": 20, "h": [3, 8], "ha": 5, "handl": [2, 16], "handle_fipnum": [11, 19, 20], "handle_inactive_map": [11, 19, 20], "handle_kind": [11, 19, 21], "handle_performance_spati": [11, 19, 20], "handle_tun": [11, 14, 15], "handle_yaxis_mapping_extens": [11, 19, 20], "handle_yaxis_mapping_intens": [11, 19, 20], "have": [3, 5], "header": 20, "heat": 3, "hello": [6, 10], "hello_world": 5, "help": 4, "here": [0, 2, 3, 5, 10], "high": 2, "higher": 7, "highlight": 2, "horizont": 3, "host": 8, "hour": 3, "hpc": [0, 2], "html": 4, "http": [2, 7, 8], "i": [0, 1, 2, 3, 4, 5, 7, 8, 15, 16, 20], "id": 16, "identifi": [3, 21], "idx": 16, "ignor": 4, "ijk": [16, 20], "imag": 22, "immisc": 3, "impact": 2, "implement": [2, 3, 8], "import": 4, "improv": [2, 3], "in_fil": 15, "inact": 20, "includ": [2, 3, 7], "increas": 2, "ind": 16, "index": [6, 16, 20], "indic": [16, 20], "induc": 22, "inf": 20, "info": 3, "infotim": 20, "ini_quantity_plot": [11, 19, 21], "initi": [5, 11, 14, 17, 18, 21], "inj0": 3, "inj1": 3, "injeciton": 5, "inject": [3, 5, 8, 20], "input": [1, 3, 8, 15, 17], "inputvalu": [11, 14], "insid": 7, "inspect": 8, "instal": [2, 3, 4, 6, 10], "instead": [2, 3], "instruct": 4, "int": [16, 20], "integ": [16, 20], "interest": [7, 22], "intern": 3, "interp_fgip": 20, "interpol": 20, "interv": 8, "introduct": 6, "issu": [0, 2, 3, 5, 6], "istl": 7, "iter": [3, 21], "j": 16, "j5": 7, "just": 5, "k": [3, 16], "keep": 3, "keyword": [3, 18], "kg": 3, "kind": 21, "km": 2, "l": [7, 8], "label": 16, "last": 3, "later": 3, "latest": 3, "latex": [4, 7, 8], "leakag": 22, "left": [2, 5], "length": [3, 15], "let": 5, "level": 3, "librari": 7, "line": [3, 4, 5, 7, 15, 16], "linear": 3, "linebreak": 3, "lines_coordin": 3, "link": [0, 3, 18], "linspac": 3, "lint": 7, "linux": 6, "liquid": [2, 3, 20], "list": [15, 16, 20, 21], "load": 21, "load_pars": [11, 12, 13], "local": [4, 20], "locat": [1, 2, 3, 8, 16, 20], "locate_wells_sensor": [11, 14, 16], "lol": 15, "look": [4, 5], "low": 5, "m": [2, 3, 5, 7, 8], "maco": [4, 6], "macport": 7, "mactex": 7, "main": [1, 4, 11, 12, 13, 19, 20, 21], "maintain": 4, "make": [4, 7, 21], "makefil": 4, "mako": 18, "mamba": 7, "manag": 7, "mani": [2, 3], "mantain": 4, "map": [5, 6, 8, 20, 21], "map_to_report_grid": [11, 19, 20], "map_to_report_grid_performance_spati": [11, 19, 20], "map_z": [11, 14, 16], "mapproperti": [11, 14], "mask": 2, "maskthr": 2, "mass": [2, 3, 5, 20], "massfracta": 2, "massfractb": 2, "massfractc": 2, "master": [3, 7], "math": 3, "max": 3, "max_xcw": [11, 19, 20], "maximum": [2, 3, 5, 15, 20], "md": 3, "mean": 2, "mention": 2, "merg": 4, "meti": 2, "micp": 6, "microbi": 22, "microsystem": 22, "might": [4, 7, 22], "million": 2, "min": 3, "miniforg": 7, "miss": [4, 10], "mix": 2, "mkdir": 7, "mm": [2, 5], "mode": 3, "model": [1, 2, 3, 15, 16, 22], "modifi": [7, 10, 15, 16, 18, 20, 21], "modul": [1, 6, 7, 9, 22], "molar": 2, "more": [0, 2, 4], "mpi": [3, 7], "mpirun": 3, "multipli": 3, "mykkeltvedt": 2, "mypi": 4, "n": 3, "name": [3, 8, 15, 17, 20], "name_t": 20, "ncx": 16, "ncz": 16, "necessari": 18, "need": [4, 7], "nevertheless": 2, "new": [0, 4, 16], "newer": 3, "newton": [3, 21], "next": 15, "nice": 4, "nojekyl": 4, "non": 3, "none": [17, 18, 20, 21], "norc": 2, "normal": 20, "now": 5, "np": 3, "npoint": 3, "npoints1": 3, "npoints2": 3, "npoints3": 3, "npoints4": 3, "npoints5": 3, "npoints6": 3, "npoints7": 3, "numa": 16, "numb": 16, "number": [0, 3, 5, 8, 16, 20, 21], "o": [2, 5, 8], "object": 20, "obtain": 1, "off": 2, "oil": 3, "one": [8, 10], "ones": 5, "onli": [7, 8], "open": 22, "opm": [2, 3, 4, 6, 8, 10, 17, 18, 20, 22], "opm_fil": [11, 14, 18, 19, 20], "optim": 2, "option": [8, 10, 13], "order": 20, "org": 7, "other": 2, "otherwis": [3, 8, 16], "our": 4, "out": 22, "output": [3, 5, 6, 7, 8, 17, 18, 20], "over": [2, 5, 21], "overlap": 16, "overview": [3, 6], "own": 4, "pa": [2, 3], "packag": [0, 1, 4, 6, 8, 9], "page": [4, 6], "parabola": [3, 16], "parallel": 3, "paramet": [6, 15], "paraview": 2, "part": 3, "past": 4, "path": [3, 8], "pen": 3, "pen1": 3, "pen2": 3, "pen3": 3, "pen4": 3, "pen5": 3, "pen6": 3, "pen7": 3, "penmax": 3, "penmax1": 3, "penmax2": 3, "penmax3": 3, "penmax4": 3, "penmax5": 3, "penmax6": 3, "penmax7": 3, "per": 16, "perform": [5, 6, 8, 11, 19, 20, 21], "performance_spars": [5, 8], "period": 5, "perm": 3, "perm1": 3, "perm2": 3, "perm3": 3, "perm4": 3, "perm5": 3, "perm6": 3, "perm7": 3, "permeabl": 3, "phase": [2, 3, 20], "phi": 3, "pi": 3, "pip": [2, 4, 7], "pleas": [0, 4], "plopm": [2, 6], "plot": [8, 10, 11, 14, 17, 19], "plot_result": [11, 19, 21], "png": [8, 10, 22], "point": [1, 2, 3, 5, 8, 16], "pore": [3, 16, 18], "poro1": 3, "poro2": 3, "poro3": 3, "poro4": 3, "poro5": 3, "poro6": 3, "poro7": 3, "posit": [3, 11, 14, 16], "possibl": 4, "postprocess": [1, 2, 20], "pr": [4, 5], "pre": 2, "precipit": 22, "prefer": 4, "prerequisit": 7, "present": 5, "pressur": [2, 3, 21], "previou": [2, 4, 7], "problem": 6, "process": [1, 15, 17], "process_input": [11, 14, 15], "produc": 3, "progress": 2, "project": [0, 7, 8], "properti": [3, 8, 16], "prototyp": 3, "pull": [0, 4], "push": 4, "pushd": 4, "pwd": 7, "pycopm": 6, "pylint": 4, "pymm": 6, "pyopmnearwel": 6, "pyopmspe11": [2, 4, 5, 7, 8, 10], "pytest": [4, 10], "python": [4, 6, 8, 22], "python3": 7, "pythonpath": 7, "quantiti": [2, 20], "quick": [8, 22], "r": [2, 4, 5, 7, 8], "r1": 2, "r1_cart_10m": 2, "r1_cart_1cm": 2, "r1_cart_50m": 2, "r2": 2, "r2_cart_1cm_capmax2500pa": 2, "r2_cp_10mish": 2, "r2_cp_50m": 2, "r3": 2, "r3_cp_10mish_convect": 2, "r3_cp_1cmish_capmax2500pa": 2, "r3_cp_50m": 2, "r4": 2, "r4_cart_1m": 2, "r4_cart_1mm_capmax2500pa": 2, "r4_cp_8m": 2, "r5": 2, "r5_cart_1mm_capmax2500pa_strictol": 2, "radiu": 3, "rais": [0, 4], "ran": 5, "rate": 3, "read": [3, 7, 15, 16, 20], "read_opm": [11, 19, 20], "read_resdata": [11, 19, 20], "read_tim": [11, 19, 20], "readthefirstpart": [11, 14, 15], "readthesecondpart": [11, 14, 15], "recommend": [4, 7], "reduc": [2, 5], "refer": 16, "reference_mesh": 1, "refin": [3, 16], "refinement_z": [11, 14, 16], "regard": [3, 7], "region": [3, 22], "rel": 3, "relat": [6, 10, 18, 21], "releas": [3, 7, 15], "relev": 2, "remark": 2, "remedi": 22, "repo": [4, 7], "report": [2, 3, 5, 6, 8, 10, 16, 20], "repositori": [4, 7, 18], "request": [0, 4, 8], "requir": [2, 3, 4, 7, 10], "requiri": 15, "resdata": [7, 8, 20], "resdata_summari": [11, 19, 20], "reservoir": [6, 22], "resinsight": [3, 10], "resolut": [2, 5], "resourc": 0, "restart": [15, 20], "restrict": 5, "result": [1, 2, 3, 5, 8, 10, 21], "return": [15, 16, 17, 18, 20, 21], "review": [2, 4], "rig": 3, "right": [2, 5, 20], "rise": 4, "rock": [3, 8], "rst": 3, "rule": 6, "run": [2, 3, 4, 5, 7, 8, 10, 11, 14, 18], "s_w": 3, "same": [3, 5, 8], "sand": 16, "sat": 3, "satnum": [2, 16], "satur": [3, 15, 21], "save": [2, 5, 10], "scale": 2, "schedul": [3, 8], "screenshot": 10, "script": [1, 3, 4, 7, 13, 20, 21], "search": 6, "second": 5, "section": [3, 5], "see": [2, 3, 4, 5, 7, 10], "seek": 6, "seem": 7, "select": [8, 10], "send": 4, "sensit": 8, "sensor": [3, 11, 14, 16, 20, 21], "separ": 8, "set": [3, 5, 8, 15, 20], "set_back_front_fipnum": [11, 14, 16], "setuptool": 7, "sh": 7, "shorter": 5, "should": 7, "show": [2, 3, 5, 8, 10], "significantli": 2, "simplifi": [8, 22], "simul": [0, 2, 3, 5, 7, 8, 10, 11, 14, 16, 17, 20, 22], "sinc": 3, "singl": 4, "site": 22, "six": 4, "size": [2, 3, 5, 20, 21], "skip": 7, "sni": 3, "sni1": 3, "sni2": 3, "sni3": 3, "sni4": 3, "sni5": 3, "sni6": 3, "sni7": 3, "so": 7, "softwar": [0, 6], "soil": 6, "solut": 8, "solver": [3, 10, 15], "some": [5, 10, 18, 20, 21, 22], "soon": 4, "sort": 20, "sourc": [3, 6, 8, 16, 22], "spars": [5, 6, 8, 20, 21], "sparse_data": [11, 19, 20, 21], "spatial": [6, 8, 20, 21], "spe": [3, 8, 21], "spe11": [0, 16], "spe11a": [3, 6, 8, 16], "spe11a1mm": 5, "spe11a_cp_1cmish": 5, "spe11b": [3, 6, 8, 16], "spe11b10m": 5, "spe11b1m": 5, "spe11b_tco2_2dmap": 5, "spe11c": [3, 6, 8, 16], "spe11c_168_100_120": 5, "spe11c_cp": 5, "specif": [3, 7], "specifi": 3, "squash": 4, "src": 4, "stabl": 3, "static": 4, "static_map_to_report_grid_performance_spati": [11, 19, 20], "step": [3, 4, 5, 7, 8, 15, 20], "still": 7, "storag": [0, 22], "str": [15, 17, 18, 20], "stricer": 2, "stricter": 2, "string": [20, 21], "structured_handling_spe11a": [11, 14, 16], "structured_handling_spe11bc": [11, 14, 16], "studi": [2, 22], "subfig": 2, "subgrid": 2, "submiss": 2, "submodul": [1, 9, 11], "subpackag": [1, 6, 9], "subsurfac": 0, "subsystem": 7, "succe": 4, "sudo": [4, 7], "summari": 20, "super": [4, 7], "support": [2, 3, 6, 7, 8], "suptitl": 2, "surfac": 16, "sustain": 0, "swi": 3, "swi1": 3, "swi2": 3, "swi3": 3, "swi4": 3, "swi5": 3, "swi6": 3, "swi7": 3, "t": [2, 5, 8], "t_n": 20, "tag": 7, "tcpu": 20, "temperatur": 3, "templat": [1, 18], "tensor": [3, 5, 8, 16], "term": [4, 10], "termin": [2, 7, 15], "test": [3, 4, 5, 7, 10], "texliv": [4, 7], "text": [4, 15, 20], "than": [0, 2, 3, 4, 7], "thconr": 3, "thconr1": 3, "thconr2": 3, "thconr3": 3, "thconr4": 3, "thconr5": 3, "thconr6": 3, "thconr7": 3, "them": [4, 22], "thermal": 3, "thi": [0, 2, 3, 4, 5, 7, 8], "three": 8, "tighten": 3, "time": [2, 3, 5, 8, 15, 20, 21], "toler": [2, 3], "tool": [2, 22], "top": 3, "total": 20, "tracer": 10, "trade": 2, "true": 3, "try": [4, 7], "tug": 7, "tun": 5, "tune": [3, 15], "turn": 7, "tutori": 4, "two": 5, "txt": [2, 4, 5, 7, 8, 10], "type": [2, 3, 5, 7, 8, 16, 21, 22], "u": [2, 5, 8], "ubuntu": [4, 7], "under": 2, "unfortun": 2, "uniform": [2, 3], "unsupport": 15, "until": 15, "updat": [3, 7], "upgrad": 7, "us": [0, 1, 2, 3, 4, 5, 7, 8, 10, 15, 18, 20, 21, 22], "user": [3, 4, 7], "util": [1, 9, 11], "utilii": [15, 16, 17, 18], "v": 2, "v2": 7, "v2024": 7, "valu": [2, 3, 15, 18], "variabl": [3, 18], "variat": 20, "venv": 7, "veri": [2, 5], "version": [3, 7, 11], "via": [7, 8], "virtual": 7, "visit": 4, "visual": [1, 2, 3, 5, 9, 10, 11], "volum": [3, 16, 18], "vpyopmspe11": 7, "vtk": 22, "w": [2, 3, 5, 8], "warn": 8, "water": 3, "we": [2, 3, 4, 5, 7, 15], "welcom": [0, 4, 5], "well": [2, 4, 5, 6, 7, 8, 11, 14, 16, 22], "well1": 3, "well2": 3, "wet": 3, "wheel": 7, "when": 7, "where": [2, 3, 8], "which": [2, 5, 7], "while": [2, 3, 5, 7], "whole": 8, "width": 3, "window": 6, "within": 20, "work": [2, 4, 7], "workshop": 6, "world": [6, 10], "write": [1, 3, 7, 8, 15, 17, 18, 20], "write_dense_data": [11, 19, 20], "write_dense_data_performance_spati": [11, 19, 20], "write_keyword": [11, 14, 18], "write_perform": [11, 19, 20], "write_sparse_data": [11, 19, 20], "writefil": [11, 14], "www": 7, "x": [3, 5, 8, 16], "x_c": 16, "xci": 16, "xco2l": 2, "xcr": 16, "xformat": 2, "xlnum": 2, "xunit": 2, "y": [2, 3, 8, 16, 20], "year": [2, 3], "yet": 7, "yformat": 2, "yml": [4, 7], "you": [2, 3, 4, 5, 7, 10], "your": [3, 4, 5], "yunit": 2, "z": [3, 8, 16], "z_c": 16, "zci": 16, "zcr": 16, "znr": 16, "zone": 2}, "titles": ["About pyopmspe11", "pyopmspe11 Python API", "Benchmark", "Configuration file", "Contributing", "Examples", "Welcome to pyopmspe11\u2019s documentation!", "Installation", "Introduction", "pyopmspe11", "Output folder", "pyopmspe11 package", "pyopmspe11.core package", "pyopmspe11.core.pyopmspe11 module", "pyopmspe11.utils package", "pyopmspe11.utils.inputvalues module", "pyopmspe11.utils.mapproperties module", "pyopmspe11.utils.runs module", "pyopmspe11.utils.writefile module", "pyopmspe11.visualization package", "pyopmspe11.visualization.data module", "pyopmspe11.visualization.plotting module", "Related"], "titleterms": {"": 6, "06": 5, "13": 5, "2024": 5, "about": 0, "ad": 22, "after": 5, "api": 1, "befor": 5, "benchmark": 2, "build": 7, "concept": 8, "configur": 3, "content": [11, 12, 14, 19], "contribut": 4, "core": [12, 13], "data": [2, 20], "document": 6, "exampl": 5, "exprecc": 22, "file": 3, "flow": 7, "folder": 10, "ground": 4, "hello": 5, "indic": 6, "inputvalu": 15, "instal": 7, "introduct": 8, "issu": 4, "linux": 7, "maco": 7, "map": 2, "mapproperti": 16, "micp": 22, "modul": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "opm": 7, "output": 10, "overview": 8, "packag": [7, 11, 12, 14, 19], "paramet": 3, "perform": 2, "plopm": 22, "plot": 21, "problem": 4, "pycopm": 22, "pymm": 22, "pyopmnearwel": 22, "pyopmspe11": [0, 1, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "python": [1, 7], "relat": [3, 22], "report": 4, "reservoir": 3, "rule": 4, "run": 17, "seek": 4, "softwar": 4, "soil": 3, "sourc": 7, "spars": 2, "spatial": 2, "spe11a": [2, 5], "spe11b": [2, 5], "spe11c": [2, 5], "submodul": [12, 14, 19], "subpackag": 11, "support": 4, "tabl": 6, "util": [14, 15, 16, 17, 18], "visual": [19, 20, 21], "welcom": 6, "well": 3, "window": 7, "workshop": 5, "world": 5, "writefil": 18}}) \ No newline at end of file +Search.setIndex({"alltitles": {"About pyopmspe11": [[0, null]], "After the 13.06.2024 workshop": [[5, "after-the-13-06-2024-workshop"]], "Before the 13.06.2024 workshop": [[5, "before-the-13-06-2024-workshop"]], "Benchmark": [[2, null]], "Concept": [[8, "concept"]], "Configuration file": [[3, null]], "Contribute to the software": [[4, "contribute-to-the-software"]], "Contributing": [[4, null]], "Examples": [[5, null]], "Ground Rules": [[4, "ground-rules"]], "Hello world": [[5, "hello-world"]], "Indices and tables": [[6, "indices-and-tables"]], "Installation": [[7, null]], "Introduction": [[8, null]], "Module contents": [[11, "module-pyopmspe11"], [12, "module-pyopmspe11.core"], [14, "module-pyopmspe11.utils"], [19, "module-pyopmspe11.visualization"]], "OPM Flow": [[7, "opm-flow"]], "Output folder": [[10, null]], "Overview": [[8, "overview"]], "Performance data": [[2, "performance-data"], [2, "id2"], [2, "id5"]], "Python package": [[7, "python-package"]], "Related": [[22, null]], "Reporting issues or problems": [[4, "reporting-issues-or-problems"]], "Reservoir-related parameters": [[3, "reservoir-related-parameters"]], "SPE11A": [[2, "spe11a"], [5, "spe11a"], [5, "id1"]], "SPE11B": [[2, "spe11b"], [5, "spe11b"], [5, "id2"]], "SPE11C": [[2, "spe11c"], [5, "spe11c"], [5, "id3"]], "Seek support": [[4, "seek-support"]], "Soil-related parameters": [[3, "soil-related-parameters"]], "Source build in Linux/Windows": [[7, "source-build-in-linux-windows"]], "Source build in macOS": [[7, "source-build-in-macos"]], "Sparse data": [[2, "sparse-data"], [2, "id3"], [2, "id6"]], "Spatial maps": [[2, "spatial-maps"], [2, "id4"], [2, "id7"]], "Submodules": [[12, "submodules"], [14, "submodules"], [19, "submodules"]], "Subpackages": [[11, "subpackages"]], "Welcome to pyopmspe11\u2019s documentation!": [[6, null]], "Well-related parameters": [[3, "well-related-parameters"]], "ad-micp": [[22, "ad-micp"]], "expreccs": [[22, "expreccs"]], "plopm": [[22, "plopm"]], "pycopm": [[22, "pycopm"]], "pymm": [[22, "pymm"]], "pyopmnearwell": [[22, "pyopmnearwell"]], "pyopmspe11": [[1, "pyopmspe11"], [9, null]], "pyopmspe11 Python API": [[1, null]], "pyopmspe11 package": [[11, null]], "pyopmspe11.core package": [[12, null]], "pyopmspe11.core.pyopmspe11 module": [[13, null]], "pyopmspe11.utils package": [[14, null]], "pyopmspe11.utils.inputvalues module": [[15, null]], "pyopmspe11.utils.mapproperties module": [[16, null]], "pyopmspe11.utils.runs module": [[17, null]], "pyopmspe11.utils.writefile module": [[18, null]], "pyopmspe11.visualization package": [[19, null]], "pyopmspe11.visualization.data module": [[20, null]], "pyopmspe11.visualization.plotting module": [[21, null]], "toml": [[3, "toml"]], "txt": [[3, "txt"]]}, "docnames": ["about", "api", "benchmark", "configuration_file", "contributing", "examples", "index", "installation", "introduction", "modules", "output_folder", "pyopmspe11", "pyopmspe11.core", "pyopmspe11.core.pyopmspe11", "pyopmspe11.utils", "pyopmspe11.utils.inputvalues", "pyopmspe11.utils.mapproperties", "pyopmspe11.utils.runs", "pyopmspe11.utils.writefile", "pyopmspe11.visualization", "pyopmspe11.visualization.data", "pyopmspe11.visualization.plotting", "related"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["about.rst", "api.rst", "benchmark.rst", "configuration_file.rst", "contributing.rst", "examples.rst", "index.rst", "installation.rst", "introduction.rst", "modules.rst", "output_folder.rst", "pyopmspe11.rst", "pyopmspe11.core.rst", "pyopmspe11.core.pyopmspe11.rst", "pyopmspe11.utils.rst", "pyopmspe11.utils.inputvalues.rst", "pyopmspe11.utils.mapproperties.rst", "pyopmspe11.utils.runs.rst", "pyopmspe11.utils.writefile.rst", "pyopmspe11.visualization.rst", "pyopmspe11.visualization.data.rst", "pyopmspe11.visualization.plotting.rst", "related.rst"], "indexentries": {"add_pv_fipnum_front_back() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.add_pv_fipnum_front_back", false]], "added_pv() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.added_pv", false]], "boxes() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.boxes", false]], "check_deck() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.check_deck", false]], "check_facie1() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.check_facie1", false]], "compute_m_c() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.compute_m_c", false]], "corner() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner", false]], "corner_point_handling_spe11a() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner_point_handling_spe11a", false]], "corner_point_handling_spe11bc() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.corner_point_handling_spe11bc", false]], "create_from_summary() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.create_from_summary", false]], "data() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.data", false]], "dense_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.dense_data", false]], "dense_data() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.dense_data", false]], "generate_arrays() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.generate_arrays", false]], "generate_arrays_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.generate_arrays_performance_spatial", false]], "generate_grid() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.generate_grid", false]], "get_cell_info() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.get_cell_info", false]], "get_corners() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.get_corners", false]], "get_header() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.get_header", false]], "get_lines() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.get_lines", false]], "getfacies() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.getfacies", false]], "grid() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.grid", false]], "handle_fipnums() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_fipnums", false]], "handle_inactive_mapping() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_inactive_mapping", false]], "handle_kind() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.handle_kind", false]], "handle_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_performance_spatial", false]], "handle_tuning() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.handle_tuning", false]], "handle_yaxis_mapping_extensive() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_yaxis_mapping_extensive", false]], "handle_yaxis_mapping_intensive() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.handle_yaxis_mapping_intensive", false]], "ini_quantity_plot() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.ini_quantity_plot", false]], "initial() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.initial", false]], "load_parser() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.load_parser", false]], "locate_wells_sensors() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.locate_wells_sensors", false]], "main() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.main", false]], "main() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.main", false]], "main() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.main", false]], "map_to_report_grid() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.map_to_report_grid", false]], "map_to_report_grid_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.map_to_report_grid_performance_spatial", false]], "map_z() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.map_z", false]], "max_xcw() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.max_xcw", false]], "module": [[11, "module-pyopmspe11", false], [12, "module-pyopmspe11.core", false], [13, "module-pyopmspe11.core.pyopmspe11", false], [14, "module-pyopmspe11.utils", false], [15, "module-pyopmspe11.utils.inputvalues", false], [16, "module-pyopmspe11.utils.mapproperties", false], [17, "module-pyopmspe11.utils.runs", false], [18, "module-pyopmspe11.utils.writefile", false], [19, "module-pyopmspe11.visualization", false], [20, "module-pyopmspe11.visualization.data", false], [21, "module-pyopmspe11.visualization.plotting", false]], "opm_files() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.opm_files", false]], "opm_files() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.opm_files", false]], "performance() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.performance", false]], "performance() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.performance", false]], "plot_results() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.plot_results", false]], "plotting() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.plotting", false]], "positions() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.positions", false]], "postprocesstoml() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.postprocesstoml", false]], "process_input() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.process_input", false]], "pyopmspe11": [[11, "module-pyopmspe11", false]], "pyopmspe11() (in module pyopmspe11.core.pyopmspe11)": [[13, "pyopmspe11.core.pyopmspe11.pyopmspe11", false]], "pyopmspe11.core": [[12, "module-pyopmspe11.core", false]], "pyopmspe11.core.pyopmspe11": [[13, "module-pyopmspe11.core.pyopmspe11", false]], "pyopmspe11.utils": [[14, "module-pyopmspe11.utils", false]], "pyopmspe11.utils.inputvalues": [[15, "module-pyopmspe11.utils.inputvalues", false]], "pyopmspe11.utils.mapproperties": [[16, "module-pyopmspe11.utils.mapproperties", false]], "pyopmspe11.utils.runs": [[17, "module-pyopmspe11.utils.runs", false]], "pyopmspe11.utils.writefile": [[18, "module-pyopmspe11.utils.writefile", false]], "pyopmspe11.visualization": [[19, "module-pyopmspe11.visualization", false]], "pyopmspe11.visualization.data": [[20, "module-pyopmspe11.visualization.data", false]], "pyopmspe11.visualization.plotting": [[21, "module-pyopmspe11.visualization.plotting", false]], "read_opm() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_opm", false]], "read_resdata() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_resdata", false]], "read_times() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.read_times", false]], "readthefirstpart() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.readthefirstpart", false]], "readthesecondpart() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.readthesecondpart", false]], "refinement_z() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.refinement_z", false]], "resdata_summary() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.resdata_summary", false]], "sensors() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.sensors", false]], "set_back_front_fipnums() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.set_back_front_fipnums", false]], "setcaseproperties() (in module pyopmspe11.utils.inputvalues)": [[15, "pyopmspe11.utils.inputvalues.setcaseproperties", false]], "simulations() (in module pyopmspe11.utils.runs)": [[17, "pyopmspe11.utils.runs.simulations", false]], "sparse_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.sparse_data", false]], "sparse_data() (in module pyopmspe11.visualization.plotting)": [[21, "pyopmspe11.visualization.plotting.sparse_data", false]], "static_map_to_report_grid_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.static_map_to_report_grid_performance_spatial", false]], "structured_handling_spe11a() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.structured_handling_spe11a", false]], "structured_handling_spe11bc() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.structured_handling_spe11bc", false]], "wells() (in module pyopmspe11.utils.mapproperties)": [[16, "pyopmspe11.utils.mapproperties.wells", false]], "write_dense_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_dense_data", false]], "write_dense_data_performance_spatial() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_dense_data_performance_spatial", false]], "write_keywords() (in module pyopmspe11.utils.writefile)": [[18, "pyopmspe11.utils.writefile.write_keywords", false]], "write_performance() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_performance", false]], "write_sparse_data() (in module pyopmspe11.visualization.data)": [[20, "pyopmspe11.visualization.data.write_sparse_data", false]]}, "objects": {"": [[11, 0, 0, "-", "pyopmspe11"]], "pyopmspe11": [[12, 0, 0, "-", "core"], [14, 0, 0, "-", "utils"], [19, 0, 0, "-", "visualization"]], "pyopmspe11.core": [[13, 0, 0, "-", "pyopmspe11"]], "pyopmspe11.core.pyopmspe11": [[13, 1, 1, "", "load_parser"], [13, 1, 1, "", "main"], [13, 1, 1, "", "pyopmspe11"]], "pyopmspe11.utils": [[15, 0, 0, "-", "inputvalues"], [16, 0, 0, "-", "mapproperties"], [17, 0, 0, "-", "runs"], [18, 0, 0, "-", "writefile"]], "pyopmspe11.utils.inputvalues": [[15, 1, 1, "", "check_deck"], [15, 1, 1, "", "handle_tuning"], [15, 1, 1, "", "postprocesstoml"], [15, 1, 1, "", "process_input"], [15, 1, 1, "", "readthefirstpart"], [15, 1, 1, "", "readthesecondpart"], [15, 1, 1, "", "setcaseproperties"]], "pyopmspe11.utils.mapproperties": [[16, 1, 1, "", "add_pv_fipnum_front_back"], [16, 1, 1, "", "boxes"], [16, 1, 1, "", "check_facie1"], [16, 1, 1, "", "corner"], [16, 1, 1, "", "corner_point_handling_spe11a"], [16, 1, 1, "", "corner_point_handling_spe11bc"], [16, 1, 1, "", "get_cell_info"], [16, 1, 1, "", "get_lines"], [16, 1, 1, "", "getfacies"], [16, 1, 1, "", "grid"], [16, 1, 1, "", "locate_wells_sensors"], [16, 1, 1, "", "map_z"], [16, 1, 1, "", "positions"], [16, 1, 1, "", "refinement_z"], [16, 1, 1, "", "sensors"], [16, 1, 1, "", "set_back_front_fipnums"], [16, 1, 1, "", "structured_handling_spe11a"], [16, 1, 1, "", "structured_handling_spe11bc"], [16, 1, 1, "", "wells"]], "pyopmspe11.utils.runs": [[17, 1, 1, "", "data"], [17, 1, 1, "", "plotting"], [17, 1, 1, "", "simulations"]], "pyopmspe11.utils.writefile": [[18, 1, 1, "", "added_pv"], [18, 1, 1, "", "initial"], [18, 1, 1, "", "opm_files"], [18, 1, 1, "", "write_keywords"]], "pyopmspe11.visualization": [[20, 0, 0, "-", "data"], [21, 0, 0, "-", "plotting"]], "pyopmspe11.visualization.data": [[20, 1, 1, "", "compute_m_c"], [20, 1, 1, "", "create_from_summary"], [20, 1, 1, "", "dense_data"], [20, 1, 1, "", "generate_arrays"], [20, 1, 1, "", "generate_arrays_performance_spatial"], [20, 1, 1, "", "get_corners"], [20, 1, 1, "", "get_header"], [20, 1, 1, "", "handle_fipnums"], [20, 1, 1, "", "handle_inactive_mapping"], [20, 1, 1, "", "handle_performance_spatial"], [20, 1, 1, "", "handle_yaxis_mapping_extensive"], [20, 1, 1, "", "handle_yaxis_mapping_intensive"], [20, 1, 1, "", "main"], [20, 1, 1, "", "map_to_report_grid"], [20, 1, 1, "", "map_to_report_grid_performance_spatial"], [20, 1, 1, "", "max_xcw"], [20, 1, 1, "", "opm_files"], [20, 1, 1, "", "performance"], [20, 1, 1, "", "read_opm"], [20, 1, 1, "", "read_resdata"], [20, 1, 1, "", "read_times"], [20, 1, 1, "", "resdata_summary"], [20, 1, 1, "", "sparse_data"], [20, 1, 1, "", "static_map_to_report_grid_performance_spatial"], [20, 1, 1, "", "write_dense_data"], [20, 1, 1, "", "write_dense_data_performance_spatial"], [20, 1, 1, "", "write_performance"], [20, 1, 1, "", "write_sparse_data"]], "pyopmspe11.visualization.plotting": [[21, 1, 1, "", "dense_data"], [21, 1, 1, "", "generate_grid"], [21, 1, 1, "", "handle_kind"], [21, 1, 1, "", "ini_quantity_plot"], [21, 1, 1, "", "main"], [21, 1, 1, "", "performance"], [21, 1, 1, "", "plot_results"], [21, 1, 1, "", "sparse_data"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:function"}, "terms": {"": [2, 3, 7, 8], "0": [2, 3, 5, 7, 8], "00": 3, "02": 2, "04": [3, 7], "06": 6, "08": 3, "0f": 2, "1": [2, 3, 5, 7, 8, 16], "10": [2, 3, 4, 5, 7], "100": [2, 3, 5], "1000": [2, 3, 5], "101": 3, "1013": 3, "10132": 3, "10m": 2, "10mish": 2, "11": 3, "12": [3, 7], "120": [2, 5], "1200": 3, "13": [6, 7, 16], "14": [3, 16], "15": [2, 3, 5, 16], "150": [2, 3, 5], "16": [2, 16], "16666666666666666": [2, 5], "168": [2, 5], "17": 16, "18": [3, 16], "193531": 3, "1cm": 2, "1cmish": 2, "1e": [2, 3], "1f": 2, "1m": 2, "1mm": 2, "2": [2, 3], "20": [2, 3, 5], "200": [2, 5], "202": 3, "2024": [3, 6, 7], "2026": 3, "21729920": 5, "22": 3, "24": 4, "25": [2, 3, 5], "250": [2, 5], "2500": [2, 3], "2560": 3, "26": 3, "27": 2, "2700": 3, "280": [2, 5], "29": 2, "2e": [2, 3], "3": [2, 3, 7], "30": [2, 3, 5], "300": [2, 3, 5], "304": 2, "3060": 3, "32": 3, "324": 3, "331841": 0, "35": [2, 3, 5], "350": [2, 5], "36": 3, "3870": 3, "39": 3, "3e7": 3, "4": [2, 3], "40": [2, 3, 5], "400": [2, 3, 5], "4000": 3, "420": 3, "45": [2, 5], "450": [2, 5], "5": [2, 3, 5, 8], "50": [2, 3, 5], "500": [2, 3, 5], "5000": 3, "506": 3, "50m": 2, "51": 2, "5100": 3, "5e": [2, 3], "5e4": 3, "6": [2, 3], "600": [2, 5], "6120": 3, "622059": 0, "625": 3, "63": 3, "650": 3, "7": [3, 5], "70": 3, "700": [2, 3, 5], "75": [2, 5], "7e": 2, "8": [2, 3, 7, 8], "800": [2, 5], "840": [2, 5], "8400": 3, "8654": 3, "8m": 2, "8mish": 2, "8mish_convect": 2, "9": [3, 7], "90": 3, "900": [2, 5], "92": 3, "95000": 2, "97": 2, "98": 2, "99": 3, "999": 3, "A": [2, 3, 16, 22], "As": 2, "By": 3, "For": [0, 2, 3, 5, 7, 16], "If": [3, 7, 8, 10, 15], "In": [2, 3, 4, 5, 7, 8, 10], "ON": 7, "The": [1, 3, 4, 5, 7, 8, 10], "Then": [3, 5, 7, 10], "There": 5, "To": [2, 3, 7], "_2": 2, "_build": 4, "about": [4, 6], "accept": 4, "accord": 21, "account": 20, "accumul": 2, "accuraci": 2, "achiev": 7, "achiv": 5, "action": 4, "activ": [5, 7], "actual": 2, "ad": [3, 6, 18], "add": [3, 4, 7, 10, 16], "add_pv_fipnum_front_back": [11, 14, 16], "added_pv": [11, 14, 18], "addit": [2, 3, 4, 7, 8, 10], "adopt": 3, "after": [2, 3, 4, 6, 7, 10, 15], "al": 2, "all": [2, 4, 5, 7, 8], "allow": 3, "along": 16, "also": [2, 3, 4, 7, 8, 16], "altern": [4, 7], "an": [0, 3, 4, 7, 10, 22], "anaconda": 7, "analys": 4, "ani": 4, "answer": 4, "api": 6, "approach": [0, 4], "apt": [4, 7], "ar": [0, 2, 3, 4, 5, 7, 10, 22], "arch": 3, "area": 3, "arg": [15, 16, 17, 18, 20, 21], "argument": [8, 10, 13], "arrai": [3, 20], "assess": 8, "assign": [3, 16], "avail": [2, 3, 7], "axi": 16, "b": [3, 16], "back": [2, 3, 16], "backelev": 3, "base": [8, 22], "baselin": 3, "basetemp": 4, "bc": [3, 16], "been": 5, "befor": [4, 6], "being": 0, "below": [3, 5, 22], "benchmark": [3, 5, 6, 8, 17, 20, 21], "better": [2, 5], "between": [2, 3, 5, 8, 21], "big": 2, "bin": [3, 7], "binari": [4, 7], "black": 4, "bool": 17, "both": [4, 5, 7], "bottom": 3, "boundari": [2, 3, 16, 18], "box": [2, 3, 11, 14, 15, 16, 20], "branch": [3, 7], "brew": 7, "buffer": [3, 16], "bug": 5, "build": [3, 4, 6], "build_opm_mpi": 7, "built": 7, "c": [2, 3, 5, 8, 16, 20], "ca": 2, "calcit": 22, "call": 10, "can": [2, 3, 4, 5, 7, 10], "capac": 3, "capillari": [2, 3], "capmax": 2, "cart": [2, 5], "cartesian": [3, 5, 8, 16], "case": [2, 3, 8, 21], "cbsfax": 2, "cd": 7, "cell": [2, 3, 5, 8, 16, 18, 20], "center": [0, 16, 20], "cet_diverging_protanopic_deuteranopic_bwy_60_95_c32": 2, "cfd": 22, "cformat": 2, "challeng": 0, "chang": [3, 4, 5], "changu": 3, "check": 22, "check_deck": [11, 14, 15], "check_facie1": [11, 14, 16], "checker": 4, "checkout": 7, "choic": 2, "chop": 5, "ci": [4, 7], "clabel": 2, "clone": 7, "cluster": 2, "cm": [2, 4, 5, 7], "cmake": 7, "cmish": 5, "cnum": 2, "cnv": 3, "co": 2, "co2": [2, 3, 5, 20, 22], "co2stor": 3, "coarsen": 22, "coarser": 5, "code": [4, 7, 11], "collabor": 4, "com": [2, 7, 8], "comma": 8, "command": 7, "commit": 4, "common": [7, 8], "compar": [2, 5, 8], "comparison": [2, 5, 8], "compat": 3, "complet": 3, "compon": 3, "comput": [2, 20], "compute_m_c": [11, 19, 20], "concentr": 20, "concept": 6, "conduct": 3, "config": 3, "configur": [1, 2, 5, 6, 8, 10, 15], "configuration_fil": 8, "conserv": 5, "consid": 3, "contain": [1, 5], "content": [1, 4, 6, 9], "continu": 3, "contribut": [0, 6, 7], "convect": [2, 3], "converg": 3, "convert": 15, "coordin": [1, 3, 16, 18], "copi": [4, 7], "core": [1, 7, 9, 11], "corner": [1, 2, 3, 5, 8, 11, 14, 16, 20], "corner_point_handling_spe11a": [11, 14, 16], "corner_point_handling_spe11bc": [11, 14, 16], "correctli": 5, "correspond": [2, 15], "could": [7, 10], "cours": 2, "cov": [4, 10], "cp": [2, 5], "cprw": 3, "cpu": 3, "creat": [1, 4, 7, 8, 16, 20, 21], "create_from_summari": [11, 19, 20], "csp": [2, 5], "cssr": [0, 2], "csv": [20, 21], "current": [3, 7, 8], "current_directori": 7, "curv": 3, "d": 2, "d_t": 20, "dai": 2, "data": [3, 5, 6, 8, 11, 14, 16, 17, 19, 21], "data_plot": 8, "datum": 3, "dcmake_build_typ": 7, "dcmake_disable_find_package_mpi": 7, "dcmake_prefix_path": 7, "deactiv": 7, "deadlin": 2, "debug": 5, "deck": [3, 5, 8, 17, 18], "deck_flow": 8, "deck_flow_data": [5, 8], "default": 8, "defin": [3, 5, 8], "delet": 4, "dens": [5, 8, 20, 21], "dense_data": [11, 19, 20, 21], "dense_perform": 8, "dense_performance_spars": 8, "dense_spars": 8, "densiti": 3, "depend": [4, 7], "depth": 3, "describ": [3, 4, 8], "descript": 2, "destin": 17, "detail": [0, 2, 3], "dev": [4, 7, 10], "develop": [3, 7], "dic": [15, 16, 17, 18, 21], "dict": [15, 16, 17, 18, 20, 21], "dictionari": [15, 16, 17, 18, 20, 21], "differ": [1, 3, 5, 10, 16], "diffus": 3, "dig": 20, "dil": 20, "dim": 3, "dir": 16, "direct": [3, 20], "directli": 10, "disp": 3, "disp1": 3, "disp2": 3, "disp3": 3, "disp4": 3, "disp5": 3, "disp6": 3, "disp7": 3, "dispers": 3, "dissolut": 3, "dissolv": 2, "divid": 3, "dmar": 3, "do": 7, "doc": 4, "document": [3, 4, 7, 8, 10], "doe": 2, "domain": 5, "done": 7, "dopm_enable_python": 7, "dpi": 2, "dpython_execut": 7, "dry": 17, "dryrun": 17, "due": 7, "dune": 7, "dunecontrol": 7, "dure": 5, "duse_mpi": 7, "dvipng": [4, 7], "dwith_ndebug": 7, "dx": 2, "dy": 2, "dynam": [20, 22], "e": [2, 3, 5, 7, 8, 10, 18, 21], "each": 3, "easier": 7, "echo": 7, "edg": 7, "effect": 3, "element": [3, 8], "elev": 3, "els": 4, "email": 4, "enabl": [3, 15], "end": 15, "entri": [3, 15], "environ": 7, "equal": 7, "equidist": 5, "equival": 5, "erf": 3, "error": 7, "et": 2, "etc": 3, "evalu": [3, 5], "event": 15, "exampl": [3, 6, 10], "except": 4, "execut": [1, 2, 3, 4, 5, 7, 8, 10, 13, 15], "exp": 3, "export": 7, "exprecc": 6, "extend": [4, 20], "extens": 20, "extra": [3, 4, 7], "face": [3, 7], "faci": [1, 2, 3, 16], "factor": 15, "familiar": 4, "fast": 5, "faster": [2, 3, 7], "featur": [0, 3, 15], "field": 20, "figur": [3, 5, 7, 8, 10, 17, 21], "file": [1, 2, 4, 5, 6, 7, 8, 10, 15, 16, 17, 18, 20, 21], "final": [3, 4, 5], "find": [16, 18], "fine": 2, "finer": 5, "finish": 2, "fipnum": [3, 16, 20], "first": 3, "fix": [3, 4, 5], "flag": [3, 4, 5, 7, 8], "flexibl": [8, 22], "flip": 3, "float": [16, 20], "flow": [2, 3, 4, 6, 8, 10, 15, 17, 18, 22], "flow_data": 8, "flow_data_plot": 8, "fluid": [3, 8], "folder": [1, 2, 3, 4, 5, 6, 7, 8, 17], "follow": [2, 3, 4, 5, 7, 8, 10], "font": [4, 7], "fork": [0, 4], "format": [3, 4, 5, 7, 8, 10, 20], "found": [3, 7], "fraction": [2, 20], "framework": [3, 5, 8, 22], "free": 3, "from": [3, 4, 5, 7, 15, 16, 20, 21, 22], "front": [2, 3, 16], "full": 3, "function": [2, 3, 8, 13, 15, 16, 17, 18], "fund": 0, "g": [2, 3, 5, 7, 8, 10, 18, 21], "ga": 3, "gasoil": 3, "gaswat": 3, "gener": [1, 2, 3, 4, 5, 8, 10, 15, 17, 18, 20, 21, 22], "generate_arrai": [11, 19, 20], "generate_arrays_performance_spati": [11, 19, 20], "generate_grid": [11, 19, 21], "geo": 3, "geolog": [1, 2, 16, 22], "geometri": 7, "get": [3, 4, 7, 16, 20], "get_cell_info": [11, 14, 16], "get_corn": [11, 19, 20], "get_head": [11, 19, 20], "get_lin": [11, 14, 16], "getfaci": [11, 14, 16], "gif": [2, 22], "gigatonn": 0, "git": [2, 7, 18], "github": [2, 4, 7, 8, 18], "gitlab": 7, "global": [15, 16, 17, 18, 20, 21], "gmsh": [1, 16], "gradient": 3, "grid": [1, 2, 3, 5, 7, 8, 11, 14, 16, 20, 21], "ground": 6, "group": 20, "h": [3, 8], "ha": 5, "handl": [2, 16], "handle_fipnum": [11, 19, 20], "handle_inactive_map": [11, 19, 20], "handle_kind": [11, 19, 21], "handle_performance_spati": [11, 19, 20], "handle_tun": [11, 14, 15], "handle_yaxis_mapping_extens": [11, 19, 20], "handle_yaxis_mapping_intens": [11, 19, 20], "have": [3, 5], "header": 20, "heat": 3, "hello": [6, 10], "hello_world": [3, 5], "help": 4, "here": [0, 2, 3, 5, 10], "high": 2, "higher": 7, "highlight": 2, "horizont": 3, "host": 8, "hour": 3, "hpc": [0, 2], "html": 4, "http": [2, 7, 8], "i": [0, 1, 2, 3, 4, 5, 7, 8, 15, 16, 20], "id": 16, "identifi": [3, 21], "idx": 16, "ignor": 4, "ijk": [16, 20], "imag": 22, "immisc": 3, "impact": 2, "implement": [2, 3, 8], "import": 4, "improv": [2, 3], "in_fil": 15, "inact": 20, "includ": [2, 3, 7], "increas": 2, "ind": 16, "index": [6, 16, 20], "indic": [16, 20], "induc": 22, "inf": 20, "info": 3, "infotim": 20, "ini_quantity_plot": [11, 19, 21], "initi": [3, 5, 11, 14, 17, 18, 21], "inj": 3, "inj0": 3, "inj1": 3, "injeciton": 5, "inject": [3, 5, 8, 20], "input": [1, 3, 8, 15, 17], "inputvalu": [11, 14], "insid": 7, "inspect": 8, "instal": [2, 3, 4, 6, 10], "instead": [2, 3], "instruct": 4, "int": [16, 20], "integ": [16, 20], "interest": [7, 22], "intern": 3, "interp_fgip": 20, "interpol": 20, "interv": 8, "introduct": 6, "issu": [0, 2, 3, 5, 6], "istl": 7, "iter": [3, 21], "j": 16, "j5": 7, "just": 5, "k": [3, 16], "keep": 3, "kept": 3, "keyword": [3, 18], "kg": 3, "kind": 21, "kj": 3, "km": 2, "krn": 3, "krw": 3, "kzmult": 3, "l": [7, 8], "label": 16, "last": 3, "later": 3, "latest": 3, "latex": [4, 7, 8], "leakag": 22, "least": 3, "left": [2, 5], "length": [3, 15], "let": 5, "level": 3, "librari": 7, "line": [3, 4, 5, 7, 15, 16], "linear": 3, "linebreak": 3, "lines_coordin": 3, "link": [0, 3, 18], "linspac": 3, "lint": 7, "linux": 6, "liquid": [2, 3, 20], "list": [15, 16, 20, 21], "load": 21, "load_pars": [11, 12, 13], "local": [4, 20], "locat": [1, 2, 3, 8, 15, 16, 20], "locate_wells_sensor": [11, 14, 16], "lol": 15, "look": [4, 5], "low": 5, "m": [2, 3, 5, 7, 8], "maco": [4, 6], "macport": 7, "mactex": 7, "main": [1, 4, 11, 12, 13, 19, 20, 21], "maintain": 4, "make": [4, 7, 21], "makefil": 4, "mako": 18, "mamba": 7, "manag": 7, "mani": [2, 3], "mantain": 4, "map": [5, 6, 8, 20, 21], "map_to_report_grid": [11, 19, 20], "map_to_report_grid_performance_spati": [11, 19, 20], "map_z": [11, 14, 16], "mapproperti": [11, 14], "mask": 2, "maskthr": 2, "mass": [2, 3, 5, 20], "massfracta": 2, "massfractb": 2, "massfractc": 2, "master": [3, 7], "math": 3, "max": 3, "max_xcw": [11, 19, 20], "maximum": [2, 3, 5, 15, 20], "md": 3, "mean": 2, "mention": 2, "merg": 4, "meti": 2, "micp": 6, "microbi": 22, "microsystem": 22, "might": [4, 7, 22], "million": 2, "miniforg": 7, "miss": [4, 10], "mix": 2, "mkdir": 7, "mm": [2, 5], "mode": 3, "model": [1, 2, 3, 15, 16, 22], "modifi": [7, 10, 15, 16, 18, 20, 21], "modul": [1, 6, 7, 9, 22], "molar": 2, "more": [0, 2, 4], "mpi": [3, 7], "mpirun": 3, "multipli": 3, "mykkeltvedt": 2, "mypi": 4, "n": 3, "name": [3, 8, 15, 17, 20], "name_t": 20, "ncx": 16, "ncz": 16, "necessari": 18, "need": [4, 7, 15], "nevertheless": 2, "new": [0, 3, 4, 16], "newer": 3, "newton": 21, "next": 15, "nice": 4, "nojekyl": 4, "non": 3, "none": [17, 18, 20, 21], "norc": 2, "normal": 20, "now": 5, "np": 3, "npoint": 3, "npoints1": 3, "npoints2": 3, "npoints3": 3, "npoints4": 3, "npoints5": 3, "npoints6": 3, "npoints7": 3, "numa": 16, "numb": 16, "number": [0, 3, 5, 8, 16, 20, 21], "o": [2, 5, 8], "object": 20, "obtain": 1, "off": 2, "oil": 3, "older": 3, "one": [3, 8, 10], "ones": 5, "onli": [7, 8], "open": 22, "opm": [2, 3, 4, 6, 8, 10, 17, 18, 20, 22], "opm_fil": [11, 14, 18, 19, 20], "optim": 2, "option": [8, 10, 13], "order": 20, "org": 7, "other": 2, "otherwis": [3, 8, 16], "our": 4, "out": 22, "output": [3, 5, 6, 7, 8, 17, 18, 20], "over": [2, 5, 21], "overlap": 16, "overview": [3, 6], "own": 4, "pa": [2, 3], "packag": [0, 1, 4, 6, 8, 9], "page": [4, 6], "parabola": [3, 16], "parallel": 3, "paramet": [6, 15], "paraview": 2, "part": 3, "past": 4, "path": [3, 8], "pcap": 3, "pen": 3, "pen1": 3, "pen2": 3, "pen3": 3, "pen4": 3, "pen5": 3, "pen6": 3, "pen7": 3, "penmax": 3, "penmax1": 3, "penmax2": 3, "penmax3": 3, "penmax4": 3, "penmax5": 3, "penmax6": 3, "penmax7": 3, "per": [3, 16], "perform": [5, 6, 8, 11, 15, 19, 20, 21], "performance_spars": [5, 8], "period": 5, "perm": 3, "perm1": 3, "perm2": 3, "perm3": 3, "perm4": 3, "perm5": 3, "perm6": 3, "perm7": 3, "permeabl": 3, "phase": [2, 3, 20], "phi": 3, "pi": 3, "pip": [2, 4, 7], "pleas": [0, 4], "plopm": [2, 6], "plot": [8, 10, 11, 14, 17, 19], "plot_result": [11, 19, 21], "png": [8, 10, 22], "point": [1, 2, 3, 5, 8, 16], "pore": [3, 16, 18], "poro1": 3, "poro2": 3, "poro3": 3, "poro4": 3, "poro5": 3, "poro6": 3, "poro7": 3, "posit": [3, 11, 14, 16], "possibl": 4, "postprocess": [1, 2, 20], "postprocesstoml": [11, 14, 15], "pr": [4, 5], "pre": 2, "precipit": 22, "prefer": 4, "prerequisit": 7, "present": 5, "pressur": [2, 3, 21], "previou": [2, 3, 4, 5, 7], "problem": 6, "process": [1, 15, 17], "process_input": [11, 14, 15], "produc": 3, "progress": 2, "project": [0, 7, 8], "properti": [3, 8, 16], "prototyp": 3, "pull": [0, 4], "push": 4, "pushd": 4, "pvad": 3, "pwd": 7, "pycopm": 6, "pylint": 4, "pymm": 6, "pyopmnearwel": 6, "pyopmspe11": [2, 3, 4, 5, 7, 8, 10], "pytest": [4, 10], "python": [3, 4, 6, 8, 22], "python3": 7, "pythonpath": 7, "quantiti": [2, 20], "quick": [8, 22], "r": [2, 3, 4, 5, 7, 8], "r1": 2, "r1_cart_10m": 2, "r1_cart_1cm": 2, "r1_cart_50m": 2, "r2": 2, "r2_cart_1cm_capmax2500pa": 2, "r2_cp_10mish": 2, "r2_cp_50m": 2, "r3": 2, "r3_cp_10mish_convect": 2, "r3_cp_1cmish_capmax2500pa": 2, "r3_cp_50m": 2, "r4": 2, "r4_cart_1m": 2, "r4_cart_1mm_capmax2500pa": 2, "r4_cp_8m": 2, "r5": 2, "r5_cart_1mm_capmax2500pa_strictol": 2, "radiu": 3, "rais": [0, 4], "ran": 5, "rate": 3, "read": [3, 7, 15, 16, 20], "read_opm": [11, 19, 20], "read_resdata": [11, 19, 20], "read_tim": [11, 19, 20], "readthefirstpart": [11, 14, 15], "readthesecondpart": [11, 14, 15], "recommend": [4, 7], "reduc": [2, 5], "refer": 16, "reference_mesh": 1, "refin": [3, 16], "refinement_z": [11, 14, 16], "regard": [3, 7], "region": [3, 22], "rel": 3, "relat": [6, 10, 18, 21], "releas": [3, 7, 15], "relev": 2, "remark": 2, "remedi": 22, "repo": [4, 7], "report": [2, 3, 5, 6, 8, 10, 16, 20], "repositori": [4, 7, 18], "request": [0, 4, 8], "requier": 3, "requir": [2, 3, 4, 7, 10], "requiri": 15, "resdata": [7, 8, 20], "resdata_summari": [11, 19, 20], "reservoir": [6, 22], "resinsight": [3, 10], "resolut": [2, 5], "resourc": 0, "restart": [15, 20], "restrict": 5, "result": [1, 2, 3, 5, 8, 10, 21], "return": [15, 16, 17, 18, 20, 21], "review": [2, 4], "rig": 3, "right": [2, 5, 20], "rise": 4, "rock": [3, 8], "rockcond": 3, "rockextra": 3, "rst": 3, "rule": 6, "run": [2, 3, 4, 5, 7, 8, 10, 11, 14, 18], "s_w": 3, "safu": 3, "same": [3, 5, 8], "sand": 16, "sat": 3, "satnum": [2, 16], "satur": [3, 15, 21], "save": [2, 4, 5, 10], "scale": [2, 15], "schedul": [3, 8], "screenshot": 10, "script": [1, 3, 4, 7, 13, 20, 21], "search": 6, "second": 5, "section": [3, 5], "see": [2, 3, 4, 5, 7, 10], "seek": 6, "seem": 7, "select": [8, 10], "send": 4, "sensit": 8, "sensor": [3, 11, 14, 15, 16, 20, 21], "separ": 8, "set": [3, 5, 8, 15, 20], "set_back_front_fipnum": [11, 14, 16], "setcaseproperti": [11, 14, 15], "setuptool": 7, "sh": 7, "shorter": 5, "should": 7, "show": [2, 3, 5, 8, 10], "significantli": 2, "simplifi": [8, 22], "simul": [0, 2, 3, 5, 7, 8, 10, 11, 14, 16, 17, 20, 22], "sinc": 3, "singl": 4, "site": 22, "six": 4, "size": [2, 3, 5, 20, 21], "skip": 7, "sni": 3, "sni1": 3, "sni2": 3, "sni3": 3, "sni4": 3, "sni5": 3, "sni6": 3, "sni7": 3, "so": 7, "softwar": [0, 6], "soil": 6, "solut": 8, "solver": [3, 10, 15], "some": [5, 10, 18, 20, 21, 22], "soon": 4, "sort": 20, "sourc": [3, 6, 8, 16, 22], "spars": [5, 6, 8, 20, 21], "sparse_data": [11, 19, 20, 21], "spatial": [6, 8, 20, 21], "spe": [3, 8, 21], "spe11": [0, 3, 16], "spe11a": [3, 6, 8, 16], "spe11a1mm": 5, "spe11a_cp_1cmish": 5, "spe11b": [3, 6, 8, 16], "spe11b10m": 5, "spe11b1m": 5, "spe11b_tco2_2dmap": 5, "spe11c": [3, 6, 8, 16], "spe11c_168_100_120": 5, "spe11c_cp": 5, "specif": [3, 7], "specifi": 3, "squash": 4, "src": 4, "stabl": 3, "static": 4, "static_map_to_report_grid_performance_spati": [11, 19, 20], "step": [3, 4, 5, 7, 8, 15, 20], "still": 7, "storag": [0, 22], "str": [15, 17, 18, 20], "stricer": 2, "stricter": 2, "string": [20, 21], "structured_handling_spe11a": [11, 14, 16], "structured_handling_spe11bc": [11, 14, 16], "studi": [2, 22], "subfig": 2, "subgrid": 2, "submiss": 2, "submodul": [1, 9, 11], "subpackag": [1, 6, 9], "subsurfac": 0, "subsystem": 7, "succe": 4, "sudo": [4, 7], "summari": 20, "super": [4, 7], "support": [2, 3, 6, 7, 8], "suptitl": 2, "surfac": 16, "sustain": 0, "swi": 3, "swi1": 3, "swi2": 3, "swi3": 3, "swi4": 3, "swi5": 3, "swi6": 3, "swi7": 3, "t": [2, 3, 5, 8], "t_n": 20, "tag": 7, "tcpu": 20, "temperatur": 3, "templat": [1, 18], "tensor": [3, 5, 8, 16], "term": [4, 10], "termin": [2, 7, 15], "test": [3, 4, 5, 7, 10], "test_output": 4, "texliv": [4, 7], "text": [4, 15, 20], "than": [0, 2, 3, 4, 7], "thconr": 3, "thconr1": 3, "thconr2": 3, "thconr3": 3, "thconr4": 3, "thconr5": 3, "thconr6": 3, "thconr7": 3, "them": [4, 22], "thermal": 3, "thi": [0, 2, 3, 4, 5, 7, 8], "three": 8, "tighten": 3, "time": [2, 3, 5, 8, 15, 20, 21], "toler": [2, 3], "toml": [5, 6], "tool": [2, 22], "top": 3, "total": 20, "tracer": 10, "trade": 2, "true": 3, "try": [4, 7], "tug": 7, "tun": 5, "tune": [3, 15], "turn": 7, "tutori": 4, "two": 5, "txt": [2, 4, 5, 6, 7, 8, 10], "type": [2, 3, 5, 7, 8, 16, 21, 22], "u": [2, 5, 8], "ubuntu": [4, 7], "under": 2, "unfortun": 2, "uniform": [2, 3], "unit": 15, "unsupport": 15, "until": 15, "updat": [3, 7], "upgrad": 7, "us": [0, 1, 2, 3, 4, 5, 7, 8, 10, 15, 18, 20, 21, 22], "user": [3, 4, 7], "util": [1, 9, 11], "utilii": [15, 16, 17, 18], "v": 2, "v2": 7, "v2024": 7, "valu": [2, 3, 15, 18], "variabl": [3, 15, 18], "variat": 20, "venv": 7, "veri": [2, 5], "version": [3, 7, 11], "via": [3, 7, 8], "virtual": 7, "visit": 4, "visual": [1, 2, 3, 5, 9, 10, 11], "volum": [3, 16, 18], "vpyopmspe11": 7, "vtk": 22, "w": [2, 3, 5, 8], "wa": 3, "warn": 8, "water": 3, "we": [2, 3, 4, 5, 7, 15], "welcom": [0, 4, 5], "well": [2, 4, 5, 6, 7, 8, 11, 14, 16, 22], "well1": 3, "well2": 3, "wellcoord": 3, "wellcoordf": 3, "wet": 3, "wheel": 7, "when": 7, "where": [2, 3, 8], "which": [2, 5, 7], "while": [2, 3, 5, 7], "whole": 8, "wide": 3, "width": 3, "widthbuff": 3, "window": 6, "within": 20, "work": [2, 4, 7], "workshop": 6, "world": [6, 10], "write": [1, 3, 7, 8, 15, 17, 18, 20], "write_dense_data": [11, 19, 20], "write_dense_data_performance_spati": [11, 19, 20], "write_keyword": [11, 14, 18], "write_perform": [11, 19, 20], "write_sparse_data": [11, 19, 20], "writefil": [11, 14], "written": 3, "www": 7, "x": [3, 5, 8, 16], "x_c": 16, "x_n": 3, "xci": 16, "xco2l": 2, "xcr": 16, "xformat": 2, "xlnum": 2, "xunit": 2, "y": [2, 3, 8, 16, 20], "y_n": 3, "year": [2, 3], "yet": 7, "yformat": 2, "yml": [4, 7], "you": [2, 3, 4, 5, 7, 10], "your": [3, 4, 5], "yunit": 2, "z": [3, 8, 16], "z_c": 16, "z_n": 3, "zci": 16, "zcr": 16, "znr": 16, "zone": 2}, "titles": ["About pyopmspe11", "pyopmspe11 Python API", "Benchmark", "Configuration file", "Contributing", "Examples", "Welcome to pyopmspe11\u2019s documentation!", "Installation", "Introduction", "pyopmspe11", "Output folder", "pyopmspe11 package", "pyopmspe11.core package", "pyopmspe11.core.pyopmspe11 module", "pyopmspe11.utils package", "pyopmspe11.utils.inputvalues module", "pyopmspe11.utils.mapproperties module", "pyopmspe11.utils.runs module", "pyopmspe11.utils.writefile module", "pyopmspe11.visualization package", "pyopmspe11.visualization.data module", "pyopmspe11.visualization.plotting module", "Related"], "titleterms": {"": 6, "06": 5, "13": 5, "2024": 5, "about": 0, "ad": 22, "after": 5, "api": 1, "befor": 5, "benchmark": 2, "build": 7, "concept": 8, "configur": 3, "content": [11, 12, 14, 19], "contribut": 4, "core": [12, 13], "data": [2, 20], "document": 6, "exampl": 5, "exprecc": 22, "file": 3, "flow": 7, "folder": 10, "ground": 4, "hello": 5, "indic": 6, "inputvalu": 15, "instal": 7, "introduct": 8, "issu": 4, "linux": 7, "maco": 7, "map": 2, "mapproperti": 16, "micp": 22, "modul": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "opm": 7, "output": 10, "overview": 8, "packag": [7, 11, 12, 14, 19], "paramet": 3, "perform": 2, "plopm": 22, "plot": 21, "problem": 4, "pycopm": 22, "pymm": 22, "pyopmnearwel": 22, "pyopmspe11": [0, 1, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "python": [1, 7], "relat": [3, 22], "report": 4, "reservoir": 3, "rule": 4, "run": 17, "seek": 4, "softwar": 4, "soil": 3, "sourc": 7, "spars": 2, "spatial": 2, "spe11a": [2, 5], "spe11b": [2, 5], "spe11c": [2, 5], "submodul": [12, 14, 19], "subpackag": 11, "support": 4, "tabl": 6, "toml": 3, "txt": 3, "util": [14, 15, 16, 17, 18], "visual": [19, 20, 21], "welcom": 6, "well": 3, "window": 7, "workshop": 5, "world": 5, "writefil": 18}}) \ No newline at end of file diff --git a/docs/text/configuration_file.rst b/docs/text/configuration_file.rst index 1e9871e..bf6cac0 100644 --- a/docs/text/configuration_file.rst +++ b/docs/text/configuration_file.rst @@ -1,6 +1,17 @@ -================== +****************** Configuration file -================== +****************** + +In the initial development of **pyopmspe11**, the adopted configuration file format was the +one described below, i.e., via :ref:`txt` files. The current development of **pyopmspe11** considers +:ref:`toml` files. To keep compatibility with previous configuration files, then support for :ref:`txt` files +will be kept, while new features will by added using :ref:`toml` configuration files. + +.. _txt: + +=== +txt +=== The first input parameter in the configuration file is: @@ -8,7 +19,7 @@ The first input parameter in the configuration file is: :linenos: """Set the full path to the flow executable and flags""" - flow --linear-solver=cprw --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --newton-min-iterations=1 + flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations If **flow** is not in your path, then write the full path to the executable (e.g., /Users/dmar/opm/build/opm-simulators/bin/flow). We also add in the same @@ -23,9 +34,9 @@ line as many flags as required (see the OPM Flow documentation `here `_ as: + +.. code-block:: python + :linenos: + + # Set the full path to the flow executable and flags + flow = "flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations" + + # Set the model parameters + spe11 = "spe11c" # Name of the spe case (spe11a, spe11b, or spe11c) + version = "release" # OPM Flow version (release or master) + model = "complete" # Name of the co2 model (immiscible, convective, or complete) + co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) + grid = "corner-point" # Type of grid (cartesian, tensor, or corner-point) + dims = [8400.0, 5000.0, 1200.0] # Length, width, and depth [m] + x_n = [420] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment + y_n = [30, 40, 50, 40, 30] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) + z_n = [5, 3, 1, 2, 3, 2, 4, 4, 10, 4, 6, 6, 4, 8, 4, 15, 30, 9] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) + temperature = [70.0, 36.12] # Temperature bottom and top rig [C] + datum = 300 # Datum [m] + pressure = 3e7 # Pressure at the datum [Pa] + kzMult = 0.1 # Multiplier for the permeability in the z direction [-] + diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] + rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) + pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) + widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) + elevation = 150 # Maximum elevation difference (relative to the baseline gradient) of the arch in the y direction [m] (for spe11c) + backElevation = 10 # Back boundary elevation w.r.t the front boundary [m] (for spe11c) + dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 + rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 + radius = [0.15, 0.15] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 + wellCoord = [[2700.0, 1000.0, 300.0], [5100.0, 1000.0, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + wellCoordF = [[2700.0, 4000.0, 300.0], [5100.0, 4000.0, 700.0]] # Well final positions: x, y, and z coordinates [m], well 1 to 2 (for spe11c) + + # Set the saturation functions + krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] + krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] + pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] + s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + + # Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 + safu = [[0.32, 0.1, 193531.39, 3e7, 1000], + [0.14, 0.1, 8654.99, 3e7, 1000], + [0.12, 0.1, 6120.00, 3e7, 1000], + [0.12, 0.1, 3870.63, 3e7, 1000], + [0.12, 0.1, 3060.00, 3e7, 1000], + [0.10, 0.1, 2560.18, 3e7, 1000], + [0, 0, 0, 3e7, 2]] + + # Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 + rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + + # Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) + inj = [[999.9, 999.9, 100, 1, 0, 10, 1, 0, 10], + [ 0.1, 0.1, 0.1, 1, 0, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 50, 10], + [ 50, 25, 25, 1, 0, 10, 1, 0, 10], + [ 400, 50, 50, 1, 0, 10, 1, 0, 10], + [ 500, 100, 100, 1, 0, 10, 1, 0, 10]] + + +For additional examples of configuration files using toml, see the +`hello_world `_ and `configs `_ folders. + +.. note:: + A Python version of at least 3.11 is requiered to use the toml format. For older Python versions, then use the :ref:`txt` configuration files. \ No newline at end of file diff --git a/docs/text/contributing.rst b/docs/text/contributing.rst index 7f5734a..4df9c15 100644 --- a/docs/text/contributing.rst +++ b/docs/text/contributing.rst @@ -25,7 +25,7 @@ Contribute to the software #. **black src/ tests/** (this formats the code) #. **pylint src/ tests/** (this 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) - #. **pytest --cov=pyopmspe11 --cov-report term-missing tests/** (this runs locally the tests, and might rise issues that need to be fixed before the pull request) + #. **pytest --cov=pyopmspe11 --cov-report term-missing tests/** (this runs locally the tests, and might rise issues that need to be fixed before the pull request; to save the files, add the flag **--basetemp=test_outputs**) #. **pushd docs & make html** (this generates the documentation, and might rise issues that need to be fixed before the pull request; if the build succeeds and if the contribution changes the documentation, then delete all content from the `docs `_ folder except `Makefile `_, `text `_, and `.nojekyll `_, after copy all contents from the docs/_build/html/ folder, and finally paste them in the `docs `_ folder) .. tip:: diff --git a/docs/text/examples.rst b/docs/text/examples.rst index eb3b263..92f8262 100644 --- a/docs/text/examples.rst +++ b/docs/text/examples.rst @@ -19,6 +19,12 @@ compare your example results to this figure to evaluate if your example ran corr .. figure:: figs/spe11b_tco2_2Dmaps.png +Using the :ref:`toml` format, the previous run is equivalent to: + +.. code-block:: bash + + pyopmspe11 -i spe11b.toml -o spe11b -m all -g all -t 5 -r 50,1,15 -w 1 + Let us now change the grid type from corner-point to tensor in line 7 of the configuration file. Then, we run the simulations and we save the results in a different output folder: diff --git a/docs/text/introduction.rst b/docs/text/introduction.rst index 243272c..79272f9 100644 --- a/docs/text/introduction.rst +++ b/docs/text/introduction.rst @@ -29,7 +29,7 @@ The current implementation supports the following executable with the argument o .. code-block:: bash - pyopmspe11 -i configuration_file.txt + pyopmspe11 -i configuration_file where diff --git a/examples/hello_world/spe11a.toml b/examples/hello_world/spe11a.toml new file mode 100644 index 0000000..6c9c5b5 --- /dev/null +++ b/examples/hello_world/spe11a.toml @@ -0,0 +1,49 @@ +# Set the full path to the flow executable and flags +flow = "flow --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99" + +# Set the model parameters +spe11 = "spe11a" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "tensor" # Type of grid (cartesian, tensor, or corner-point) +dims = [2.8, 0.01, 1.2] # Length, width, and depth [m] +x_n = [4, 15, 10, 10, 9, 7] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [1] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [5, 9, 13, 20, 13, 9, 5] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [20, 20] # Temperature bottom and top rig [C] +datum = 1.2 # Datum [m] +pressure = 1.1e5 # Pressure at the datum [Pa] +kzMult = 1 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 1.6e-5] # Diffusion (in liquid and gas) [m^2/s] +spe11aBC = 0 # Added pore volume on top boundary [m^3] (for spe11a [if 0, free flow bc]) +dispersion = [1e-2, 1e-2, 1e-2, 1e-2, 1e-2, 1e-2, 0] # Dispersion rock [m], facie 1 to 7 +radius = [9e-4, 9e-4] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[0.9, 0.005, 0.3], [1.7, 0.005, 0.7]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 2" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 2" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 2)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "np.flip(np.linspace(0, 1.0, npoints))" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 1500, 2500, 100], + [0.14, 0.1, 300, 2500, 100], + [0.12, 0.1, 100, 2500, 100], + [0.12, 0.1, 25, 2500, 100], + [0.12, 0.1, 10, 2500, 100], + [0.10, 0.1, 1, 2500, 100], + [0, 0, 0, 2500, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[44529.9988, 0.44], + [506624.985, 0.43], + [1013249.97, 0.44], + [2026499.95, 0.45], + [4052999.88, 0.43], + [10132499.7, 0.46], + [ 0, 0]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[5, 0.5, 1e-2, 1, 1.7e-7, 20, 1, 1.7e-7, 20]] \ No newline at end of file diff --git a/examples/hello_world/spe11a.txt b/examples/hello_world/spe11a.txt index 3632c01..10bc18f 100644 --- a/examples/hello_world/spe11a.txt +++ b/examples/hello_world/spe11a.txt @@ -1,9 +1,9 @@ """Set the full path to the flow executable and flags""" -flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --newton-min-iterations=1 --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99 +flow --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99 """Set the model parameters""" spe11a release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) tensor #Type of grid (cartesian, tensor, or corner-point) 2.8 0.01 1.2 #Length, width, and depth [m] 4,15,10,10,9,7 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment @@ -49,4 +49,4 @@ PERM7 0 PORO7 0 DISP7 0 """Define the injection values ([hours] for spe11a; [years] for spe11b/c)""" """injection time, time step size to write results, maximum solver time step, injected fluid (0 water, 1 co2) (well1), injection rate [kg/s] (well1), temperature [C] (well1), injected fluid (0 water, 1 co2) (well2), ...""" -5 0.5 1e-4 1 1.7e-7 20 1 1.7e-7 20 \ No newline at end of file +5 0.5 1e-2 1 1.7e-7 20 1 1.7e-7 20 \ No newline at end of file diff --git a/examples/hello_world/spe11b.toml b/examples/hello_world/spe11b.toml new file mode 100644 index 0000000..efcf650 --- /dev/null +++ b/examples/hello_world/spe11b.toml @@ -0,0 +1,52 @@ +# Set the full path to the flow executable and flags +flow = "flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --newton-min-iterations=1 --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99" + +# Set the model parameters +spe11 = "spe11b" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "corner-point" # Type of grid (cartesian, tensor, or corner-point) +dims = [8400.0, 1.0, 1200.0] # Length, width, and depth [m] +x_n = [8, 10, 15, 15, 15, 10, 8] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [1] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [2, 2, 1, 1, 2, 1, 3, 2, 6, 2, 3, 2, 2, 8, 4, 8, 8, 1] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [70, 40] # Temperature bottom and top rig [C] +datum = 300 # Datum [m] +pressure = 3e7 # Pressure at the datum [Pa] +kzMult = 0.1 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] +rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) +pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) +widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) +dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 +rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 +radius = [0, 0] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[2700.0, 0.5, 300.0], [5100.0, 0.5, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "1 - np.linspace(0, 1.0, npoints)" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 193531.39, 3e7, 100], + [0.14, 0.1, 8654.99, 3e7, 100], + [0.12, 0.1, 6120.00, 3e7, 100], + [0.12, 0.1, 3870.63, 3e7, 100], + [0.12, 0.1, 3060.00, 3e7, 100], + [0.10, 0.1, 2560.18, 3e7, 100], + [0, 0, 0, 3e7, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[25, 5.0, 0.1, 1, 0.035, 10, 1, 0.035, 10]] \ No newline at end of file diff --git a/examples/hello_world/spe11b.txt b/examples/hello_world/spe11b.txt index bd1fda0..c8b3899 100644 --- a/examples/hello_world/spe11b.txt +++ b/examples/hello_world/spe11b.txt @@ -3,7 +3,7 @@ flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --newton-min- """Set the model parameters""" spe11b release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) corner-point #Type of grid (cartesian, tensor, or corner-point) 8400 1 1200 #Length, width, and depth [m] 8,10,15,15,15,10,8 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/examples/hello_world/spe11c.toml b/examples/hello_world/spe11c.toml new file mode 100644 index 0000000..61e3dcd --- /dev/null +++ b/examples/hello_world/spe11c.toml @@ -0,0 +1,56 @@ +# Set the full path to the flow executable and flags +flow = "flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99" + +# Set the model parameters +spe11 = "spe11c" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "cartesian" # Type of grid (cartesian, tensor, or corner-point) +dims = [8400.0, 5000.0, 1200.0] # Length, width, and depth [m] +x_n = [42] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [25] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [12] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [70, 36.12] # Temperature bottom and top rig [C] +datum = 300 # Datum [m] +pressure = 3e7 # Pressure at the datum [Pa] +kzMult = 0.1 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] +rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) +pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) +widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) +elevation = 150 # Maximum elevation difference (relative to the baseline gradient) of the arch in the y direction [m] (for spe11c) +backElevation = 10 # Back boundary elevation w.r.t the front boundary [m] (for spe11c) +dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 +rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 +radius = [0.15, 0.15] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[2700.0, 1000.0, 300.0], [5100.0, 1000.0, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 +wellCoordF = [[2700.0, 4000.0, 300.0], [5100.0, 4000.0, 700.0]] # Well final positions: x, y, and z coordinates [m], well 1 to 2 (for spe11c) + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 193531.39, 3e7, 100], + [0.14, 0.1, 8654.99, 3e7, 100], + [0.12, 0.1, 6120.00, 3e7, 100], + [0.12, 0.1, 3870.63, 3e7, 100], + [0.12, 0.1, 3060.00, 3e7, 100], + [0.10, 0.1, 2560.18, 3e7, 100], + [0, 0, 0, 3e7, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[1000, 1000, 1000, 1, 0, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 50, 10]] \ No newline at end of file diff --git a/examples/hello_world/spe11c.txt b/examples/hello_world/spe11c.txt index f9e8aca..3026b47 100644 --- a/examples/hello_world/spe11c.txt +++ b/examples/hello_world/spe11c.txt @@ -1,9 +1,9 @@ """Set the full path to the flow executable and flags""" -flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --newton-min-iterations=1 --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99 +flow --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99 """Set the model parameters""" spe11c release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) cartesian #Type of grid (cartesian, tensor, or corner-point) 8400 5000 1200 #Length, width, and depth [m] 42 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment @@ -49,5 +49,5 @@ PERM7 1e-5 PORO7 1e-6 DISP7 0 THCONR7 2.00 """Define the injection values ([hours] for spe11a; [years] for spe11b/c)""" """injection time, time step size to write results, maximum solver time step, injected fluid (0 water, 1 co2) (well1), injection rate [kg/s] (well1), temperature [C] (well1), injected fluid (0 water, 1 co2) (well2), ...""" -1000 1000 1 1 0 10 1 0 10 - 25 5 1 1 50 10 1 50 10 \ No newline at end of file +1000 1000 1000 1 0 10 1 0 10 + 25 5 5 1 50 10 1 50 10 \ No newline at end of file diff --git a/src/pyopmspe11/core/pyopmspe11.py b/src/pyopmspe11/core/pyopmspe11.py index cf8e6aa..7f07b06 100644 --- a/src/pyopmspe11/core/pyopmspe11.py +++ b/src/pyopmspe11/core/pyopmspe11.py @@ -45,7 +45,7 @@ def pyopmspe11(): # Make the output folders if not os.path.exists(f"{dic['exe']}/{dic['fol']}"): os.system(f"mkdir {dic['exe']}/{dic['fol']}") - for fil in ["deck", "flow"]: + for fil in ["deck", "flow" if dic["mode"] != "deck" else ""]: if not os.path.exists(f"{dic['exe']}/{dic['fol']}/{fil}"): os.system(f"mkdir {dic['exe']}/{dic['fol']}/{fil}") os.chdir(f"{dic['exe']}/{dic['fol']}") diff --git a/src/pyopmspe11/utils/inputvalues.py b/src/pyopmspe11/utils/inputvalues.py index 2fd2cdf..ed930d6 100644 --- a/src/pyopmspe11/utils/inputvalues.py +++ b/src/pyopmspe11/utils/inputvalues.py @@ -7,6 +7,7 @@ import csv import sys +import tomllib from io import StringIO from subprocess import PIPE, Popen import numpy as np @@ -24,11 +25,62 @@ def process_input(dic, in_file): dic (dict): Modified global dictionary """ - lol = [] # List of lines - with open(in_file, "r", encoding="utf8") as file: - for row in csv.reader(file, delimiter="#"): - lol.append(row) - readthefirstpart(lol, dic) + if in_file.endswith(".toml"): + with open(in_file, "rb") as file: + dic.update(tomllib.load(file)) + setcaseproperties(dic) + postprocesstoml(dic) + else: + lol = [] # List of lines + with open(in_file, "r", encoding="utf8") as file: + for row in csv.reader(file, delimiter="#"): + lol.append(row) + readthefirstpart(lol, dic) + setcaseproperties(dic) + readthesecondpart(lol, dic) + + +def postprocesstoml(dic): + """ + Perform the unit convertions and generation of needed variables + + Args: + dic (dict): Global dictionary + + Returns: + dic (dict): Modified global dictionary + + """ + dic["noCells"] = [sum(dic["x_n"]), sum(dic["y_n"]), sum(dic["z_n"])] + dic["diffusion"] = np.array(dic["diffusion"]) * 86400 # To [m^2/day] + dic["noSands"] = len(dic["safu"]) + dic["tabdims"] = 1 + for row in dic["safu"]: + dic["tabdims"] = max(dic["tabdims"], row[4]) + for i in range(len(dic["inj"])): # To [s] + dic["inj"][i][0] *= dic["time"] + dic["inj"][i][1] *= dic["time"] + dic["inj"][i][2] *= dic["time"] + dic["wellCoord"][0][-1] = dic["dims"][2] - dic["wellCoord"][0][-1] + dic["wellCoord"][1][-1] = dic["dims"][2] - dic["wellCoord"][1][-1] + if dic["spe11"] == "spe11c": + dic["wellCoordF"][0][-1] = dic["dims"][2] - dic["wellCoordF"][0][-1] + dic["wellCoordF"][1][-1] = dic["dims"][2] - dic["wellCoordF"][1][-1] + if dic["spe11"] in ["spe11b", "spe11c"]: + dic["rockCond"] = np.array(dic["rockCond"]) * 86400.0 / 1e3 # To [kJ/(m day K)] + + +def setcaseproperties(dic): + """ + Set the time scale, box, and sensor locations + + Args: + dic (dict): Global dictionary + + Returns: + dic (dict): Modified global dictionary + + """ dic["maxelevation"] = 0.0 if dic["spe11"] == "spe11a": dic["sensors"] = [[1.5, 0.005, 0.5], [1.7, 0.005, 1.1]] @@ -53,7 +105,6 @@ def process_input(dic, in_file): dic["boxb"] = [[100.0, 0.0, 750.0], [3300.0, 5000.0, 1350.0]] dic["boxc"] = [[3300.0, 0.0, 250.0], [7800.0, 5000.0, 550.0]] dic["time"] = 31536000.0 # year to seconds - readthesecondpart(lol, dic) def readthefirstpart(lol, dic): @@ -79,7 +130,6 @@ def readthefirstpart(lol, dic): dic["dims"] = [float((lol[7][0].strip()).split()[j]) for j in range(3)] if dic["grid"] == "cartesian": dic["noCells"] = [int((lol[8 + j][0].strip()).split()[0]) for j in range(3)] - dic["dsize"] = [1.0 * dic["dims"][i] / dic["noCells"][i] for i in range(3)] else: dic["x_n"] = np.genfromtxt(StringIO(lol[8][0]), delimiter=",", dtype=int) dic["y_n"] = np.genfromtxt(StringIO(lol[9][0]), delimiter=",", dtype=int) @@ -166,17 +216,13 @@ def readthesecondpart(lol, dic): row = list((lol[dic["index"] + i][0].strip()).split()) dic["rock"].append( [ - row[1], - row[3], + str(float(row[1])), + str(float(row[3])), ] ) dic["dispersion"].append(float(row[5])) if dic["spe11"] != "spe11a": - dic["rockCond"].append( - [ - float(row[7]) * 86400.0 / 1e3, - ] - ) + dic["rockCond"].append(float(row[7]) * 86400.0 / 1e3) dic["index"] += 3 + dic["noSands"] column = [] columnf = [] @@ -202,7 +248,7 @@ def readthesecondpart(lol, dic): ] ) dic["wellCoord"] = column - dic["wellCoordf"] = columnf + dic["wellCoordF"] = columnf dic["index"] += len(dic["wellCoord"]) + 3 column = [] for i in range(len(lol) - dic["index"]): diff --git a/src/pyopmspe11/utils/mapproperties.py b/src/pyopmspe11/utils/mapproperties.py index a30dc67..553ea6c 100644 --- a/src/pyopmspe11/utils/mapproperties.py +++ b/src/pyopmspe11/utils/mapproperties.py @@ -34,6 +34,7 @@ def grid(dic): if dic["grid"] == "corner-point": corner(dic) elif dic["grid"] == "cartesian": + dic["dsize"] = [1.0 * dic["dims"][i] / dic["noCells"][i] for i in range(3)] for i, name in enumerate(["xmx", "ymy", "zmz"]): dic[f"{name}"] = np.linspace(0, dic["dims"][i], dic["noCells"][i] + 1) else: @@ -99,8 +100,8 @@ def structured_handling_spe11a(dic): ) dic["satnum"].append(dic["ids_gmsh"][fgl][0]) boxes(dic, dic["xmx_center"][i], dic["zmz_center"][k], i, dic["satnum"][-1]) - dic["permx"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][0]) - dic["poro"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][1]) + dic["permx"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][0]}") + dic["poro"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][1]}") dic["disperc"].append( f"{dic['dispersion'][int(dic['ids_gmsh'][fgl][0])-1]}" ) @@ -170,13 +171,11 @@ def structured_handling_spe11bc(dic): z_c -= map_z(dic, 0) dic["satnum"].append(dic["ids_gmsh"][fgl][0]) boxes(dic, dic["xmx_center"][i], z_c, i, dic["satnum"][-1]) - dic["permx"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][0]) - poro = dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][1] + dic["permx"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][0]}") + poro = f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][1]}" dic["poro"].append(poro) pv = float(poro) * (dic["pvAdded"] + dic["widthBuffer"]) - dic["thconr"].append( - f"{dic['rockCond'][int(dic['ids_gmsh'][fgl][0])-1][0]}" - ) + dic["thconr"].append(f"{dic['rockCond'][int(dic['ids_gmsh'][fgl][0])-1]}") dic["disperc"].append( f"{dic['dispersion'][int(dic['ids_gmsh'][fgl][0])-1]}" ) @@ -387,8 +386,8 @@ def corner_point_handling_spe11a(dic): ) dic["satnum"].append(dic["ids_gmsh"][fgl][0]) boxes(dic, dic["xyz"][0], dic["xyz"][2], dic["ijk"][0], dic["satnum"][-1]) - dic["permx"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][0]) - dic["poro"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][1]) + dic["permx"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][0]}") + dic["poro"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][1]}") dic["disperc"].append(f"{dic['dispersion'][int(dic['ids_gmsh'][fgl][0])-1]}") centers.append(str([dic["xyz"][0], dic["ymy_center"][0], dic["xyz"][2]])[1:-1]) corners.append(dic["corns"]) @@ -519,12 +518,12 @@ def corner_point_handling_spe11bc(dic): z_c -= map_z(dic, dic["ijk"][1]) dic["satnum"].append(dic["ids_gmsh"][fgl][0]) boxes(dic, dic["xyz"][0], z_c, dic["ijk"][0], dic["satnum"][-1]) - dic["permx"].append(dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][0]) - poro = dic["rock"][int(dic["ids_gmsh"][fgl][0]) - 1][1] + dic["permx"].append(f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][0]}") + poro = f"{dic['rock'][int(dic['ids_gmsh'][fgl][0]) - 1][1]}" dic["poro"].append(poro) pv = float(poro) * (dic["pvAdded"] + dic["widthBuffer"]) dic["disperc"].append(f"{dic['dispersion'][int(dic['ids_gmsh'][fgl][0])-1]}") - dic["thconr"].append(f"{dic['rockCond'][int(dic['ids_gmsh'][fgl][0])-1][0]}") + dic["thconr"].append(f"{dic['rockCond'][int(dic['ids_gmsh'][fgl][0])-1]}") if dic["ijk"][0] == 0 and ( int(dic["ids_gmsh"][fgl][0]) != 1 and int(dic["ids_gmsh"][fgl][0]) != 7 ): @@ -621,14 +620,13 @@ def locate_wells_sensors(dic): dic["sensorijk"][1] = list(dic["gridf"].get_ijk(global_index=dic["pop2"])) dic["wellijk"][0] = [well1ijk[0] + 1, 1, well1ijk[2] + 1] dic["wellijk"][1] = [well2ijk[0] + 1, 1, well2ijk[2] + 1] - # Work in process to implement properly this for the corner-point grid in spe11c if dic["spe11"] == "spe11c": dic["wellijkf"] = [[] for _ in range(len(dic["wellCoord"]))] dic["wellijkf"][0] = [dic["wellijk"][0][0], 1, dic["wellijk"][0][2]] dic["wellijkf"][1] = [dic["wellijk"][1][0], 1, dic["wellijk"][1][2]] dic["ymy_center"] = (np.array(dic["ymy"][1:]) + np.array(dic["ymy"][:-1])) / 2.0 wji = pd.Series(abs(dic["wellCoord"][0][1] - dic["ymy_center"])).argmin() + 1 - wjf = pd.Series(abs(dic["wellCoordf"][0][1] - dic["ymy_center"])).argmin() + 1 + wjf = pd.Series(abs(dic["wellCoordF"][0][1] - dic["ymy_center"])).argmin() + 1 sj1 = pd.Series(abs(dic["sensors"][0][1] - dic["ymy_center"])).argmin() sj2 = pd.Series(abs(dic["sensors"][1][1] - dic["ymy_center"])).argmin() dic["sensorijk"][0][1] = sj1 @@ -834,7 +832,7 @@ def wells(dic): ) dic["wellijkf"][j].append( pd.Series( - abs(dic["wellCoordf"][j][k] - dic[f"{axis}_center"]) + abs(dic["wellCoordF"][j][k] - dic[f"{axis}_center"]) ).argmin() + 1 ) diff --git a/tests/configs/input.txt b/tests/configs/input.txt index 18733d9..d78f695 100644 --- a/tests/configs/input.txt +++ b/tests/configs/input.txt @@ -3,7 +3,7 @@ flow --linear-solver=cprw --newton-min-iterations=1 --enable-tuning=true --enabl """Set the model parameters""" spe11b release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gasoil #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gasoil #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) corner-point #Type of grid (cartesian, tensor, or corner-point) 8400 1 1200 #Length, width, and depth [m] 10,50,10 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/tests/configs/spe11a_data_format.toml b/tests/configs/spe11a_data_format.toml new file mode 100644 index 0000000..accc488 --- /dev/null +++ b/tests/configs/spe11a_data_format.toml @@ -0,0 +1,51 @@ +# Set the full path to the flow executable and flags +flow = "flow --tolerance-mb=1e-7 --linear-solver=cprw --newton-min-iterations=1 --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations" + +# Set the model parameters +spe11 = "spe11a" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "cartesian" # Type of grid (cartesian, tensor, or corner-point) +dims = [2.8, 0.01, 1.2] # Length, width, and depth [m] +x_n = [28] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [1] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [12] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [20.0, 20.0] # Temperature bottom and top rig [C] +datum = 1.2 # Datum [m] +pressure = 1.1e5 # Pressure at the datum [Pa] +kzMult = 1.0 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 1.6e-5] # Diffusion (in liquid and gas) [m^2/s] +spe11aBC = 0 # Added pore volume on top boundary [m^3] (for spe11a [if 0, free flow bc]) +dispersion = [1e-2, 1e-2, 1e-2, 1e-2, 1e-2, 1e-2, 0] # Dispersion rock [m], facie 1 to 7 +radius = [0, 0] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[0.9, 0.005, 0.3], [1.7, 0.005, 0.7]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 2" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 2" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 2)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 1500, 2500, 1000], + [0.14, 0.1, 300, 2500, 1000], + [0.12, 0.1, 100, 2500, 1000], + [0.12, 0.1, 25, 2500, 1000], + [0.12, 0.1, 10, 2500, 1000], + [0.10, 0.1, 1, 2500, 1000], + [0, 0, 0, 2500, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[44529.9988, 0.44], + [506624.985, 0.43], + [1013249.97, 0.44], + [2026499.95, 0.45], + [4052999.88, 0.43], + [10132499.7, 0.46], + [ 0.0, 0.0]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[2.5, 0.5, 0.5, 1, 1.7e-7, 20, 1, 0, 20], + [2.5, 0.5, 0.5, 1, 1.7e-7, 20, 1, 1.7e-7, 20], + [115, 1, 1, 1, 0, 20, 1, 0, 20]] \ No newline at end of file diff --git a/tests/configs/spe11a_data_format.txt b/tests/configs/spe11a_data_format.txt index b8d390f..571845d 100644 --- a/tests/configs/spe11a_data_format.txt +++ b/tests/configs/spe11a_data_format.txt @@ -3,7 +3,7 @@ flow --tolerance-mb=1e-7 --linear-solver=cprw --newton-min-iterations=1 --enable """Set the model parameters""" spe11a release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) cartesian #Type of grid (cartesian, tensor, or corner-point) 2.8 0.01 1.2 #Length, width, and depth [m] 28 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/tests/configs/spe11b_data_format.toml b/tests/configs/spe11b_data_format.toml new file mode 100644 index 0000000..d7e6cef --- /dev/null +++ b/tests/configs/spe11b_data_format.toml @@ -0,0 +1,56 @@ +# Set the full path to the flow executable and flags +flow = "flow --tolerance-mb=1e-7 --linear-solver=cprw --newton-min-iterations=1 --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations" + +# Set the model parameters +spe11 = "spe11b" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "cartesian" # Type of grid (cartesian, tensor, or corner-point) +dims = [8400.0, 1.0, 1200.0] # Length, width, and depth [m] +x_n = [84] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [1] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [12] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [70.0, 40.0] # Temperature bottom and top rig [C] +datum = 300 # Datum [m] +pressure = 3e7 # Pressure at the datum [Pa] +kzMult = 0.1 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] +rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) +pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) +widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) +dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 +rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 +radius = [0, 0] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[2700.0, 0.5, 300.0], [5100.0, 0.5, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 193531.39, 3e7, 1000], + [0.14, 0.1, 8654.99, 3e7, 1000], + [0.12, 0.1, 6120.00, 3e7, 1000], + [0.12, 0.1, 3870.63, 3e7, 1000], + [0.12, 0.1, 3060.00, 3e7, 1000], + [0.10, 0.1, 2560.18, 3e7, 1000], + [0, 0, 0, 3e7, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[999.9, 999.9, 100, 1, 0, 10, 1, 0, 10], + [ 0.1, 0.1, 0.1, 1, 0, 10, 1, 0, 10], + [ 25, 5, 5, 1, 0.035, 10, 1, 0, 10], + [ 25, 5, 5, 1, 0.035, 10, 1, 0.035, 10], + [ 950, 5, 5, 1, 0, 10, 1, 0, 10]] \ No newline at end of file diff --git a/tests/configs/spe11b_data_format.txt b/tests/configs/spe11b_data_format.txt index 90bfa6b..43e2313 100644 --- a/tests/configs/spe11b_data_format.txt +++ b/tests/configs/spe11b_data_format.txt @@ -3,7 +3,7 @@ flow --tolerance-mb=1e-7 --linear-solver=cprw --newton-min-iterations=1 --enable """Set the model parameters""" spe11b release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) cartesian #Type of grid (cartesian, tensor, or corner-point) 8400 1 1200 #Length, width, and depth [m] 84 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/tests/configs/spe11c.txt b/tests/configs/spe11c.txt index 7224708..ccc39b6 100644 --- a/tests/configs/spe11c.txt +++ b/tests/configs/spe11c.txt @@ -3,7 +3,7 @@ flow --enable-tuning=true --newton-min-iterations=1 --enable-opm-rst-file=true - """Set the model parameters""" spe11c release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gasoil #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gasoil #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) tensor #Type of grid (cartesian, tensor, or corner-point) 8400 5000 1200 #Length, width, and depth [m] 4,50,15,40,40,40,15,10,4 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/tests/configs/spe11c_data_format.toml b/tests/configs/spe11c_data_format.toml new file mode 100644 index 0000000..bd35469 --- /dev/null +++ b/tests/configs/spe11c_data_format.toml @@ -0,0 +1,61 @@ +# Set the full path to the flow executable and flags +flow = "flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --enable-opm-rst-file=true --output-extra-convergence-info=steps,iterations --newton-min-iterations=1" + +# Set the model parameters +spe11 = "spe11c" # Name of the spe case (spe11a, spe11b, or spe11c) +version = "release" # OPM Flow version (release or master) +model = "complete" # Name of the co2 model (immiscible, convective, or complete) +co2store = "gaswater" # co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +grid = "corner-point" # Type of grid (cartesian, tensor, or corner-point) +dims = [8400.0, 5000.0, 1200.0] # Length, width, and depth [m] +x_n = [42] # If cartesian, number of x cells [-]; otherwise, variable array of x-refinment +y_n = [25] # If cartesian, number of y cells [-]; otherwise, variable array of y-refinment [-] (for spe11c) +z_n = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # If cartesian, number of z cells [-]; if tensor, variable array of z-refinment; if corner-point, fix array of z-refinment (18 entries) +temperature = [70.0, 36.12] # Temperature bottom and top rig [C] +datum = 300 # Datum [m] +pressure = 3e7 # Pressure at the datum [Pa] +kzMult = 0.1 # Multiplier for the permeability in the z direction [-] +diffusion = [1e-9, 2e-8] # Diffusion (in liquid and gas) [m^2/s] +rockExtra = [8.5e-1, 2500.0] # Rock specific heat capacity [kJ/(kg K)] and rock density [kg/m^3] (for spe11b/c) +pvAdded = 5e4 # Extra pore volume per area on lateral boundaries [m] (for spe11b/c) +widthBuffer = 1 # Width of buffer cells [m] (for spe11b/c) +elevation = 150 # Maximum elevation difference (relative to the baseline gradient) of the arch in the y direction [m] (for spe11c) +backElevation = 10 # Back boundary elevation w.r.t the front boundary [m] (for spe11c) +dispersion = [10, 10, 10, 10, 10, 10, 0] # Dispersion rock [m], facie 1 to 7 +rockCond = [1.9, 1.25, 1.25, 1.25, 0.92, 0.26, 2.0] # Thermal conductivity rock [W/(m K)], facie 1 to 7 +radius = [0, 0] # Wells radius [m] (0 to use the SOURCE keyword instead of well keywords), well 1 to 2 +wellCoord = [[2700.0, 1000.0, 300.0], [5100.0, 1000.0, 700.0]] # Well positions: x, y, and z coordinates [m], well 1 to 2 +wellCoordF = [[2700.0, 4000.0, 300.0], [5100.0, 4000.0, 700.0]] # Well final positions: x, y, and z coordinates [m], well 1 to 2 (for spe11c) + +# Set the saturation functions +krw = "(max(0, (s_w - swi) / (1 - swi))) ** 1.5" # Wetting rel perm saturation function [-] +krn = "(max(0, (1 - s_w - sni) / (1 - sni))) ** 1.5" # Non-wetting rel perm saturation function [-] +pcap = "penmax * math.erf(pen * ((s_w-swi) / (1.-swi)) ** (-(1.0 / 1.5)) * math.pi**0.5 / (penmax * 2))" # Capillary pressure saturation function [Pa] +s_w = "(np.exp(np.flip(np.linspace(0, 5.0, npoints))) - 1) / (np.exp(5.0) - 1)" # Points to evaluate the saturation functions (s_w) [-] + +# Properties sat functions: 1) swi [-], 2) sni [-], 3) pen [Pa], 4) penmax [Pa], and 5) npoints [-], facie 1 to 7 +safu = [[0.32, 0.1, 193531.39, 3e7, 1000], + [0.14, 0.1, 8654.99, 3e7, 1000], + [0.12, 0.1, 6120.00, 3e7, 1000], + [0.12, 0.1, 3870.63, 3e7, 1000], + [0.12, 0.1, 3060.00, 3e7, 1000], + [0.10, 0.1, 2560.18, 3e7, 1000], + [0, 0, 0, 3e7, 2]] + +# Properties rock: 1) K [mD] and 2) phi [-], facie 1 to 7 +rock = [[0.10132, 0.10], + [101.324, 0.20], + [202.650, 0.20], + [506.625, 0.20], + [1013.25, 0.25], + [2026.50, 0.35], + [1e-5, 1e-6]] + +# Define the injection values ([hours] for spe11a; [years] for spe11b/c): 1) injection time, 2) time step size to write results, 3) maximum solver time step, 4) injected fluid (0 water, 1 co2) (well1), 5) injection rate [kg/s] (well1), 6) temperature [C] (well1), 7) injected fluid (0 water, 1 co2) (well2), 8) injection rate [kg/s] (well2), and 9) temperature [C] (well2) +inj = [[999.9, 999.9, 100, 1, 0, 10, 1, 0, 10], + [ 0.1, 0.1, 0.1, 1, 0, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 0, 10], + [ 25, 5, 5, 1, 50, 10, 1, 50, 10], + [ 50, 25, 25, 1, 0, 10, 1, 0, 10], + [ 400, 50, 50, 1, 0, 10, 1, 0, 10], + [ 500, 100, 100, 1, 0, 10, 1, 0, 10]] \ No newline at end of file diff --git a/tests/configs/spe11c_data_format.txt b/tests/configs/spe11c_data_format.txt index 3569bf6..c92ae88 100644 --- a/tests/configs/spe11c_data_format.txt +++ b/tests/configs/spe11c_data_format.txt @@ -3,7 +3,7 @@ flow --tolerance-mb=1e-7 --linear-solver=cprw --enable-tuning=true --enable-opm- """Set the model parameters""" spe11c release #Name of the spe case (spe11a, spe11b, or spe11c) and OPM Flow version (master or release) -complete gaswater #Name of the co2 model (immiscible, convective [convective requires a Flow version newer than 22-08-2024], or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) +complete gaswater #Name of the co2 model (immiscible, convective, or complete) and co2store implementation (gaswater or gasoil [oil properties are set to water internally in OPM flow]) corner-point #Type of grid (cartesian, tensor, or corner-point) 8400 5000 1200 #Length, width, and depth [m] 42 #If cartesian, number of x cells [-]; otherwise, variable array of x-refinment diff --git a/tests/test_0_input_format.py b/tests/test_0_input_format.py new file mode 100644 index 0000000..5e6c1be --- /dev/null +++ b/tests/test_0_input_format.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2024 NORCE +# SPDX-License-Identifier: MIT + +"""Test the parsing of .txt and .toml configuration files""" + +import os +import filecmp +import pathlib +import subprocess + +dirname: pathlib.Path = pathlib.Path(__file__).parent + + +def test_txt_toml(): + """See configs/spe11x_data_format.y (x in [a, b, c]; y in [txt, toml])""" + os.chdir(f"{dirname}/configs") + for spe in ["spe11a", "spe11b", "spe11c"]: + folder = [] + for ext in ["txt", "toml"]: + subprocess.run( + [ + "pyopmspe11", + "-i", + f"{spe}_data_format.{ext}", + "-o", + f"{spe}_{ext}", + "-m", + "deck", + ], + check=True, + ) + os.rename( + f"{spe}_{ext}/deck/{spe.upper()}_{ext.upper()}.DATA", + f"{spe}_{ext}/deck/{spe.upper()}.DATA", + ) + folder.append(f"{dirname}/configs/{spe}_{ext}/deck") + files = [f"{spe.upper()}.DATA", "TABLES.INC", "PERMX.INC"] + if spe != "spe11a": + files += ["PVBOUNDARIES.INC", "THCONR.INC"] + if spe == "spe11c": + files += ["GRID.INC"] + match, mismatch, error = filecmp.cmpfiles( + folder[0], folder[1], files, shallow=False + ) + text = ( + f"Error for .txt and .tmol in {spe}: mismatch = {mismatch}; error = {error}" + ) + assert match == files, text diff --git a/tests/test_0_spe11a.py b/tests/test_1_spe11a.py similarity index 100% rename from tests/test_0_spe11a.py rename to tests/test_1_spe11a.py diff --git a/tests/test_1_spe11b.py b/tests/test_2_spe11b.py similarity index 100% rename from tests/test_1_spe11b.py rename to tests/test_2_spe11b.py diff --git a/tests/test_2_spe11c.py b/tests/test_3_spe11c.py similarity index 100% rename from tests/test_2_spe11c.py rename to tests/test_3_spe11c.py diff --git a/tests/test_3_data.py b/tests/test_4_data.py similarity index 100% rename from tests/test_3_data.py rename to tests/test_4_data.py diff --git a/tests/test_4_plot.py b/tests/test_5_plot.py similarity index 100% rename from tests/test_4_plot.py rename to tests/test_5_plot.py diff --git a/tests/test_5_compare.py b/tests/test_6_compare.py similarity index 100% rename from tests/test_5_compare.py rename to tests/test_6_compare.py diff --git a/tests/test_6_data_format.py b/tests/test_7_data_format.py similarity index 100% rename from tests/test_6_data_format.py rename to tests/test_7_data_format.py