diff --git a/docs/_sources/configuration_file.rst.txt b/docs/_sources/configuration_file.rst.txt index 39407b4..089f1ab 100644 --- a/docs/_sources/configuration_file.rst.txt +++ b/docs/_sources/configuration_file.rst.txt @@ -141,9 +141,9 @@ top to the bottom on the left side of the domain and the injection is given as k #1) injection time [d], 2) time step size to write results [d], #3) fluid (0 wetting, 1 non-wetting), 4) injection rates [kg/day]. #If --enable-tuning=1, then 5) for TUNING values as described in the OPM manual. - inj = [[7,1e-1,1,57611.52,"1* 1e-2"], - [7,1e-1,0,57611.52,"1* 5e-2"], - [7,1e-1,1,57611.52,"1* 5e-2"]] + inj = [[7,1e-1,1,57611.52,"1* 1e-2 1e-12"], + [7,1e-1,0,57611.52,"1* 5e-2 1e-12"], + [7,1e-1,1,57611.52,"1* 5e-2 1e-12"]] Here CO2 (non-wetting phase) is injected for seven days printing the results 70 times and limmiting the time step to 1e-2 days, after water (wetting phase) is injected for the same period at the same mass rate but limiting the time step diff --git a/docs/_sources/examples.rst.txt b/docs/_sources/examples.rst.txt index 86ecf64..2674fab 100644 --- a/docs/_sources/examples.rst.txt +++ b/docs/_sources/examples.rst.txt @@ -2,6 +2,36 @@ Examples ******** +`ResInsight `_ and `plopm `_ are used for the visualization of the results. + +.. note:: + + You can install `plopm `_ by executing in the terminal: + + .. code-block:: bash + + pip install git+https://github.com/cssr-tools/plopm.git + + There are binary packages for Linux and Windows to install Resinsight, see the `ResInsight Documentation `_. For macOS users, you could try to install it using `brew `_ by executing: + + .. code-block:: bash + + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/resinsight -y + + Then, you should be able to open resinsight by typing in the terminal **resinsight**. If you have issues installing ResInsight, `ParaView `_ can be also used. However, you need to add the flag **\-\-enable-vtk-output=true** + to OPM Flow. + +.. tip:: + + For the figures in the following examples we show a screen recording from ResInsight and a PNG and GIF from plopm. To generate the results, + we add a link to a bash file that can be run from the main pyopmnearwell repository as (the results are generated in the test_outputs folder): + + .. code-block:: bash + + . ./tests/scripts/name_of_script.sh + Hello world ----------- In this example we consider the configuration file `h2o.toml `_ available in the @@ -21,13 +51,11 @@ To visualize the results, this can be achieved by using plopm, for example: .. figure:: figs/pressure_1D.png -.. tip:: - You can install `plopm `_ by executing in the terminal: +Then, both commands (pyopmnearwell and plopm) can be run by (`docs_hello_world.sh `_): - .. code-block:: bash - - pip install git+https://github.com/cssr-tools/plopm.git +.. code-block:: bash + . ./tests/scripts/docs_hello_world.sh CO2 cyclic injection -------------------- @@ -58,6 +86,12 @@ To generate a gif using plopm, this can be achieved by executing: Visualization of the gas saturation using plopm. +Then, both commands (pyopmnearwell and plopm) can be run by (`docs_co2_cyclic_injection.sh `_): + +.. code-block:: bash + + . ./tests/scripts/docs_co2_cyclic_injection.sh + CCUS (machine learning) ----------------------- See `this folder `_ for an example of diff --git a/docs/configuration_file.html b/docs/configuration_file.html index 8bfad98..6df4fab 100644 --- a/docs/configuration_file.html +++ b/docs/configuration_file.html @@ -197,9 +197,9 @@

Well-related parameters48#1) injection time [d], 2) time step size to write results [d], 49#3) fluid (0 wetting, 1 non-wetting), 4) injection rates [kg/day]. 50#If --enable-tuning=1, then 5) for TUNING values as described in the OPM manual. -51inj = [[7,1e-1,1,57611.52,"1* 1e-2"], -52[7,1e-1,0,57611.52,"1* 5e-2"], -53[7,1e-1,1,57611.52,"1* 5e-2"]] +51inj = [[7,1e-1,1,57611.52,"1* 1e-2 1e-12"], +52[7,1e-1,0,57611.52,"1* 5e-2 1e-12"], +53[7,1e-1,1,57611.52,"1* 5e-2 1e-12"]]

Here CO2 (non-wetting phase) is injected for seven days printing the results 70 times and limmiting the time step diff --git a/docs/examples.html b/docs/examples.html index d831696..f4f62c0 100644 --- a/docs/examples.html +++ b/docs/examples.html @@ -88,6 +88,30 @@

Examples

+

ResInsight and plopm are used for the visualization of the results.

+
+

Note

+

You can install plopm by executing in the terminal:

+
pip install git+https://github.com/cssr-tools/plopm.git
+
+
+

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

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

Then, you should be able to open resinsight by typing in the terminal resinsight. If you have issues installing ResInsight, ParaView can be also used. However, you need to add the flag --enable-vtk-output=true +to OPM Flow.

+
+
+

Tip

+

For the figures in the following examples we show a screen recording from ResInsight and a PNG and GIF from plopm. To generate the results, +we add a link to a bash file that can be run from the main pyopmnearwell repository as (the results are generated in the test_outputs folder):

+
. ./tests/scripts/name_of_script.sh
+
+
+

Hello world

In this example we consider the configuration file h2o.toml available in the @@ -103,13 +127,10 @@

Hello world _images/pressure_1D.png -
-

Tip

-

You can install plopm by executing in the terminal:

-
pip install git+https://github.com/cssr-tools/plopm.git
+

Then, both commands (pyopmnearwell and plopm) can be run by (docs_hello_world.sh):

+
. ./tests/scripts/docs_hello_world.sh
 
-

CO2 cyclic injection

@@ -121,22 +142,26 @@

CO2 cyclic injection

The execution time was c.a. 20 seconds and the following is an animation using ResInsight to visualize the gas saturation:

-
+
_images/saturation.gif
-

Visualization of the gas saturation using ResInsight.

+

Visualization of the gas saturation using ResInsight.

To generate a gif using plopm, this can be achieved by executing:

plopm -i CO2 -v sgas -m gif -dpi 1000 -interval 50 -loop 1 -d 10,5 -yformat .0f -f 20 -cnum 6 -t "Cyclic injection"
 
-
+
_images/co2_sgas.gif
-

Visualization of the gas saturation using plopm.

+

Visualization of the gas saturation using plopm.

+

Then, both commands (pyopmnearwell and plopm) can be run by (docs_co2_cyclic_injection.sh):

+
. ./tests/scripts/docs_co2_cyclic_injection.sh
+
+

CCUS (machine learning)

diff --git a/docs/genindex.html b/docs/genindex.html index 33c37d7..7557b97 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -251,10 +251,14 @@

G

  • generate_pcfact() (in module pyopmnearwell.utils.writefile)
  • generate_permfact() (in module pyopmnearwell.utils.writefile) +
  • +
  • generate_permfact_pcfact() (in module pyopmnearwell.utils.writefile)
  • generate_saturation_functions_format_1() (in module pyopmnearwell.utils.writefile)
  • generate_saturation_functions_format_2() (in module pyopmnearwell.utils.writefile) +
  • +
  • generate_saturation_functions_gsf_wsf() (in module pyopmnearwell.utils.writefile)
  • get_2dgrid() (in module pyopmnearwell.utils.writefile)
  • @@ -268,10 +272,10 @@

    G

  • (pyopmnearwell.ml.scaler_layers.MinMaxUnScalerLayer method)
  • -
  • get_data_WI() (pyopmnearwell.ml.upscale.BaseUpscaler method) -
    • +
    • get_data_WI() (pyopmnearwell.ml.upscale.BaseUpscaler method) +
    • get_FCNN() (in module pyopmnearwell.ml.nn)
    • get_flags() (in module pyopmnearwell.ml.ensemble) diff --git a/docs/objects.inv b/docs/objects.inv index 9458a17..fe3d848 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/pyopmnearwell.html b/docs/pyopmnearwell.html index c935644..67fa5de 100644 --- a/docs/pyopmnearwell.html +++ b/docs/pyopmnearwell.html @@ -219,8 +219,10 @@

      Subpackagesgenerate_multpv()

    • generate_pcfact()
    • generate_permfact()
    • +
    • generate_permfact_pcfact()
    • generate_saturation_functions_format_1()
    • generate_saturation_functions_format_2()
    • +
    • generate_saturation_functions_gsf_wsf()
    • get_2dgrid()
    • get_spaces()
    • handle_core()
    • diff --git a/docs/pyopmnearwell.utils.html b/docs/pyopmnearwell.utils.html index 3ecbf75..2512581 100644 --- a/docs/pyopmnearwell.utils.html +++ b/docs/pyopmnearwell.utils.html @@ -134,8 +134,10 @@

      Submodulesgenerate_multpv()
    • generate_pcfact()
    • generate_permfact()
    • +
    • generate_permfact_pcfact()
    • generate_saturation_functions_format_1()
    • generate_saturation_functions_format_2()
    • +
    • generate_saturation_functions_gsf_wsf()
    • get_2dgrid()
    • get_spaces()
    • handle_core()
    • diff --git a/docs/pyopmnearwell.utils.writefile.html b/docs/pyopmnearwell.utils.writefile.html index 05c85c2..40fd2ad 100644 --- a/docs/pyopmnearwell.utils.writefile.html +++ b/docs/pyopmnearwell.utils.writefile.html @@ -134,6 +134,12 @@

      Write permfact.inc

      +
      +
      +pyopmnearwell.utils.writefile.generate_permfact_pcfact(dic)
      +

      Generate both permfact and pcfact

      +
      +
      pyopmnearwell.utils.writefile.generate_saturation_functions_format_1(dic)
      @@ -146,6 +152,12 @@

      Using SGFN and SWFN

      +
      +
      +pyopmnearwell.utils.writefile.generate_saturation_functions_gsf_wsf(dic)
      +

      Using GSF and WSF

      +
      +
      pyopmnearwell.utils.writefile.get_2dgrid(dic)
      diff --git a/docs/searchindex.js b/docs/searchindex.js index 7f1a44c..615a221 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"About pyopmnearwell":[[0,null]],"Additional parameters":[[2,"additional-parameters"]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"CCUS (machine learning)":[[4,"ccus-machine-learning"]],"CO2 cyclic injection":[[4,"co2-cyclic-injection"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"Examples":[[4,null]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pyopmnearwell"],[11,"module-pyopmnearwell.core"],[13,"module-pyopmnearwell.ml"],[23,"module-pyopmnearwell.utils"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Publications":[[4,"publications"]],"Python package":[[6,"python-package"]],"Related":[[31,null]],"Reporting issues or problems":[[3,"reporting-issues-or-problems"]],"Reservoir-related parameters":[[2,"reservoir-related-parameters"]],"Rock-related parameters":[[2,"rock-related-parameters"]],"Seek support":[[3,"seek-support"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodules":[[11,"submodules"],[13,"submodules"],[23,"submodules"]],"Subpackages":[[10,"subpackages"]],"Welcome to pyopmnearwell\u2019s documentation!":[[5,null]],"Well-related parameters":[[2,"well-related-parameters"]],"ad-micp":[[31,"ad-micp"]],"expreccs":[[31,"expreccs"]],"plopm":[[31,"plopm"]],"pofff":[[31,"pofff"]],"pycopm":[[31,"pycopm"]],"pymm":[[31,"pymm"]],"pyopmnearwell":[[1,"pyopmnearwell"],[8,null]],"pyopmnearwell Python API":[[1,null]],"pyopmnearwell package":[[10,null]],"pyopmnearwell.core package":[[11,null]],"pyopmnearwell.core.pyopmnearwell module":[[12,null]],"pyopmnearwell.ml package":[[13,null]],"pyopmnearwell.ml.analysis module":[[14,null]],"pyopmnearwell.ml.ensemble module":[[15,null]],"pyopmnearwell.ml.integration module":[[16,null]],"pyopmnearwell.ml.kerasify module":[[17,null]],"pyopmnearwell.ml.nn module":[[18,null]],"pyopmnearwell.ml.resdata_dataset module":[[19,null]],"pyopmnearwell.ml.scaler_layers module":[[20,null]],"pyopmnearwell.ml.upscale module":[[21,null]],"pyopmnearwell.ml.utils module":[[22,null]],"pyopmnearwell.utils package":[[23,null]],"pyopmnearwell.utils.formulas module":[[24,null]],"pyopmnearwell.utils.inputvalues module":[[25,null]],"pyopmnearwell.utils.mako module":[[26,null]],"pyopmnearwell.utils.plotting module":[[27,null]],"pyopmnearwell.utils.runs module":[[28,null]],"pyopmnearwell.utils.units module":[[29,null]],"pyopmnearwell.utils.writefile module":[[30,null]],"pyopmspe11":[[31,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pyopmnearwell","pyopmnearwell.core","pyopmnearwell.core.pyopmnearwell","pyopmnearwell.ml","pyopmnearwell.ml.analysis","pyopmnearwell.ml.ensemble","pyopmnearwell.ml.integration","pyopmnearwell.ml.kerasify","pyopmnearwell.ml.nn","pyopmnearwell.ml.resdata_dataset","pyopmnearwell.ml.scaler_layers","pyopmnearwell.ml.upscale","pyopmnearwell.ml.utils","pyopmnearwell.utils","pyopmnearwell.utils.formulas","pyopmnearwell.utils.inputvalues","pyopmnearwell.utils.mako","pyopmnearwell.utils.plotting","pyopmnearwell.utils.runs","pyopmnearwell.utils.units","pyopmnearwell.utils.writefile","related"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","configuration_file.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","output_folder.rst","pyopmnearwell.rst","pyopmnearwell.core.rst","pyopmnearwell.core.pyopmnearwell.rst","pyopmnearwell.ml.rst","pyopmnearwell.ml.analysis.rst","pyopmnearwell.ml.ensemble.rst","pyopmnearwell.ml.integration.rst","pyopmnearwell.ml.kerasify.rst","pyopmnearwell.ml.nn.rst","pyopmnearwell.ml.resdata_dataset.rst","pyopmnearwell.ml.scaler_layers.rst","pyopmnearwell.ml.upscale.rst","pyopmnearwell.ml.utils.rst","pyopmnearwell.utils.rst","pyopmnearwell.utils.formulas.rst","pyopmnearwell.utils.inputvalues.rst","pyopmnearwell.utils.mako.rst","pyopmnearwell.utils.plotting.rst","pyopmnearwell.utils.runs.rst","pyopmnearwell.utils.units.rst","pyopmnearwell.utils.writefile.rst","related.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pyopmnearwell"]],"pyopmnearwell":[[11,0,0,"-","core"],[13,0,0,"-","ml"],[23,0,0,"-","utils"]],"pyopmnearwell.core":[[12,0,0,"-","pyopmnearwell"]],"pyopmnearwell.core.pyopmnearwell":[[12,1,1,"","main"]],"pyopmnearwell.ml":[[14,0,0,"-","analysis"],[15,0,0,"-","ensemble"],[16,0,0,"-","integration"],[17,0,0,"-","kerasify"],[18,0,0,"-","nn"],[19,0,0,"-","resdata_dataset"],[20,0,0,"-","scaler_layers"],[21,0,0,"-","upscale"],[22,0,0,"-","utils"]],"pyopmnearwell.ml.analysis":[[14,1,1,"","plot_analysis"],[14,1,1,"","sensitivity_analysis"]],"pyopmnearwell.ml.ensemble":[[15,1,1,"","calculate_WI"],[15,1,1,"","calculate_radii"],[15,1,1,"","create_ensemble"],[15,1,1,"","extract_features"],[15,1,1,"","get_flags"],[15,1,1,"","integrate_fine_scale_value"],[15,1,1,"","memory_efficient_sample"],[15,1,1,"","run_ensemble"],[15,1,1,"","setup_ensemble"],[15,1,1,"","store_dataset"]],"pyopmnearwell.ml.integration":[[16,1,1,"","recompile_flow"],[16,1,1,"","run_integration"]],"pyopmnearwell.ml.kerasify":[[17,1,1,"","export_model"],[17,1,1,"","write_convolution2d"],[17,1,1,"","write_dense"],[17,1,1,"","write_floats"],[17,1,1,"","write_lstm"]],"pyopmnearwell.ml.nn":[[18,2,1,"","ArrayLike"],[18,1,1,"","build_model"],[18,1,1,"","get_FCNN"],[18,1,1,"","get_GRU"],[18,1,1,"","get_LSTM"],[18,1,1,"","get_RNN"],[18,1,1,"","handle_zeros_in_scale"],[18,1,1,"","save_tune_results"],[18,1,1,"","scale_and_evaluate"],[18,1,1,"","scale_and_prepare_dataset"],[18,1,1,"","train"],[18,1,1,"","tune"]],"pyopmnearwell.ml.resdata_dataset":[[19,3,1,"","ResDataSet"],[19,1,1,"","main"]],"pyopmnearwell.ml.resdata_dataset.ResDataSet":[[19,4,1,"","ResdataFile_to_datapoint"],[19,5,1,"","features"],[19,4,1,"","on_epoch_end"],[19,4,1,"","read_data"],[19,5,1,"","targets"]],"pyopmnearwell.ml.scaler_layers":[[20,3,1,"","MinMaxScalerLayer"],[20,3,1,"","MinMaxUnScalerLayer"],[20,3,1,"","ScalerLayer"]],"pyopmnearwell.ml.scaler_layers.MinMaxScalerLayer":[[20,4,1,"","call"],[20,4,1,"","compute_output_shape"],[20,4,1,"","from_config"],[20,4,1,"","get_config"]],"pyopmnearwell.ml.scaler_layers.MinMaxUnScalerLayer":[[20,4,1,"","call"],[20,4,1,"","compute_output_shape"],[20,4,1,"","from_config"],[20,4,1,"","get_config"]],"pyopmnearwell.ml.scaler_layers.ScalerLayer":[[20,4,1,"","_adapt"],[20,4,1,"","adapt"],[20,4,1,"","build"],[20,6,1,"","data_max"],[20,6,1,"","data_min"],[20,6,1,"","feature_range"],[20,4,1,"","get_weights"],[20,6,1,"","is_adapted"],[20,5,1,"","min"],[20,5,1,"","scalar"],[20,4,1,"","set_weights"]],"pyopmnearwell.ml.upscale":[[21,3,1,"","BaseUpscaler"],[21,3,1,"","Upscaler"]],"pyopmnearwell.ml.upscale.BaseUpscaler":[[21,5,1,"","_abc_impl"],[21,4,1,"","create_ds"],[21,4,1,"","get_analytical_PI"],[21,4,1,"","get_analytical_WI"],[21,4,1,"","get_data_WI"],[21,4,1,"","get_homogeneous_values"],[21,4,1,"","get_horizontically_integrated_values"],[21,4,1,"","get_radii"],[21,4,1,"","get_timesteps"],[21,4,1,"","get_vertically_averaged_values"],[21,4,1,"","reduce_data_size"]],"pyopmnearwell.ml.upscale.Upscaler":[[21,5,1,"","_abc_impl"],[21,5,1,"","_is_protocol"],[21,6,1,"","angle"],[21,6,1,"","num_layers"],[21,6,1,"","num_timesteps"],[21,6,1,"","num_xcells"],[21,6,1,"","num_zcells"],[21,6,1,"","single_feature_shape"]],"pyopmnearwell.ml.utils":[[22,1,1,"","enable_determinism"]],"pyopmnearwell.utils":[[24,0,0,"-","formulas"],[25,0,0,"-","inputvalues"],[26,0,0,"-","mako"],[27,0,0,"-","plotting"],[28,0,0,"-","runs"],[29,0,0,"-","units"],[30,0,0,"-","writefile"]],"pyopmnearwell.utils.formulas":[[24,1,1,"","area_squaredcircle"],[24,1,1,"","cell_size"],[24,1,1,"","co2brinepvt"],[24,1,1,"","data_WI"],[24,1,1,"","equivalent_well_radius"],[24,1,1,"","hydrostatic_fluid"],[24,1,1,"","hydrostatic_gas"],[24,1,1,"","peaceman_WI"],[24,1,1,"","peaceman_matrix_WI"],[24,1,1,"","pyopmnearwell_correction"],[24,1,1,"","two_phase_peaceman_WI"]],"pyopmnearwell.utils.inputvalues":[[25,1,1,"","process_input"],[25,1,1,"","process_tuning"]],"pyopmnearwell.utils.mako":[[26,1,1,"","fill_template"]],"pyopmnearwell.utils.plotting":[[27,1,1,"","save_fig_and_data"]],"pyopmnearwell.utils.runs":[[28,1,1,"","simulations"]],"pyopmnearwell.utils.units":[[29,7,1,"","BOLTZMANN_CONSTANT"],[29,7,1,"","GRAVITATIONAL_ACCELERATION"],[29,7,1,"","UNIVERSAL_GAS_CONSTANT"]],"pyopmnearwell.utils.writefile":[[30,1,1,"","compact_format"],[30,1,1,"","create_3dgrid"],[30,1,1,"","d3_grids"],[30,1,1,"","generate_fluxnum"],[30,1,1,"","generate_geology"],[30,1,1,"","generate_multpv"],[30,1,1,"","generate_pcfact"],[30,1,1,"","generate_permfact"],[30,1,1,"","generate_saturation_functions_format_1"],[30,1,1,"","generate_saturation_functions_format_2"],[30,1,1,"","get_2dgrid"],[30,1,1,"","get_spaces"],[30,1,1,"","handle_core"],[30,1,1,"","manage_grid"],[30,1,1,"","manage_sections"],[30,1,1,"","manage_tables"],[30,1,1,"","reservoir_files"],[30,1,1,"","round_like_e"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","type","Python type alias"],"3":["py","class","Python class"],"4":["py","method","Python method"],"5":["py","attribute","Python attribute"],"6":["py","property","Python property"],"7":["py","data","Python data"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:type","3":"py:class","4":"py:method","5":"py:attribute","6":"py:property","7":"py:data"},"terms":{"0f":4,"11th":2,"1e":2,"1e10":2,"2d":[21,24,30],"3060e":2,"380649e":29,"3871e":2,"3d":[2,15,24,30],"5e":2,"6120e":2,"8655e":2,"A":[15,18,19,24,26,31],"AND":19,"About":5,"After":19,"All":[14,15,16,21,30],"An":[3,4,15,31],"As":[2,21,24],"Below":31,"By":15,"Each":16,"For":[0,2,3,4,6,14,20,30],"Has":15,"Here":2,"If":[2,4,6,14,15,16,18,19,20,21,24,26,30],"In":[2,3,4,7,15,21,24],"Is":15,"It":[14,15,20],"Most":6,"Not":[21,24],"So":20,"Some":[15,19],"The":[0,1,2,3,4,6,7,9,14,15,16,18,19,21,24,26,27],"Then":[2,6,9],"There":6,"These":4,"This":[7,15,18,19,20,21,24],"To":[2,4,6,19,30],"We":[2,3],"When":26,"While":6,"You":[4,6],"__description__":21,"__init__":21,"_abc":21,"_abc_data":21,"_abc_impl":[13,21],"_adapt":[13,20],"_build":3,"_description_":[15,19,20,21,24],"_extended_summary_":21,"_is_protocol":[13,21],"_summary_":21,"_type_":18,"abc":21,"abl":6,"abov":2,"abstract":21,"abstractmethod":21,"acceler":24,"accept":3,"accord":20,"account":24,"accur":24,"achiev":4,"across":15,"action":[3,6],"activ":[2,6,18],"ad":5,"adapt":[13,20],"add":[2,3,6,9,14,20,30],"addit":[3,4,5,7,14,15,21],"adim":2,"adjust":24,"afterward":19,"align":30,"allow":6,"along":[7,14,15,21],"also":[3,6],"altern":3,"altitud":[15,24],"alway":15,"anaconda":6,"analys":3,"analysi":[3,10,13],"analyz":14,"angl":[13,15,21,24],"ani":[3,15,16,24,30],"anim":4,"annot":21,"anoth":6,"answer":3,"apertur":2,"api":5,"appli":20,"approach":[0,3],"approx":24,"apt":6,"architectur":[16,18],"area":[21,24],"area_squaredcircl":[10,23,24],"arg":[15,19,20,21],"argument":[7,15,19,21],"argv":12,"around":7,"array":[14,15,17,18,21],"arraylik":[10,13,18,20,24],"assertionerror":15,"assum":[14,15,21],"atm":19,"attribut":21,"auto":3,"automat":21,"avail":[2,3,4,6,7],"averag":[15,21],"avoid":[2,15],"axi":[14,15,21],"b":24,"back":18,"bar":[2,15],"base":[2,7,19,20,21,31],"basetemp":3,"baseupscal":[10,13,21],"batch":18,"becaus":21,"befor":[3,15,16,18,21],"behavior":[18,22],"benchmark":31,"best":18,"bin":[2,6],"binari":[3,5],"biofilm":2,"black":3,"blackoil":2,"blob":17,"block":[15,21,24],"block_sidelength":15,"boltzmann_const":[10,23,29],"bool":[14,15,18,19,21,30],"bottom":[2,24],"boundari":[2,7],"branch":6,"brew":5,"broadcast":15,"bs":18,"build":[2,3,5,13,18,20],"build_model":[10,13,18],"build_opm_mpi":6,"built":[6,18],"bwr":4,"c":[2,4,15],"ca":24,"cake":[2,21,24,30],"calcit":31,"calcul":[15,20,21,24],"calculate_radii":[10,13,15],"calculate_wi":[10,13,15,21],"call":[4,13,17,20,24],"can":[2,3,4,6,9,16,18,19,21,24,26],"capabl":22,"capillari":2,"care":21,"carlson":2,"cartesian":[2,15,21],"cartesian2d":2,"case":[14,21],"ccus":5,"cd":6,"cell":[2,7,15,16,21,24],"cell_boundary_radii":21,"cell_center_radii":21,"cell_height":21,"cell_siz":[10,23,24],"cemrac":17,"center":[0,24],"cf":24,"cfd":31,"cformat":4,"challeng":0,"chang":[2,3,14,19],"chappui":24,"check":[3,6,16,21,31],"checker":3,"checkout":6,"chemic":29,"choos":7,"chosen":7,"chunk":17,"ci":[3,6],"ci_pycopm_maco":3,"circl":24,"class":[19,20,21],"classmethod":20,"click":4,"clone":6,"cmake":6,"cnum":4,"co2":[2,5,24,31],"co2brinepvt":[10,23,24],"co2eor":[2,7],"co2stor":[2,4,7,30],"coars":21,"coarser":2,"code":[3,6,10],"collabor":3,"column":24,"com":[4,6,7,16,17,21],"combin":15,"command":[4,6],"commit":3,"common":[6,15,17],"compact_format":[10,23,30],"comparison":21,"compil":18,"complain":21,"complet":20,"complex":15,"comput":[15,24],"compute_output_shap":[13,20],"concept":5,"config":20,"configur":[1,4,5,7],"configuration_fil":[6,7],"connect":18,"consid":[2,4],"constain":1,"constant":[14,15,16,18,24,29],"contain":[3,14,15,16,18,19,24,26],"content":[1,3,5,8],"contribut":[0,5,6],"control":24,"convers":29,"convert":2,"convolution2d":17,"coord2d":2,"coord3d":2,"coordin":2,"copi":[3,6,17],"core":[1,2,8,10,30],"corner":30,"correct":[15,21,24],"correspond":[2,21],"cos":2,"cov":3,"cover":15,"cp":2,"cpg3d":2,"cplog":2,"creat":[1,3,6,15,19,30],"create_3dgrid":[10,23,30],"create_d":[13,21],"create_ensembl":[10,13,15],"csp":[2,31],"cssr":[0,4,6,7,16],"csv":[16,18],"current":[3,6,7],"current_directori":6,"cyclic":5,"d":[2,4,21],"d3_grid":[10,23,30],"data":[4,15,18,19,20,21,24,27],"data_gener":4,"data_max":[13,20],"data_max_":20,"data_min":[13,20],"data_min_":20,"data_wi":[10,23,24],"datapoint":14,"dataset":[15,18,19,21],"day":[2,21],"dcmake_build_typ":6,"dcmake_prefix_path":6,"deal":[15,16],"debug":26,"decay":18,"decid":16,"deck":[2,7,9,15,16,19,30],"dedic":6,"default":[2,7,14,15,16,18,19,20,21,22,24,26,30],"default_rng":22,"defin":[2,7],"definit":2,"degre":2,"delet":19,"delta_x":24,"dens":17,"densiti":24,"depend":[3,6,15,21],"deprec":[16,19],"depth":[2,18],"describ":[2,3,4,7],"descript":2,"determin":[15,22],"determinist":22,"dev":[3,6],"develop":[6,7],"diamet":2,"dic":[25,28,30],"dict":[15,16,26,30],"dictionari":[15,16,26,30],"differ":[2,4,7,9,14,15,16,18,19,29],"digit":30,"dimens":[14,15],"dimension":[15,20],"dir":2,"direct":[2,7,9,15,16],"directori":[3,15],"disabl":[20,21],"disk":17,"disregard":15,"disregard_first_xcel":21,"distanc":7,"distribut":15,"divid":21,"dmar":2,"doc":3,"docstr":21,"document":[2,3,6,7,9],"doe":[6,18,19,24],"doi":24,"domain":2,"done":[6,20,21],"download":6,"dpi":4,"driesner":24,"driven":21,"ds":19,"dsfile":18,"dtype":19,"due":24,"dure":4,"duse_mpi":6,"dwith_ndebug":6,"dxarray":30,"e":[2,3,4,6,7,9,15,18,21,24],"eaceman":24,"earli":18,"easili":[16,26],"ecl_fil":19,"ecl_keyword":15,"eclfil":19,"edg":6,"effect":2,"efficient_sampl":15,"egrid":7,"either":[6,19,24,26],"element":[2,20,21,24],"els":[6,15],"em":31,"email":3,"en":29,"enabl":[2,22],"enable_determin":[10,13,22],"end":[4,19],"ensembl":[10,13,18,19,21,22,30],"ensemble_path":15,"ensemble_s":15,"enterpris":6,"entri":2,"environ":[3,6],"epoch":[18,19],"equal":[2,14,15,21,24],"equidist":2,"equilibrium":24,"equival":[21,24],"equivalent_well_radius":[10,23,24],"error":[15,19,20,21,26,30],"etc":[7,21,24,30],"evalu":[2,18],"everi":15,"exampl":[2,5,7,16,19,24],"except":[2,15],"execut":[1,2,3,4,6,7,9,12],"executions_per_tri":18,"exist":18,"explain":2,"explan":[20,21],"explos":17,"exponenti":2,"export":[3,18],"export_model":[10,13,17],"exprecc":5,"extend":[2,3,7,16],"extra":2,"extract":[15,19,21],"extract_featur":[10,13,15],"f":4,"f0nzie":14,"faci":2,"factor":[2,15,24],"fail":15,"failed_indic":15,"fals":[15,18,19,21],"familiar":3,"far":[20,30],"faster":15,"favor":19,"fcnn":18,"featur":[0,13,14,15,16,18,19,20,21],"feature_array":15,"feature_index":21,"feature_nam":[14,18],"feature_rang":[13,18,20],"feature_range_":20,"fi":6,"fidel":15,"fig":27,"figur":27,"file":[1,3,4,5,6,7,9,15,16,17,18,19,25,26,27,30],"file_format":19,"filenam":[17,26],"filenotfounderror":18,"fill":[16,26],"fill_templ":[10,23,26],"final":2,"fine":[15,21,24],"finit":24,"finnest":2,"first":[2,14,15,18,21,30],"fit":[18,20],"fix":[3,14,15,21,24],"flag":[2,9,15],"flexibl":7,"float":[14,15,17,18,21,24,29],"float32":19,"float64":24,"flow":[1,2,3,5,7,9,15,21,28,30,31],"flow_gaswater_dissolution_diffus":16,"flow_maco":3,"flow_path":15,"fluid":[2,7,24],"fluidflow":31,"fluidmatrixinteract":17,"fluxnum":30,"foam":[2,7],"folder":[1,2,3,4,5,6,7,15,19,30],"follow":[2,4,6,7,9,15,20,21],"fork":[0,3],"form":[19,21],"format":[3,17,30],"former":19,"formula":[5,10,15,23],"found":[4,15],"four":2,"frac":[15,24],"fractalmanifold":17,"fraction":[2,15],"framework":[7,31],"from_config":[13,20],"from_gener":19,"full":[2,15,21,22],"fulli":[15,18],"funciton":3,"function":[2,6,7,12,15,16,18,19,20,21,22,24,25,27,28,30],"fund":0,"furthermor":21,"futur":21,"g":[2,3,4,6,7,9,15,18,21,24],"gas":[4,7,24],"gas_const":29,"gb":[15,24],"generat":[2,3,4,7,9,15,19,20,22,31],"generate_fluxnum":[10,23,30],"generate_geolog":[10,23,30],"generate_multpv":[10,23,30],"generate_pcfact":[10,23,30],"generate_permfact":[10,23,30],"generate_saturation_functions_format_1":[10,23,30],"generate_saturation_functions_format_2":[10,23,30],"geographi":30,"geolog":[1,15,30,31],"geometri":[2,30],"geotherm":24,"get":[2,3,6,18,21],"get_2dgrid":[10,23,30],"get_analytical_pi":[13,21],"get_analytical_wi":[13,21],"get_config":[13,20],"get_data_wi":[13,21],"get_fcnn":[10,13,18],"get_flag":[10,13,15],"get_gru":[10,13,18],"get_homogeneous_valu":[13,21],"get_horizontically_integrated_valu":[13,21],"get_lstm":[10,13,18],"get_radii":[13,21],"get_rnn":[10,13,18],"get_spac":[10,23,30],"get_timestep":[13,21],"get_vertically_averaged_valu":[13,21],"get_weight":[13,20],"gif":[4,7,31],"gigatonn":0,"git":[4,6],"github":[2,3,4,6,7,14,16,17],"give":19,"given":[2,7,15,18,19,24,26],"global":[22,30],"glorot_norm":18,"glorot_uniform":18,"gravitational_acceler":[10,23,24,29],"graviti":24,"grid":[2,4,6,7,15,21,24,30],"gridfil":15,"grom":15,"ground":5,"h":24,"h2biofilm":2,"h2ch4":7,"h2core":2,"h2o":4,"h2store":[2,7],"handl":30,"handle_cor":[10,23,30],"handle_zeros_in_scal":[10,13,18],"hat":6,"height":[21,24],"hello":5,"hello_world":4,"help":[2,3,6],"helper":[26,27],"henc":[20,21],"heterogen":7,"hidden":18,"hidden_dim":18,"high":15,"higher":[2,15,20],"highlight":14,"histori":31,"hole":24,"homebrew":6,"homogen":[14,21],"horizont":21,"host":7,"howev":[16,21,24],"hp":18,"hpc":0,"hpp":16,"html":[3,14,20],"https":[4,6,7,14,16,17,20,21,29],"hydrogen":2,"hydrostat":24,"hydrostatic_fluid":[10,23,24],"hydrostatic_ga":[10,23,24],"hyperparamet":18,"hysteresi":2,"ideal":24,"ident":15,"ignor":[2,3,22],"imag":31,"imbibit":2,"impact":4,"implement":[7,16,21],"import":3,"improv":[18,30],"in_fil":25,"inc":[15,30],"inc_fold":30,"includ":[6,18,30],"increas":21,"index":[5,15,24],"indic":15,"individu":[15,20],"induc":31,"init":7,"init_keyword":15,"initi":[2,15,18,20],"initialphas":2,"inj":2,"inj_rate_index":21,"inject":[2,5,7,15,21,24],"injection_r":15,"injector":24,"inlet":2,"inner":15,"input":[1,2,4,7,14,15,16,18,19,20,21,25,30],"input_kw":19,"input_shap":20,"inputvalu":[10,23],"insid":[6,7,15,21,24],"inspir":14,"instal":[3,4,5,16,24],"instanc":21,"instanti":19,"instead":[2,7,15,21,24],"instruct":6,"int":[14,15,16,18,20,21,22],"integ":15,"integr":[10,13,15,21],"integrate_fine_scale_valu":[10,13,15],"intend":30,"interest":[4,6,24,31],"interim":6,"intermitt":4,"internal":[18,21],"interval":[4,15],"introduc":20,"introduct":5,"invalid":[16,18],"invers":20,"io":14,"is_adapt":[13,20],"issu":[0,5],"iter":2,"j":[24,29],"j5":6,"k":[24,29],"k_":24,"k_h":24,"k_r1":24,"k_r2":24,"keep":[15,30],"keep_result_fil":15,"kept":14,"kera":[14,17,18,20],"keras_tun":18,"kerasifi":[10,13,18],"kernel_initi":18,"key":[15,16],"keyerror":19,"keyword":[2,15,19],"keyword_sc":15,"kg":[2,24],"killough":2,"krn":2,"krw":2,"kwarg":[14,15,18,20,21,30],"kxi":2,"kz":2,"l":6,"lami":24,"larg":17,"larger":15,"last":[2,15,18],"latter":19,"law":24,"layer":[2,7,15,16,17,18,20,21],"leakag":31,"learn":[3,5,6,16,18,20],"least":[15,16],"left":[2,24],"legend":14,"len":19,"len_vari":15,"length":[2,7,15],"lie":24,"ligther":6,"limit":[2,7],"limmit":2,"line":[2,3,6,14,15,18,19],"linear":24,"link":6,"lint":[6,20],"linux":5,"list":[7,14,15,16,18,19,20,21,30],"liter":[14,18,19,24],"ln":24,"load":[18,26],"local":[3,16,22],"local_feature_nam":16,"locat":[1,2],"log":[15,18],"look":[2,3],"loop":[4,16],"loss":18,"loss_func":18,"low":15,"lower":15,"lr":18,"lr_patienc":18,"lr_tune":18,"lstm":17,"m":[2,4,6,7,9,21,24,29],"machin":[2,3,5,6,16],"machine_learning_compil":14,"maco":[3,5],"macport":6,"main":[1,3,10,11,12,13,14,17,19],"main_plot":14,"maintain":3,"make":[3,6,21,22],"mako":[2,10,15,23,30],"makofil":[15,16],"mamba":6,"manag":6,"manage_grid":[10,23,30],"manage_sect":[10,23,30],"manage_t":[10,23,30],"mani":[2,20],"mantain":3,"manual":[2,19],"mark":19,"mass":[2,24],"master":6,"match":31,"materi":17,"math":[15,24],"mathbf":24,"mathemat":24,"matplotlib":27,"max":[2,14,15,20],"max_trial":18,"maximum":[2,15],"may":15,"md":[2,21],"meanabsolutepercentageerror":18,"meansquaredlogarithmicerror":18,"meanwhil":14,"measur":14,"member":[15,21,30],"memori":[15,17],"memory_efficient_sampl":[10,13,15],"mention":30,"merg":3,"mesh":15,"method":[18,19,21,24],"micp":5,"microbi":31,"microsystem":31,"might":[3,6,15,16,19,20,31],"min":[2,13,14,15,20],"miniforg":6,"minmax":20,"minmaxsc":[18,20],"minmaxscal":[18,20],"minmaxscalerlay":[10,13,20],"minmaxunscalerlay":[10,13,20],"miss":[3,21],"mixin":20,"mkdir":6,"ml":[1,4,6,8,10],"ml_near_wel":[6,16],"ml_tool":17,"mode":[14,15],"model":[1,2,4,7,14,16,17,18,24,30,31],"model_input":18,"modifi":[6,9,18],"modul":[1,5,8,31],"mol":[24,29],"molecular":24,"molecule_mass":24,"moment":[16,20],"mpi":6,"mpirun":2,"mse":18,"mu":24,"mu_1":24,"mu_2":24,"multipl":21,"multipli":2,"multpv":30,"must":[15,21],"mypi":[3,21],"n":[3,30],"name":[7,14,15,16,18],"ndarray":[14,15,18,21,24,30],"near":[3,4,6,7,18,21],"nearwel":15,"necessari":[2,30],"need":[3,6,15,16,19,20,21,24,30],"negat":24,"network":[14,16,18],"neural":[14,16,18],"neuron":18,"new":[0,2,3,15,30],"newton":2,"nice":[3,6],"ninput":18,"nkrn":2,"nkrw":2,"nn":[10,13],"no_disgas_no_diffus":30,"non":2,"none":[12,14,15,16,18,20,22,26,27],"normal":18,"notat":30,"note":[14,15,16,18,19,21,22],"noutput":18,"now":[2,21],"np":[2,14,15,18,21,22,24],"npen":2,"npoint":[2,15],"num_cel":[15,19],"num_dim":15,"num_ensemble_run":21,"num_featur":[15,21],"num_fil":19,"num_input":14,"num_lay":[13,21],"num_memb":15,"num_report_step":[15,19],"num_timestep":[13,21],"num_vari":15,"num_x_cel":15,"num_xcel":[13,21],"num_zcel":[13,21],"number":[0,2,7,14,15,16,18],"numer":24,"numpi":[15,22],"o":[4,7],"object":[18,19,21],"on_epoch_end":[13,19],"onc":16,"one":[2,4,7,9,15,19,21],"onli":[4,6,7,15,16,18,20,21,24,30],"onlin":6,"open":[6,31],"opm":[1,2,3,5,7,9,15,16,17,19,21,24,30,31],"opm_path":16,"option":[2,7,14,15,16,18,21,22,24,26,30],"order":[15,20],"org":[6,20,29],"origin":[18,24],"outer":15,"outlet":2,"output":[2,4,5,7,14,16,18,20],"output_signatur":19,"overload":15,"overridden":21,"overview":5,"p":24,"p_":[15,24],"p_0":24,"p_gb":24,"p_w":[15,24],"pa":24,"pack":17,"packag":[0,1,3,5,7,8],"page":[3,5],"paper":4,"parallel":16,"paramet":[4,5,14,15,16,18,19,20,21,22,24,26,27,30],"pars":19,"part":[16,30],"partial":15,"particular":15,"partit":2,"pass":[15,18,19,24,26],"path":[2,3,14,15,16,18,19,21,24,26,27,30],"pathlib":[14,15,16,18,21,24,26,27,30],"patienc":18,"pcap":2,"pcfact":30,"peaceman":24,"peaceman_matrix_wi":[10,23,24],"peaceman_wi":[10,23,24],"pen":2,"per":[2,16,21],"perfor":2,"perform":14,"period":2,"perm":[2,15],"permeabilti":24,"permeabl":[15,21,24],"permfact":30,"phase":[2,24],"phase_properti":24,"phi":2,"physic":[2,7,29],"pi":[2,15,24],"pickl":27,"pip":[3,4,6],"pipe":2,"place":21,"platform":6,"pleas":[0,3],"plopm":[4,5,6,7,9],"plot":[7,10,14,23],"plot_analysi":[10,13,14],"pngs":[7,31],"pofff":5,"point":[4,15,24,30],"pointless":21,"pore":2,"poro":2,"possibl":[3,15,20,21,30],"postprocess":9,"practic":2,"precipit":[4,31],"prefer":3,"preprocess":[9,18,20,25],"prerequisit":6,"pressur":[2,4,7,15,21,24],"pressure_index":21,"prevent":17,"previous":[2,3,6,7],"print":[2,7],"problem":5,"proceed":2,"process":[1,17,25],"process_input":[10,23,25],"process_tun":[10,23,25],"produc":[2,24],"product":[4,15,24],"project":[0,6,31],"properti":[2,7,20,21,24],"protocol":21,"provid":[15,18,19,20,21,24,29],"prs":3,"ptwo":24,"public":[5,7],"publish":4,"pull":[0,3],"push":3,"pushd":3,"pv":2,"pvmult":2,"pvt":7,"pwd":6,"py":17,"py312":3,"pycopm":[3,5,6],"pylint":[3,20,21],"pymm":5,"pyopmnearwel":[2,3,4,6,7,9],"pyopmnearwell_correct":[10,23,24],"pyopmspe11":5,"pyplot":27,"pytest":3,"python":[2,3,5,21,22,31],"python3":6,"q":[15,24],"quadrat":24,"quantiti":[15,24],"quick":31,"r":[3,6,24],"r_":24,"r_e":24,"r_w":24,"radial":[2,4,15,21,24],"radial_grid":24,"radial_valu":15,"radii":[15,21,24],"radii_fil":21,"radius":[15,24],"raidal":15,"rais":[0,3,15,16,18,19,20,21,24,26],"random":[15,18,21,22],"random_norm":14,"random_uniform":14,"rang":[7,15,18],"rate":[2,4,15,18,21,24],"ratio":24,"read":4,"read_data":[13,19],"read_data_on_init":19,"recalc_":30,"recalc_grid":[15,30],"recalc_sect":[15,30],"recalc_t":[15,30],"recalcul":[15,30],"recent":6,"recompil":[16,18],"recompile_flow":[10,13,16],"recompile_model":18,"reconstruct":20,"record":2,"recov":24,"recurr":18,"red":6,"reduc":[21,30],"reduce_data_s":[13,21],"refer":24,"reference_pressur":24,"refin":7,"region":[15,31],"reinject":2,"rel":2,"relat":[3,5,9,24,30],"relationship":2,"relax":2,"releas":[6,7],"relu":18,"remedi":31,"remov":[6,21],"render":[15,26],"replac":[3,16],"repo":[3,6,16],"report":[5,15],"repositori":[1,2,3,6],"request":[0,3],"requir":[3,6,15,30],"requiri":25,"resdata":19,"resdata_dataset":[10,13],"resdata_fil":19,"resdatafil":19,"resdatafile_to_datapoint":[13,19],"resdataset":[10,13,19],"reservoir":[5,7,24,31],"reservoir_fil":[10,15,23,30],"resinsight":[4,6,9],"resolution_1":14,"resolution_2":14,"resourc":[0,24],"respons":15,"result":[2,4,6,7,9,15,21,24],"retir":7,"return":[14,15,16,18,19,20,21,24,26,27,30],"return_outer_inn":15,"review":3,"rho":24,"rho_1":24,"rho_2":24,"right":[2,24],"rise":3,"rock":[5,7],"round_like_":[10,23,30],"routin":[7,17],"row":[16,18],"rst":2,"ruff":3,"rule":5,"run":[2,3,4,6,7,9,10,15,16,19,21,23,30],"run_ensembl":[10,13,15],"run_integr":[10,13,16],"runspec":[15,16],"runtim":21,"s":[3,4,18,24,26,29],"safu":2,"salt":4,"saltprec":[2,7],"sampl":[14,15,19],"sample_weight":18,"sand":2,"sat":2,"satur":[2,4,7,15,21,30],"save":[4,9,14,15,16,18,19,27],"save_fig_and_data":[10,23,27],"save_tune_result":[10,13,18],"saved_model":18,"savepath":[14,15,16,18],"scalar":[13,20],"scale":[15,16,18,20,21,24],"scale_and_evalu":[10,13,18],"scale_and_prepare_dataset":[10,13,18],"scaler":20,"scaler_lay":[10,13],"scalerlay":[10,13,20],"scalingsfil":[16,18],"schedul":[2,7],"scikit":20,"scott":24,"screenshot":9,"script":[1,2,3,6,12,26],"search":[5,18],"second":[2,4,14,21,30],"section":[2,4],"see":[2,3,4,6,9,20,21],"seed":[15,22],"seek":5,"seen":2,"select":[2,9,21],"self":[19,20,21],"send":3,"sensit":14,"sensitivity_analysi":[10,13,14],"seri":2,"serial":20,"set":[2,6,7,14,18,20,22,25],"set_weight":[13,20],"setup_ensembl":[10,13,15],"setuptool":6,"seven":[2,3],"sever":21,"sgas":4,"sgfn":30,"sgof":30,"sh":6,"shall":19,"shape":[14,15,19,20,21],"short":2,"show":[2,9],"shown":2,"shuffl":[18,19],"shuffle_on_epoch_end":19,"shut":2,"side":[2,15,24],"sidelength":[15,24],"sigmoid":18,"signific":30,"similar":[21,24],"simmul":15,"simpli":6,"simplifi":7,"simul":[0,2,4,6,7,9,10,15,16,21,23,24,28,31],"simulation_length":21,"sinc":[2,21],"singl":[2,3,7,9,14],"single_feature_shap":[13,21],"site":31,"size":[2,15,16,18,21,24,30],"skip":6,"sklearn":[18,20],"sl":2,"smspec":15,"sni":2,"softwar":[0,5],"solut":[15,24],"soon":3,"sourc":[3,5,29,31],"sparsiti":21,"spe":2,"spe11":31,"specif":[6,7,14],"specifi":[15,16,18],"speed":2,"split":18,"sqare":24,"squar":[15,24],"squash":3,"src":[2,3],"stabl":20,"stackoverflow":21,"standardwel":16,"standardwell_impl":16,"standardwell_impl_templ":16,"standardwell_templ":16,"start":[4,15],"state":18,"statement":21,"static":3,"stencil":16,"stencil_s":16,"step":[2,3,6,15,21],"step_size_cel":15,"step_size_t":21,"step_size_tim":15,"step_size_x":21,"still":16,"stop":18,"storag":[0,2,31],"store":[15,19],"store_dataset":[10,13,15],"str":[14,15,16,18,19,24,26,27,30],"string":[2,21,26],"struct":17,"studi":[4,28,31],"subclass":21,"submodul":[1,8,10],"subpackag":[1,5,8],"subsurfac":0,"subsystem":6,"succed":6,"succeed":3,"suffic":21,"sum":21,"summari":9,"summary_keyword":15,"supercrit":24,"support":[2,5,6,7],"sure":[22,24],"surfac":2,"surface_dens":21,"sustain":0,"svg":27,"sw":2,"swfn":30,"swi":2,"system":3,"t":[4,15,21,24,26],"tabl":[7,15,30],"tag":6,"tailor":31,"take":[14,15,21,24],"taken":[14,15,21,30],"tanh":18,"tap":6,"target":[3,13,15,18,19,21],"target_kw":19,"target_rang":18,"telescop":2,"temper":15,"temperatur":[2,7,21,24],"templat":[1,2,7,15,16,26,30],"tensor":[15,18,19,20],"tensor2d":2,"tensor3d":2,"tensord2d":2,"tensorflow":[3,6,15,18,19,20,22],"tensorspec":19,"term":3,"termin":[4,6],"test":[2,3,6,7,15,18,20],"test_output":3,"test_split":18,"text":26,"tf":[18,19],"theta":2,"thick":[2,24],"third":14,"three":[2,20],"threshold":2,"thus":15,"time":[2,4,15,24],"timestep":21,"todo":[7,15,24],"toml":[2,4,6,7],"tool":[1,3,4,6,7,9,16,31],"top":[2,4],"total":15,"toward":2,"train":[10,13,18],"train_data":18,"train_split":18,"transform":[15,17,18,19,20],"treat":21,"tri":[3,6],"triangl":[15,24],"triangle_grid":[15,24],"triangular":24,"true":[2,14,15,18,19,21,30],"trust":6,"tsmaxz":2,"tube":2,"tune":[2,10,13,18,25],"tuner":18,"tupl":[14,15,18,19,20,21],"turn":6,"tutori":[3,6],"two":[2,16,18,21],"two_phase_peaceman_wi":[10,23,24],"txt":[3,6],"type":[2,6,14,15,18,19,20,21,24,26,29,30,31],"ubuntu":[3,6],"uniform":15,"union":16,"unit":[10,15,18,21,23,24],"unitless":15,"universal":24,"universal_gas_const":[10,23,29],"unrst":[7,15,19],"unscal":20,"updat":[6,15],"upgrad":6,"upscal":[10,13],"use":[0,1,2,3,4,6,7,9,15,16,18,19,21,22,24,26,30,31],"user":[2,3,6,15],"usual":[15,21],"util":[1,2,8,10,13],"utilil":22,"utiliy":25,"v":[4,7,30],"v2026":6,"val":18,"val_data":18,"val_loss":18,"val_split":18,"valid":18,"valu":[2,7,14,15,16,18,19,20,21,24,25,30],"valueerror":[15,16,18,20,24],"var":26,"vari":[14,15],"variabl":[2,3,7,9,14,15,16,26,30],"variat":14,"various":15,"venv":6,"veri":17,"version":[3,6,10,21],"vertic":[15,16,21],"via":[6,7],"view":4,"virtual":6,"viscos":24,"visit":3,"visual":[4,6,9],"volum":[2,4,21,24],"vpyopmnearwel":6,"vtks":31,"w":[7,24],"want":2,"warn":[7,20],"water":[2,4,24],"weight":[18,20],"welcom":[0,3],"well":[3,4,5,6,7,15,16,21,24],"well_radius":21,"well_typ":24,"wellbor":24,"went":15,"wet":2,"wheel":6,"whether":[14,15,18,30],"whole":7,"wi":[15,21,24],"wi_array":15,"width":2,"wiki":29,"wikipedia":29,"will":[3,6,15,21,30],"window":5,"within":15,"without":[6,18,24],"work":[3,6,19,24,30],"world":5,"write":[1,2,6,7,17,30],"write_activ":17,"write_convolution2d":[10,13,17],"write_dens":[10,13,17],"write_float":[10,13,17],"write_lstm":[10,13,17],"writefil":[10,23],"wrong":15,"wsl":6,"x":[2,7,14,15,21,30],"x_":24,"xcn":2,"xdim":2,"xfac":2,"xformat":4,"y":[2,6,7],"yapparova":24,"yet":[3,20,21],"yformat":4,"yml":[3,6],"z":[2,7],"zero":[15,24],"zxi":2},"titles":["About pyopmnearwell","pyopmnearwell Python API","Configuration file","Contributing","Examples","Welcome to pyopmnearwell\u2019s documentation!","Installation","Introduction","pyopmnearwell","Output folder","pyopmnearwell package","pyopmnearwell.core package","pyopmnearwell.core.pyopmnearwell module","pyopmnearwell.ml package","pyopmnearwell.ml.analysis module","pyopmnearwell.ml.ensemble module","pyopmnearwell.ml.integration module","pyopmnearwell.ml.kerasify module","pyopmnearwell.ml.nn module","pyopmnearwell.ml.resdata_dataset module","pyopmnearwell.ml.scaler_layers module","pyopmnearwell.ml.upscale module","pyopmnearwell.ml.utils module","pyopmnearwell.utils package","pyopmnearwell.utils.formulas module","pyopmnearwell.utils.inputvalues module","pyopmnearwell.utils.mako module","pyopmnearwell.utils.plotting module","pyopmnearwell.utils.runs module","pyopmnearwell.utils.units module","pyopmnearwell.utils.writefile module","Related"],"titleterms":{"About":0,"ad":31,"addit":2,"analysi":14,"api":1,"binari":6,"brew":6,"build":6,"ccus":4,"co2":4,"concept":7,"configur":2,"content":[10,11,13,23],"contribut":3,"core":[11,12],"cyclic":4,"document":5,"ensembl":15,"exampl":4,"exprecc":31,"file":2,"flow":6,"folder":9,"formula":[6,24],"ground":3,"hello":4,"indic":5,"inject":4,"inputvalu":25,"instal":6,"integr":16,"introduct":7,"issu":3,"kerasifi":17,"learn":4,"linux":6,"machin":4,"maco":6,"mako":26,"micp":31,"ml":[13,14,15,16,17,18,19,20,21,22],"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"nn":18,"opm":6,"output":9,"overview":7,"packag":[6,10,11,13,23],"paramet":2,"plopm":31,"plot":27,"pofff":31,"problem":3,"public":4,"pycopm":31,"pymm":31,"pyopmnearwel":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"pyopmspe11":31,"python":[1,6],"relat":[2,31],"report":3,"resdata_dataset":19,"reservoir":2,"rock":2,"rule":3,"run":28,"s":5,"scaler_lay":20,"seek":3,"softwar":3,"sourc":6,"submodul":[11,13,23],"subpackag":10,"support":3,"tabl":5,"unit":29,"upscal":21,"util":[22,23,24,25,26,27,28,29,30],"welcom":5,"well":2,"window":6,"world":4,"writefil":30}}) \ No newline at end of file +Search.setIndex({"alltitles":{"About pyopmnearwell":[[0,null]],"Additional parameters":[[2,"additional-parameters"]],"Binary packages":[[6,"binary-packages"]],"Brew formula for macOS":[[6,"brew-formula-for-macos"]],"CCUS (machine learning)":[[4,"ccus-machine-learning"]],"CO2 cyclic injection":[[4,"co2-cyclic-injection"]],"Concept":[[7,"concept"]],"Configuration file":[[2,null]],"Contribute to the software":[[3,"contribute-to-the-software"]],"Contributing":[[3,null]],"Examples":[[4,null]],"Ground Rules":[[3,"ground-rules"]],"Hello world":[[4,"hello-world"]],"Indices and tables":[[5,"indices-and-tables"]],"Installation":[[6,null]],"Introduction":[[7,null]],"Module contents":[[10,"module-pyopmnearwell"],[11,"module-pyopmnearwell.core"],[13,"module-pyopmnearwell.ml"],[23,"module-pyopmnearwell.utils"]],"OPM Flow":[[6,"opm-flow"]],"Output folder":[[9,null]],"Overview":[[7,"overview"]],"Publications":[[4,"publications"]],"Python package":[[6,"python-package"]],"Related":[[31,null]],"Reporting issues or problems":[[3,"reporting-issues-or-problems"]],"Reservoir-related parameters":[[2,"reservoir-related-parameters"]],"Rock-related parameters":[[2,"rock-related-parameters"]],"Seek support":[[3,"seek-support"]],"Source build in Linux/Windows":[[6,"source-build-in-linux-windows"]],"Source build in macOS":[[6,"source-build-in-macos"]],"Submodules":[[11,"submodules"],[13,"submodules"],[23,"submodules"]],"Subpackages":[[10,"subpackages"]],"Welcome to pyopmnearwell\u2019s documentation!":[[5,null]],"Well-related parameters":[[2,"well-related-parameters"]],"ad-micp":[[31,"ad-micp"]],"expreccs":[[31,"expreccs"]],"plopm":[[31,"plopm"]],"pofff":[[31,"pofff"]],"pycopm":[[31,"pycopm"]],"pymm":[[31,"pymm"]],"pyopmnearwell":[[1,"pyopmnearwell"],[8,null]],"pyopmnearwell Python API":[[1,null]],"pyopmnearwell package":[[10,null]],"pyopmnearwell.core package":[[11,null]],"pyopmnearwell.core.pyopmnearwell module":[[12,null]],"pyopmnearwell.ml package":[[13,null]],"pyopmnearwell.ml.analysis module":[[14,null]],"pyopmnearwell.ml.ensemble module":[[15,null]],"pyopmnearwell.ml.integration module":[[16,null]],"pyopmnearwell.ml.kerasify module":[[17,null]],"pyopmnearwell.ml.nn module":[[18,null]],"pyopmnearwell.ml.resdata_dataset module":[[19,null]],"pyopmnearwell.ml.scaler_layers module":[[20,null]],"pyopmnearwell.ml.upscale module":[[21,null]],"pyopmnearwell.ml.utils module":[[22,null]],"pyopmnearwell.utils package":[[23,null]],"pyopmnearwell.utils.formulas module":[[24,null]],"pyopmnearwell.utils.inputvalues module":[[25,null]],"pyopmnearwell.utils.mako module":[[26,null]],"pyopmnearwell.utils.plotting module":[[27,null]],"pyopmnearwell.utils.runs module":[[28,null]],"pyopmnearwell.utils.units module":[[29,null]],"pyopmnearwell.utils.writefile module":[[30,null]],"pyopmspe11":[[31,"pyopmspe11"]]},"docnames":["about","api","configuration_file","contributing","examples","index","installation","introduction","modules","output_folder","pyopmnearwell","pyopmnearwell.core","pyopmnearwell.core.pyopmnearwell","pyopmnearwell.ml","pyopmnearwell.ml.analysis","pyopmnearwell.ml.ensemble","pyopmnearwell.ml.integration","pyopmnearwell.ml.kerasify","pyopmnearwell.ml.nn","pyopmnearwell.ml.resdata_dataset","pyopmnearwell.ml.scaler_layers","pyopmnearwell.ml.upscale","pyopmnearwell.ml.utils","pyopmnearwell.utils","pyopmnearwell.utils.formulas","pyopmnearwell.utils.inputvalues","pyopmnearwell.utils.mako","pyopmnearwell.utils.plotting","pyopmnearwell.utils.runs","pyopmnearwell.utils.units","pyopmnearwell.utils.writefile","related"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","configuration_file.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","output_folder.rst","pyopmnearwell.rst","pyopmnearwell.core.rst","pyopmnearwell.core.pyopmnearwell.rst","pyopmnearwell.ml.rst","pyopmnearwell.ml.analysis.rst","pyopmnearwell.ml.ensemble.rst","pyopmnearwell.ml.integration.rst","pyopmnearwell.ml.kerasify.rst","pyopmnearwell.ml.nn.rst","pyopmnearwell.ml.resdata_dataset.rst","pyopmnearwell.ml.scaler_layers.rst","pyopmnearwell.ml.upscale.rst","pyopmnearwell.ml.utils.rst","pyopmnearwell.utils.rst","pyopmnearwell.utils.formulas.rst","pyopmnearwell.utils.inputvalues.rst","pyopmnearwell.utils.mako.rst","pyopmnearwell.utils.plotting.rst","pyopmnearwell.utils.runs.rst","pyopmnearwell.utils.units.rst","pyopmnearwell.utils.writefile.rst","related.rst"],"indexentries":{},"objects":{"":[[10,0,0,"-","pyopmnearwell"]],"pyopmnearwell":[[11,0,0,"-","core"],[13,0,0,"-","ml"],[23,0,0,"-","utils"]],"pyopmnearwell.core":[[12,0,0,"-","pyopmnearwell"]],"pyopmnearwell.core.pyopmnearwell":[[12,1,1,"","main"]],"pyopmnearwell.ml":[[14,0,0,"-","analysis"],[15,0,0,"-","ensemble"],[16,0,0,"-","integration"],[17,0,0,"-","kerasify"],[18,0,0,"-","nn"],[19,0,0,"-","resdata_dataset"],[20,0,0,"-","scaler_layers"],[21,0,0,"-","upscale"],[22,0,0,"-","utils"]],"pyopmnearwell.ml.analysis":[[14,1,1,"","plot_analysis"],[14,1,1,"","sensitivity_analysis"]],"pyopmnearwell.ml.ensemble":[[15,1,1,"","calculate_WI"],[15,1,1,"","calculate_radii"],[15,1,1,"","create_ensemble"],[15,1,1,"","extract_features"],[15,1,1,"","get_flags"],[15,1,1,"","integrate_fine_scale_value"],[15,1,1,"","memory_efficient_sample"],[15,1,1,"","run_ensemble"],[15,1,1,"","setup_ensemble"],[15,1,1,"","store_dataset"]],"pyopmnearwell.ml.integration":[[16,1,1,"","recompile_flow"],[16,1,1,"","run_integration"]],"pyopmnearwell.ml.kerasify":[[17,1,1,"","export_model"],[17,1,1,"","write_convolution2d"],[17,1,1,"","write_dense"],[17,1,1,"","write_floats"],[17,1,1,"","write_lstm"]],"pyopmnearwell.ml.nn":[[18,2,1,"","ArrayLike"],[18,1,1,"","build_model"],[18,1,1,"","get_FCNN"],[18,1,1,"","get_GRU"],[18,1,1,"","get_LSTM"],[18,1,1,"","get_RNN"],[18,1,1,"","handle_zeros_in_scale"],[18,1,1,"","save_tune_results"],[18,1,1,"","scale_and_evaluate"],[18,1,1,"","scale_and_prepare_dataset"],[18,1,1,"","train"],[18,1,1,"","tune"]],"pyopmnearwell.ml.resdata_dataset":[[19,3,1,"","ResDataSet"],[19,1,1,"","main"]],"pyopmnearwell.ml.resdata_dataset.ResDataSet":[[19,4,1,"","ResdataFile_to_datapoint"],[19,5,1,"","features"],[19,4,1,"","on_epoch_end"],[19,4,1,"","read_data"],[19,5,1,"","targets"]],"pyopmnearwell.ml.scaler_layers":[[20,3,1,"","MinMaxScalerLayer"],[20,3,1,"","MinMaxUnScalerLayer"],[20,3,1,"","ScalerLayer"]],"pyopmnearwell.ml.scaler_layers.MinMaxScalerLayer":[[20,4,1,"","call"],[20,4,1,"","compute_output_shape"],[20,4,1,"","from_config"],[20,4,1,"","get_config"]],"pyopmnearwell.ml.scaler_layers.MinMaxUnScalerLayer":[[20,4,1,"","call"],[20,4,1,"","compute_output_shape"],[20,4,1,"","from_config"],[20,4,1,"","get_config"]],"pyopmnearwell.ml.scaler_layers.ScalerLayer":[[20,4,1,"","_adapt"],[20,4,1,"","adapt"],[20,4,1,"","build"],[20,6,1,"","data_max"],[20,6,1,"","data_min"],[20,6,1,"","feature_range"],[20,4,1,"","get_weights"],[20,6,1,"","is_adapted"],[20,5,1,"","min"],[20,5,1,"","scalar"],[20,4,1,"","set_weights"]],"pyopmnearwell.ml.upscale":[[21,3,1,"","BaseUpscaler"],[21,3,1,"","Upscaler"]],"pyopmnearwell.ml.upscale.BaseUpscaler":[[21,5,1,"","_abc_impl"],[21,4,1,"","create_ds"],[21,4,1,"","get_analytical_PI"],[21,4,1,"","get_analytical_WI"],[21,4,1,"","get_data_WI"],[21,4,1,"","get_homogeneous_values"],[21,4,1,"","get_horizontically_integrated_values"],[21,4,1,"","get_radii"],[21,4,1,"","get_timesteps"],[21,4,1,"","get_vertically_averaged_values"],[21,4,1,"","reduce_data_size"]],"pyopmnearwell.ml.upscale.Upscaler":[[21,5,1,"","_abc_impl"],[21,5,1,"","_is_protocol"],[21,6,1,"","angle"],[21,6,1,"","num_layers"],[21,6,1,"","num_timesteps"],[21,6,1,"","num_xcells"],[21,6,1,"","num_zcells"],[21,6,1,"","single_feature_shape"]],"pyopmnearwell.ml.utils":[[22,1,1,"","enable_determinism"]],"pyopmnearwell.utils":[[24,0,0,"-","formulas"],[25,0,0,"-","inputvalues"],[26,0,0,"-","mako"],[27,0,0,"-","plotting"],[28,0,0,"-","runs"],[29,0,0,"-","units"],[30,0,0,"-","writefile"]],"pyopmnearwell.utils.formulas":[[24,1,1,"","area_squaredcircle"],[24,1,1,"","cell_size"],[24,1,1,"","co2brinepvt"],[24,1,1,"","data_WI"],[24,1,1,"","equivalent_well_radius"],[24,1,1,"","hydrostatic_fluid"],[24,1,1,"","hydrostatic_gas"],[24,1,1,"","peaceman_WI"],[24,1,1,"","peaceman_matrix_WI"],[24,1,1,"","pyopmnearwell_correction"],[24,1,1,"","two_phase_peaceman_WI"]],"pyopmnearwell.utils.inputvalues":[[25,1,1,"","process_input"],[25,1,1,"","process_tuning"]],"pyopmnearwell.utils.mako":[[26,1,1,"","fill_template"]],"pyopmnearwell.utils.plotting":[[27,1,1,"","save_fig_and_data"]],"pyopmnearwell.utils.runs":[[28,1,1,"","simulations"]],"pyopmnearwell.utils.units":[[29,7,1,"","BOLTZMANN_CONSTANT"],[29,7,1,"","GRAVITATIONAL_ACCELERATION"],[29,7,1,"","UNIVERSAL_GAS_CONSTANT"]],"pyopmnearwell.utils.writefile":[[30,1,1,"","compact_format"],[30,1,1,"","create_3dgrid"],[30,1,1,"","d3_grids"],[30,1,1,"","generate_fluxnum"],[30,1,1,"","generate_geology"],[30,1,1,"","generate_multpv"],[30,1,1,"","generate_pcfact"],[30,1,1,"","generate_permfact"],[30,1,1,"","generate_permfact_pcfact"],[30,1,1,"","generate_saturation_functions_format_1"],[30,1,1,"","generate_saturation_functions_format_2"],[30,1,1,"","generate_saturation_functions_gsf_wsf"],[30,1,1,"","get_2dgrid"],[30,1,1,"","get_spaces"],[30,1,1,"","handle_core"],[30,1,1,"","manage_grid"],[30,1,1,"","manage_sections"],[30,1,1,"","manage_tables"],[30,1,1,"","reservoir_files"],[30,1,1,"","round_like_e"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","type","Python type alias"],"3":["py","class","Python class"],"4":["py","method","Python method"],"5":["py","attribute","Python attribute"],"6":["py","property","Python property"],"7":["py","data","Python data"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:type","3":"py:class","4":"py:method","5":"py:attribute","6":"py:property","7":"py:data"},"terms":{"0f":4,"11th":2,"1e":2,"1e10":2,"2d":[21,24,30],"3060e":2,"380649e":29,"3871e":2,"3d":[2,15,24,30],"5e":2,"6120e":2,"8655e":2,"A":[15,18,19,24,26,31],"AND":19,"About":5,"After":19,"All":[14,15,16,21,30],"An":[3,4,15,31],"As":[2,21,24],"Below":31,"By":15,"Each":16,"For":[0,2,3,4,6,14,20,30],"Has":15,"Here":2,"If":[2,4,6,14,15,16,18,19,20,21,24,26,30],"In":[2,3,4,7,15,21,24],"Is":15,"It":[14,15,20],"Most":6,"Not":[21,24],"So":20,"Some":[15,19],"The":[0,1,2,3,4,6,7,9,14,15,16,18,19,21,24,26,27],"Then":[2,4,6,9],"There":[4,6],"These":4,"This":[7,15,18,19,20,21,24],"To":[2,4,6,19,30],"We":[2,3],"When":26,"While":6,"You":[4,6],"__description__":21,"__init__":21,"_abc":21,"_abc_data":21,"_abc_impl":[13,21],"_adapt":[13,20],"_build":3,"_description_":[15,19,20,21,24],"_extended_summary_":21,"_is_protocol":[13,21],"_summary_":21,"_type_":18,"abc":21,"abl":[4,6],"abov":2,"abstract":21,"abstractmethod":21,"acceler":24,"accept":3,"accord":20,"account":24,"accur":24,"achiev":4,"across":15,"action":[3,6],"activ":[2,6,18],"ad":5,"adapt":[13,20],"add":[2,3,4,6,9,14,20,30],"addit":[3,4,5,7,14,15,21],"adim":2,"adjust":24,"afterward":19,"align":30,"allow":6,"along":[7,14,15,21],"also":[3,4,6],"altern":3,"altitud":[15,24],"alway":15,"anaconda":6,"analys":3,"analysi":[3,10,13],"analyz":14,"angl":[13,15,21,24],"ani":[3,15,16,24,30],"anim":4,"annot":21,"anoth":6,"answer":3,"apertur":2,"api":5,"appli":20,"approach":[0,3],"approx":24,"apt":6,"architectur":[16,18],"area":[21,24],"area_squaredcircl":[10,23,24],"arg":[15,19,20,21],"argument":[7,15,19,21],"argv":12,"around":7,"array":[14,15,17,18,21],"arraylik":[10,13,18,20,24],"assertionerror":15,"assum":[14,15,21],"atm":19,"attribut":21,"auto":3,"automat":21,"avail":[2,3,4,6,7],"averag":[15,21],"avoid":[2,15],"axi":[14,15,21],"b":24,"back":18,"bar":[2,15],"base":[2,7,19,20,21,31],"basetemp":3,"baseupscal":[10,13,21],"bash":4,"batch":18,"becaus":21,"befor":[3,15,16,18,21],"behavior":[18,22],"benchmark":31,"best":18,"bin":[2,6],"binari":[3,4,5],"biofilm":2,"black":3,"blackoil":2,"blob":17,"block":[15,21,24],"block_sidelength":15,"boltzmann_const":[10,23,29],"bool":[14,15,18,19,21,30],"bottom":[2,24],"boundari":[2,7],"branch":6,"brew":[4,5],"broadcast":15,"bs":18,"build":[2,3,5,13,18,20],"build_model":[10,13,18],"build_opm_mpi":6,"built":[6,18],"bwr":4,"c":[2,4,15],"ca":24,"cake":[2,21,24,30],"calcit":31,"calcul":[15,20,21,24],"calculate_radii":[10,13,15],"calculate_wi":[10,13,15,21],"call":[4,13,17,20,24],"can":[2,3,4,6,9,16,18,19,21,24,26],"capabl":22,"capillari":2,"care":21,"carlson":2,"cartesian":[2,15,21],"cartesian2d":2,"case":[14,21],"ccus":5,"cd":6,"cell":[2,7,15,16,21,24],"cell_boundary_radii":21,"cell_center_radii":21,"cell_height":21,"cell_siz":[10,23,24],"cemrac":17,"center":[0,24],"cf":24,"cfd":31,"cformat":4,"challeng":0,"chang":[2,3,14,19],"chappui":24,"check":[3,6,16,21,31],"checker":3,"checkout":6,"chemic":29,"choos":7,"chosen":7,"chunk":17,"ci":[3,6],"ci_pycopm_maco":3,"circl":24,"class":[19,20,21],"classmethod":20,"click":4,"clone":6,"cmake":6,"cnum":4,"co2":[2,5,24,31],"co2brinepvt":[10,23,24],"co2eor":[2,7],"co2stor":[2,4,7,30],"coars":21,"coarser":2,"code":[3,6,10],"collabor":3,"column":24,"com":[4,6,7,16,17,21],"combin":15,"command":[4,6],"commit":3,"common":[6,15,17],"compact_format":[10,23,30],"comparison":21,"compil":18,"complain":21,"complet":20,"complex":15,"comput":[15,24],"compute_output_shap":[13,20],"concept":5,"config":20,"configur":[1,4,5,7],"configuration_fil":[6,7],"connect":18,"consid":[2,4],"constain":1,"constant":[14,15,16,18,24,29],"contain":[3,14,15,16,18,19,24,26],"content":[1,3,5,8],"contribut":[0,5,6],"control":24,"convers":29,"convert":2,"convolution2d":17,"coord2d":2,"coord3d":2,"coordin":2,"copi":[3,6,17],"core":[1,2,8,10,30],"corner":30,"correct":[15,21,24],"correspond":[2,21],"cos":2,"cov":3,"cover":15,"cp":2,"cpg3d":2,"cplog":2,"creat":[1,3,6,15,19,30],"create_3dgrid":[10,23,30],"create_d":[13,21],"create_ensembl":[10,13,15],"csp":[2,31],"cssr":[0,4,6,7,16],"csv":[16,18],"current":[3,6,7],"current_directori":6,"cyclic":5,"d":[2,4,21],"d3_grid":[10,23,30],"data":[4,15,18,19,20,21,24,27],"data_gener":4,"data_max":[13,20],"data_max_":20,"data_min":[13,20],"data_min_":20,"data_wi":[10,23,24],"datapoint":14,"dataset":[15,18,19,21],"day":[2,21],"dcmake_build_typ":6,"dcmake_prefix_path":6,"deal":[15,16],"debug":26,"decay":18,"decid":16,"deck":[2,7,9,15,16,19,30],"dedic":6,"default":[2,7,14,15,16,18,19,20,21,22,24,26,30],"default_rng":22,"defin":[2,7],"definit":2,"degre":2,"delet":19,"delta_x":24,"dens":17,"densiti":24,"depend":[3,6,15,21],"deprec":[16,19],"depth":[2,18],"describ":[2,3,4,7],"descript":2,"determin":[15,22],"determinist":22,"dev":[3,6],"develop":[6,7],"diamet":2,"dic":[25,28,30],"dict":[15,16,26,30],"dictionari":[15,16,26,30],"differ":[2,4,7,9,14,15,16,18,19,29],"digit":30,"dimens":[14,15],"dimension":[15,20],"dir":2,"direct":[2,7,9,15,16],"directori":[3,15],"disabl":[20,21],"disk":17,"disregard":15,"disregard_first_xcel":21,"distanc":7,"distribut":15,"divid":21,"dmar":2,"doc":3,"docs_co2_cyclic_inject":4,"docs_hello_world":4,"docstr":21,"document":[2,3,4,6,7,9],"doe":[6,18,19,24],"doi":24,"domain":2,"done":[6,20,21],"download":6,"dpi":4,"driesner":24,"driven":21,"ds":19,"dsfile":18,"dtype":19,"due":24,"dure":4,"duse_mpi":6,"dwith_ndebug":6,"dxarray":30,"e":[2,3,4,6,7,9,15,18,21,24],"eaceman":24,"earli":18,"easili":[16,26],"ecl_fil":19,"ecl_keyword":15,"eclfil":19,"edg":6,"effect":2,"efficient_sampl":15,"egrid":7,"either":[6,19,24,26],"element":[2,20,21,24],"els":[6,15],"em":31,"email":3,"en":29,"enabl":[2,4,22],"enable_determin":[10,13,22],"end":[4,19],"ensembl":[10,13,18,19,21,22,30],"ensemble_path":15,"ensemble_s":15,"enterpris":6,"entri":2,"environ":[3,6],"epoch":[18,19],"equal":[2,14,15,21,24],"equidist":2,"equilibrium":24,"equival":[21,24],"equivalent_well_radius":[10,23,24],"error":[15,19,20,21,26,30],"etc":[7,21,24,30],"evalu":[2,18],"everi":15,"exampl":[2,5,7,16,19,24],"except":[2,15],"execut":[1,2,3,4,6,7,9,12],"executions_per_tri":18,"exist":18,"explain":2,"explan":[20,21],"explos":17,"exponenti":2,"export":[3,18],"export_model":[10,13,17],"exprecc":5,"extend":[2,3,7,16],"extra":2,"extract":[15,19,21],"extract_featur":[10,13,15],"f":4,"f0nzie":14,"faci":2,"factor":[2,15,24],"fail":15,"failed_indic":15,"fals":[15,18,19,21],"familiar":3,"far":[20,30],"faster":15,"favor":19,"fcnn":18,"featur":[0,13,14,15,16,18,19,20,21],"feature_array":15,"feature_index":21,"feature_nam":[14,18],"feature_rang":[13,18,20],"feature_range_":20,"fi":6,"fidel":15,"fig":27,"figur":[4,27],"file":[1,3,4,5,6,7,9,15,16,17,18,19,25,26,27,30],"file_format":19,"filenam":[17,26],"filenotfounderror":18,"fill":[16,26],"fill_templ":[10,23,26],"final":2,"fine":[15,21,24],"finit":24,"finnest":2,"first":[2,14,15,18,21,30],"fit":[18,20],"fix":[3,14,15,21,24],"flag":[2,4,9,15],"flexibl":7,"float":[14,15,17,18,21,24,29],"float32":19,"float64":24,"flow":[1,2,3,4,5,7,9,15,21,28,30,31],"flow_gaswater_dissolution_diffus":16,"flow_maco":3,"flow_path":15,"fluid":[2,7,24],"fluidflow":31,"fluidmatrixinteract":17,"fluxnum":30,"foam":[2,7],"folder":[1,2,3,4,5,6,7,15,19,30],"follow":[2,4,6,7,9,15,20,21],"fork":[0,3],"form":[19,21],"format":[3,17,30],"former":19,"formula":[5,10,15,23],"found":[4,15],"four":2,"frac":[15,24],"fractalmanifold":17,"fraction":[2,15],"framework":[7,31],"from_config":[13,20],"from_gener":19,"full":[2,15,21,22],"fulli":[15,18],"funciton":3,"function":[2,6,7,12,15,16,18,19,20,21,22,24,25,27,28,30],"fund":0,"furthermor":21,"futur":21,"g":[2,3,4,6,7,9,15,18,21,24],"gas":[4,7,24],"gas_const":29,"gb":[15,24],"generat":[2,3,4,7,9,15,19,20,22,30,31],"generate_fluxnum":[10,23,30],"generate_geolog":[10,23,30],"generate_multpv":[10,23,30],"generate_pcfact":[10,23,30],"generate_permfact":[10,23,30],"generate_permfact_pcfact":[10,23,30],"generate_saturation_functions_format_1":[10,23,30],"generate_saturation_functions_format_2":[10,23,30],"generate_saturation_functions_gsf_wsf":[10,23,30],"geographi":30,"geolog":[1,15,30,31],"geometri":[2,30],"geotherm":24,"get":[2,3,6,18,21],"get_2dgrid":[10,23,30],"get_analytical_pi":[13,21],"get_analytical_wi":[13,21],"get_config":[13,20],"get_data_wi":[13,21],"get_fcnn":[10,13,18],"get_flag":[10,13,15],"get_gru":[10,13,18],"get_homogeneous_valu":[13,21],"get_horizontically_integrated_valu":[13,21],"get_lstm":[10,13,18],"get_radii":[13,21],"get_rnn":[10,13,18],"get_spac":[10,23,30],"get_timestep":[13,21],"get_vertically_averaged_valu":[13,21],"get_weight":[13,20],"gif":[4,7,31],"gigatonn":0,"git":[4,6],"github":[2,3,4,6,7,14,16,17],"give":19,"given":[2,7,15,18,19,24,26],"global":[22,30],"glorot_norm":18,"glorot_uniform":18,"gravitational_acceler":[10,23,24,29],"graviti":24,"grid":[2,4,6,7,15,21,24,30],"gridfil":15,"grom":15,"ground":5,"gsf":30,"h":24,"h2biofilm":2,"h2ch4":7,"h2core":2,"h2o":4,"h2store":[2,7],"handl":30,"handle_cor":[10,23,30],"handle_zeros_in_scal":[10,13,18],"hat":6,"height":[21,24],"hello":5,"hello_world":4,"help":[2,3,6],"helper":[26,27],"henc":[20,21],"heterogen":7,"hidden":18,"hidden_dim":18,"high":15,"higher":[2,15,20],"highlight":14,"histori":31,"hole":24,"homebrew":6,"homogen":[14,21],"horizont":21,"host":7,"howev":[4,16,21,24],"hp":18,"hpc":0,"hpp":16,"html":[3,14,20],"https":[4,6,7,14,16,17,20,21,29],"hydrogen":2,"hydrostat":24,"hydrostatic_fluid":[10,23,24],"hydrostatic_ga":[10,23,24],"hyperparamet":18,"hysteresi":2,"ideal":24,"ident":15,"ignor":[2,3,22],"imag":31,"imbibit":2,"impact":4,"implement":[7,16,21],"import":3,"improv":[18,30],"in_fil":25,"inc":[15,30],"inc_fold":30,"includ":[6,18,30],"increas":21,"index":[5,15,24],"indic":15,"individu":[15,20],"induc":31,"init":7,"init_keyword":15,"initi":[2,15,18,20],"initialphas":2,"inj":2,"inj_rate_index":21,"inject":[2,5,7,15,21,24],"injection_r":15,"injector":24,"inlet":2,"inner":15,"input":[1,2,4,7,14,15,16,18,19,20,21,25,30],"input_kw":19,"input_shap":20,"inputvalu":[10,23],"insid":[6,7,15,21,24],"inspir":14,"instal":[3,4,5,16,24],"instanc":21,"instanti":19,"instead":[2,7,15,21,24],"instruct":6,"int":[14,15,16,18,20,21,22],"integ":15,"integr":[10,13,15,21],"integrate_fine_scale_valu":[10,13,15],"intend":30,"interest":[4,6,24,31],"interim":6,"intermitt":4,"internal":[18,21],"interval":[4,15],"introduc":20,"introduct":5,"invalid":[16,18],"invers":20,"io":14,"is_adapt":[13,20],"issu":[0,4,5],"iter":2,"j":[24,29],"j5":6,"k":[24,29],"k_":24,"k_h":24,"k_r1":24,"k_r2":24,"keep":[15,30],"keep_result_fil":15,"kept":14,"kera":[14,17,18,20],"keras_tun":18,"kerasifi":[10,13,18],"kernel_initi":18,"key":[15,16],"keyerror":19,"keyword":[2,15,19],"keyword_sc":15,"kg":[2,24],"killough":2,"krn":2,"krw":2,"kwarg":[14,15,18,20,21,30],"kxi":2,"kz":2,"l":6,"lami":24,"larg":17,"larger":15,"last":[2,15,18],"latter":19,"law":24,"layer":[2,7,15,16,17,18,20,21],"leakag":31,"learn":[3,5,6,16,18,20],"least":[15,16],"left":[2,24],"legend":14,"len":19,"len_vari":15,"length":[2,7,15],"lie":24,"ligther":6,"limit":[2,7],"limmit":2,"line":[2,3,6,14,15,18,19],"linear":24,"link":[4,6],"lint":[6,20],"linux":[4,5],"list":[7,14,15,16,18,19,20,21,30],"liter":[14,18,19,24],"ln":24,"load":[18,26],"local":[3,16,22],"local_feature_nam":16,"locat":[1,2],"log":[15,18],"look":[2,3],"loop":[4,16],"loss":18,"loss_func":18,"low":15,"lower":15,"lr":18,"lr_patienc":18,"lr_tune":18,"lstm":17,"m":[2,4,6,7,9,21,24,29],"machin":[2,3,5,6,16],"machine_learning_compil":14,"maco":[3,4,5],"macport":6,"main":[1,3,4,10,11,12,13,14,17,19],"main_plot":14,"maintain":3,"make":[3,6,21,22],"mako":[2,10,15,23,30],"makofil":[15,16],"mamba":6,"manag":6,"manage_grid":[10,23,30],"manage_sect":[10,23,30],"manage_t":[10,23,30],"mani":[2,20],"mantain":3,"manual":[2,19],"mark":19,"mass":[2,24],"master":6,"match":31,"materi":17,"math":[15,24],"mathbf":24,"mathemat":24,"matplotlib":27,"max":[2,14,15,20],"max_trial":18,"maximum":[2,15],"may":15,"md":[2,21],"meanabsolutepercentageerror":18,"meansquaredlogarithmicerror":18,"meanwhil":14,"measur":14,"member":[15,21,30],"memori":[15,17],"memory_efficient_sampl":[10,13,15],"mention":30,"merg":3,"mesh":15,"method":[18,19,21,24],"micp":5,"microbi":31,"microsystem":31,"might":[3,6,15,16,19,20,31],"min":[2,13,14,15,20],"miniforg":6,"minmax":20,"minmaxsc":[18,20],"minmaxscal":[18,20],"minmaxscalerlay":[10,13,20],"minmaxunscalerlay":[10,13,20],"miss":[3,21],"mixin":20,"mkdir":6,"ml":[1,4,6,8,10],"ml_near_wel":[6,16],"ml_tool":17,"mode":[14,15],"model":[1,2,4,7,14,16,17,18,24,30,31],"model_input":18,"modifi":[6,9,18],"modul":[1,5,8,31],"mol":[24,29],"molecular":24,"molecule_mass":24,"moment":[16,20],"mpi":6,"mpirun":2,"mse":18,"mu":24,"mu_1":24,"mu_2":24,"multipl":21,"multipli":2,"multpv":30,"must":[15,21],"mypi":[3,21],"n":[3,30],"name":[7,14,15,16,18],"name_of_script":4,"ndarray":[14,15,18,21,24,30],"near":[3,4,6,7,18,21],"nearwel":15,"necessari":[2,30],"need":[3,4,6,15,16,19,20,21,24,30],"negat":24,"network":[14,16,18],"neural":[14,16,18],"neuron":18,"new":[0,2,3,15,30],"newton":2,"nice":[3,6],"ninput":18,"nkrn":2,"nkrw":2,"nn":[10,13],"no_disgas_no_diffus":30,"non":2,"none":[12,14,15,16,18,20,22,26,27],"normal":18,"notat":30,"note":[14,15,16,18,19,21,22],"noutput":18,"now":[2,21],"np":[2,14,15,18,21,22,24],"npen":2,"npoint":[2,15],"num_cel":[15,19],"num_dim":15,"num_ensemble_run":21,"num_featur":[15,21],"num_fil":19,"num_input":14,"num_lay":[13,21],"num_memb":15,"num_report_step":[15,19],"num_timestep":[13,21],"num_vari":15,"num_x_cel":15,"num_xcel":[13,21],"num_zcel":[13,21],"number":[0,2,7,14,15,16,18],"numer":24,"numpi":[15,22],"o":[4,7],"object":[18,19,21],"on_epoch_end":[13,19],"onc":16,"one":[2,4,7,9,15,19,21],"onli":[4,6,7,15,16,18,20,21,24,30],"onlin":6,"open":[4,6,31],"opm":[1,2,3,4,5,7,9,15,16,17,19,21,24,30,31],"opm_path":16,"option":[2,7,14,15,16,18,21,22,24,26,30],"order":[15,20],"org":[6,20,29],"origin":[18,24],"outer":15,"outlet":2,"output":[2,4,5,7,14,16,18,20],"output_signatur":19,"overload":15,"overridden":21,"overview":5,"p":24,"p_":[15,24],"p_0":24,"p_gb":24,"p_w":[15,24],"pa":24,"pack":17,"packag":[0,1,3,4,5,7,8],"page":[3,5],"paper":4,"parallel":16,"paramet":[4,5,14,15,16,18,19,20,21,22,24,26,27,30],"paraview":4,"pars":19,"part":[16,30],"partial":15,"particular":15,"partit":2,"pass":[15,18,19,24,26],"path":[2,3,14,15,16,18,19,21,24,26,27,30],"pathlib":[14,15,16,18,21,24,26,27,30],"patienc":18,"pcap":2,"pcfact":30,"peaceman":24,"peaceman_matrix_wi":[10,23,24],"peaceman_wi":[10,23,24],"pen":2,"per":[2,16,21],"perfor":2,"perform":14,"period":2,"perm":[2,15],"permeabilti":24,"permeabl":[15,21,24],"permfact":30,"phase":[2,24],"phase_properti":24,"phi":2,"physic":[2,7,29],"pi":[2,15,24],"pickl":27,"pip":[3,4,6],"pipe":2,"place":21,"platform":6,"pleas":[0,3],"plopm":[4,5,6,7,9],"plot":[7,10,14,23],"plot_analysi":[10,13,14],"png":4,"pngs":[7,31],"pofff":5,"point":[4,15,24,30],"pointless":21,"pore":2,"poro":2,"possibl":[3,15,20,21,30],"postprocess":9,"practic":2,"precipit":[4,31],"prefer":3,"preprocess":[9,18,20,25],"prerequisit":6,"pressur":[2,4,7,15,21,24],"pressure_index":21,"prevent":17,"previous":[2,3,6,7],"print":[2,7],"problem":5,"proceed":2,"process":[1,17,25],"process_input":[10,23,25],"process_tun":[10,23,25],"produc":[2,24],"product":[4,15,24],"project":[0,6,31],"properti":[2,7,20,21,24],"protocol":21,"provid":[15,18,19,20,21,24,29],"prs":3,"ptwo":24,"public":[5,7],"publish":4,"pull":[0,3],"push":3,"pushd":3,"pv":2,"pvmult":2,"pvt":7,"pwd":6,"py":17,"py312":3,"pycopm":[3,5,6],"pylint":[3,20,21],"pymm":5,"pyopmnearwel":[2,3,4,6,7,9],"pyopmnearwell_correct":[10,23,24],"pyopmspe11":5,"pyplot":27,"pytest":3,"python":[2,3,5,21,22,31],"python3":6,"q":[15,24],"quadrat":24,"quantiti":[15,24],"quick":31,"r":[3,6,24],"r_":24,"r_e":24,"r_w":24,"radial":[2,4,15,21,24],"radial_grid":24,"radial_valu":15,"radii":[15,21,24],"radii_fil":21,"radius":[15,24],"raidal":15,"rais":[0,3,15,16,18,19,20,21,24,26],"random":[15,18,21,22],"random_norm":14,"random_uniform":14,"rang":[7,15,18],"rate":[2,4,15,18,21,24],"ratio":24,"read":4,"read_data":[13,19],"read_data_on_init":19,"recalc_":30,"recalc_grid":[15,30],"recalc_sect":[15,30],"recalc_t":[15,30],"recalcul":[15,30],"recent":6,"recompil":[16,18],"recompile_flow":[10,13,16],"recompile_model":18,"reconstruct":20,"record":[2,4],"recov":24,"recurr":18,"red":6,"reduc":[21,30],"reduce_data_s":[13,21],"refer":24,"reference_pressur":24,"refin":7,"region":[15,31],"reinject":2,"rel":2,"relat":[3,5,9,24,30],"relationship":2,"relax":2,"releas":[6,7],"relu":18,"remedi":31,"remov":[6,21],"render":[15,26],"replac":[3,16],"repo":[3,6,16],"report":[5,15],"repositori":[1,2,3,4,6],"request":[0,3],"requir":[3,6,15,30],"requiri":25,"resdata":19,"resdata_dataset":[10,13],"resdata_fil":19,"resdatafil":19,"resdatafile_to_datapoint":[13,19],"resdataset":[10,13,19],"reservoir":[5,7,24,31],"reservoir_fil":[10,15,23,30],"resinsight":[4,6,9],"resolution_1":14,"resolution_2":14,"resourc":[0,24],"respons":15,"result":[2,4,6,7,9,15,21,24],"retir":7,"return":[14,15,16,18,19,20,21,24,26,27,30],"return_outer_inn":15,"review":3,"rho":24,"rho_1":24,"rho_2":24,"right":[2,24],"rise":3,"rock":[5,7],"round_like_":[10,23,30],"routin":[7,17],"row":[16,18],"rst":2,"ruff":3,"rule":5,"run":[2,3,4,6,7,9,10,15,16,19,21,23,30],"run_ensembl":[10,13,15],"run_integr":[10,13,16],"runspec":[15,16],"runtim":21,"s":[3,4,18,24,26,29],"safu":2,"salt":4,"saltprec":[2,7],"sampl":[14,15,19],"sample_weight":18,"sand":2,"sat":2,"satur":[2,4,7,15,21,30],"save":[4,9,14,15,16,18,19,27],"save_fig_and_data":[10,23,27],"save_tune_result":[10,13,18],"saved_model":18,"savepath":[14,15,16,18],"scalar":[13,20],"scale":[15,16,18,20,21,24],"scale_and_evalu":[10,13,18],"scale_and_prepare_dataset":[10,13,18],"scaler":20,"scaler_lay":[10,13],"scalerlay":[10,13,20],"scalingsfil":[16,18],"schedul":[2,7],"scikit":20,"scott":24,"screen":4,"screenshot":9,"script":[1,2,3,4,6,12,26],"search":[5,18],"second":[2,4,14,21,30],"section":[2,4],"see":[2,3,4,6,9,20,21],"seed":[15,22],"seek":5,"seen":2,"select":[2,9,21],"self":[19,20,21],"send":3,"sensit":14,"sensitivity_analysi":[10,13,14],"seri":2,"serial":20,"set":[2,6,7,14,18,20,22,25],"set_weight":[13,20],"setup_ensembl":[10,13,15],"setuptool":6,"seven":[2,3],"sever":21,"sgas":4,"sgfn":30,"sgof":30,"sh":[4,6],"shall":19,"shape":[14,15,19,20,21],"short":2,"show":[2,4,9],"shown":2,"shuffl":[18,19],"shuffle_on_epoch_end":19,"shut":2,"side":[2,15,24],"sidelength":[15,24],"sigmoid":18,"signific":30,"similar":[21,24],"simmul":15,"simpli":6,"simplifi":7,"simul":[0,2,4,6,7,9,10,15,16,21,23,24,28,31],"simulation_length":21,"sinc":[2,21],"singl":[2,3,7,9,14],"single_feature_shap":[13,21],"site":31,"size":[2,15,16,18,21,24,30],"skip":6,"sklearn":[18,20],"sl":2,"smspec":15,"sni":2,"softwar":[0,5],"solut":[15,24],"soon":3,"sourc":[3,5,29,31],"sparsiti":21,"spe":2,"spe11":31,"specif":[6,7,14],"specifi":[15,16,18],"speed":2,"split":18,"sqare":24,"squar":[15,24],"squash":3,"src":[2,3],"stabl":20,"stackoverflow":21,"standardwel":16,"standardwell_impl":16,"standardwell_impl_templ":16,"standardwell_templ":16,"start":[4,15],"state":18,"statement":21,"static":3,"stencil":16,"stencil_s":16,"step":[2,3,6,15,21],"step_size_cel":15,"step_size_t":21,"step_size_tim":15,"step_size_x":21,"still":16,"stop":18,"storag":[0,2,31],"store":[15,19],"store_dataset":[10,13,15],"str":[14,15,16,18,19,24,26,27,30],"string":[2,21,26],"struct":17,"studi":[4,28,31],"subclass":21,"submodul":[1,8,10],"subpackag":[1,5,8],"subsurfac":0,"subsystem":6,"succed":6,"succeed":3,"suffic":21,"sum":21,"summari":9,"summary_keyword":15,"supercrit":24,"support":[2,5,6,7],"sure":[22,24],"surfac":2,"surface_dens":21,"sustain":0,"svg":27,"sw":2,"swfn":30,"swi":2,"system":3,"t":[4,15,21,24,26],"tabl":[7,15,30],"tag":6,"tailor":31,"take":[14,15,21,24],"taken":[14,15,21,30],"tanh":18,"tap":[4,6],"target":[3,13,15,18,19,21],"target_kw":19,"target_rang":18,"telescop":2,"temper":15,"temperatur":[2,7,21,24],"templat":[1,2,7,15,16,26,30],"tensor":[15,18,19,20],"tensor2d":2,"tensor3d":2,"tensord2d":2,"tensorflow":[3,6,15,18,19,20,22],"tensorspec":19,"term":3,"termin":[4,6],"test":[2,3,4,6,7,15,18,20],"test_output":[3,4],"test_split":18,"text":26,"tf":[18,19],"theta":2,"thick":[2,24],"third":14,"three":[2,20],"threshold":2,"thus":15,"time":[2,4,15,24],"timestep":21,"todo":[7,15,24],"toml":[2,4,6,7],"tool":[1,3,4,6,7,9,16,31],"top":[2,4],"total":15,"toward":2,"train":[10,13,18],"train_data":18,"train_split":18,"transform":[15,17,18,19,20],"treat":21,"tri":[3,4,6],"triangl":[15,24],"triangle_grid":[15,24],"triangular":24,"true":[2,4,14,15,18,19,21,30],"trust":[4,6],"tsmaxz":2,"tube":2,"tune":[2,10,13,18,25],"tuner":18,"tupl":[14,15,18,19,20,21],"turn":6,"tutori":[3,6],"two":[2,16,18,21],"two_phase_peaceman_wi":[10,23,24],"txt":[3,6],"type":[2,4,6,14,15,18,19,20,21,24,26,29,30,31],"ubuntu":[3,6],"uniform":15,"union":16,"unit":[10,15,18,21,23,24],"unitless":15,"universal":24,"universal_gas_const":[10,23,29],"unrst":[7,15,19],"unscal":20,"updat":[6,15],"upgrad":6,"upscal":[10,13],"use":[0,1,2,3,4,6,7,9,15,16,18,19,21,22,24,26,30,31],"user":[2,3,4,6,15],"usual":[15,21],"util":[1,2,8,10,13],"utilil":22,"utiliy":25,"v":[4,7,30],"v2026":6,"val":18,"val_data":18,"val_loss":18,"val_split":18,"valid":18,"valu":[2,7,14,15,16,18,19,20,21,24,25,30],"valueerror":[15,16,18,20,24],"var":26,"vari":[14,15],"variabl":[2,3,7,9,14,15,16,26,30],"variat":14,"various":15,"venv":6,"veri":17,"version":[3,6,10,21],"vertic":[15,16,21],"via":[6,7],"view":4,"virtual":6,"viscos":24,"visit":3,"visual":[4,6,9],"volum":[2,4,21,24],"vpyopmnearwel":6,"vtk":4,"vtks":31,"w":[7,24],"want":2,"warn":[7,20],"water":[2,4,24],"weight":[18,20],"welcom":[0,3],"well":[3,4,5,6,7,15,16,21,24],"well_radius":21,"well_typ":24,"wellbor":24,"went":15,"wet":2,"wheel":6,"whether":[14,15,18,30],"whole":7,"wi":[15,21,24],"wi_array":15,"width":2,"wiki":29,"wikipedia":29,"will":[3,6,15,21,30],"window":[4,5],"within":15,"without":[6,18,24],"work":[3,6,19,24,30],"world":5,"write":[1,2,6,7,17,30],"write_activ":17,"write_convolution2d":[10,13,17],"write_dens":[10,13,17],"write_float":[10,13,17],"write_lstm":[10,13,17],"writefil":[10,23],"wrong":15,"wsf":30,"wsl":6,"x":[2,7,14,15,21,30],"x_":24,"xcn":2,"xdim":2,"xfac":2,"xformat":4,"y":[2,4,6,7],"yapparova":24,"yet":[3,20,21],"yformat":4,"yml":[3,6],"z":[2,7],"zero":[15,24],"zxi":2},"titles":["About pyopmnearwell","pyopmnearwell Python API","Configuration file","Contributing","Examples","Welcome to pyopmnearwell\u2019s documentation!","Installation","Introduction","pyopmnearwell","Output folder","pyopmnearwell package","pyopmnearwell.core package","pyopmnearwell.core.pyopmnearwell module","pyopmnearwell.ml package","pyopmnearwell.ml.analysis module","pyopmnearwell.ml.ensemble module","pyopmnearwell.ml.integration module","pyopmnearwell.ml.kerasify module","pyopmnearwell.ml.nn module","pyopmnearwell.ml.resdata_dataset module","pyopmnearwell.ml.scaler_layers module","pyopmnearwell.ml.upscale module","pyopmnearwell.ml.utils module","pyopmnearwell.utils package","pyopmnearwell.utils.formulas module","pyopmnearwell.utils.inputvalues module","pyopmnearwell.utils.mako module","pyopmnearwell.utils.plotting module","pyopmnearwell.utils.runs module","pyopmnearwell.utils.units module","pyopmnearwell.utils.writefile module","Related"],"titleterms":{"About":0,"ad":31,"addit":2,"analysi":14,"api":1,"binari":6,"brew":6,"build":6,"ccus":4,"co2":4,"concept":7,"configur":2,"content":[10,11,13,23],"contribut":3,"core":[11,12],"cyclic":4,"document":5,"ensembl":15,"exampl":4,"exprecc":31,"file":2,"flow":6,"folder":9,"formula":[6,24],"ground":3,"hello":4,"indic":5,"inject":4,"inputvalu":25,"instal":6,"integr":16,"introduct":7,"issu":3,"kerasifi":17,"learn":4,"linux":6,"machin":4,"maco":6,"mako":26,"micp":31,"ml":[13,14,15,16,17,18,19,20,21,22],"modul":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"nn":18,"opm":6,"output":9,"overview":7,"packag":[6,10,11,13,23],"paramet":2,"plopm":31,"plot":27,"pofff":31,"problem":3,"public":4,"pycopm":31,"pymm":31,"pyopmnearwel":[0,1,5,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"pyopmspe11":31,"python":[1,6],"relat":[2,31],"report":3,"resdata_dataset":19,"reservoir":2,"rock":2,"rule":3,"run":28,"s":5,"scaler_lay":20,"seek":3,"softwar":3,"sourc":6,"submodul":[11,13,23],"subpackag":10,"support":3,"tabl":5,"unit":29,"upscal":21,"util":[22,23,24,25,26,27,28,29,30],"welcom":5,"well":2,"window":6,"world":4,"writefil":30}}) \ No newline at end of file diff --git a/docs/text/configuration_file.rst b/docs/text/configuration_file.rst index 39407b4..089f1ab 100644 --- a/docs/text/configuration_file.rst +++ b/docs/text/configuration_file.rst @@ -141,9 +141,9 @@ top to the bottom on the left side of the domain and the injection is given as k #1) injection time [d], 2) time step size to write results [d], #3) fluid (0 wetting, 1 non-wetting), 4) injection rates [kg/day]. #If --enable-tuning=1, then 5) for TUNING values as described in the OPM manual. - inj = [[7,1e-1,1,57611.52,"1* 1e-2"], - [7,1e-1,0,57611.52,"1* 5e-2"], - [7,1e-1,1,57611.52,"1* 5e-2"]] + inj = [[7,1e-1,1,57611.52,"1* 1e-2 1e-12"], + [7,1e-1,0,57611.52,"1* 5e-2 1e-12"], + [7,1e-1,1,57611.52,"1* 5e-2 1e-12"]] Here CO2 (non-wetting phase) is injected for seven days printing the results 70 times and limmiting the time step to 1e-2 days, after water (wetting phase) is injected for the same period at the same mass rate but limiting the time step diff --git a/docs/text/examples.rst b/docs/text/examples.rst index 86ecf64..2674fab 100644 --- a/docs/text/examples.rst +++ b/docs/text/examples.rst @@ -2,6 +2,36 @@ Examples ******** +`ResInsight `_ and `plopm `_ are used for the visualization of the results. + +.. note:: + + You can install `plopm `_ by executing in the terminal: + + .. code-block:: bash + + pip install git+https://github.com/cssr-tools/plopm.git + + There are binary packages for Linux and Windows to install Resinsight, see the `ResInsight Documentation `_. For macOS users, you could try to install it using `brew `_ by executing: + + .. code-block:: bash + + brew tap cssr-tools/opm + brew trust cssr-tools/opm + brew install cssr-tools/opm/resinsight -y + + Then, you should be able to open resinsight by typing in the terminal **resinsight**. If you have issues installing ResInsight, `ParaView `_ can be also used. However, you need to add the flag **\-\-enable-vtk-output=true** + to OPM Flow. + +.. tip:: + + For the figures in the following examples we show a screen recording from ResInsight and a PNG and GIF from plopm. To generate the results, + we add a link to a bash file that can be run from the main pyopmnearwell repository as (the results are generated in the test_outputs folder): + + .. code-block:: bash + + . ./tests/scripts/name_of_script.sh + Hello world ----------- In this example we consider the configuration file `h2o.toml `_ available in the @@ -21,13 +51,11 @@ To visualize the results, this can be achieved by using plopm, for example: .. figure:: figs/pressure_1D.png -.. tip:: - You can install `plopm `_ by executing in the terminal: +Then, both commands (pyopmnearwell and plopm) can be run by (`docs_hello_world.sh `_): - .. code-block:: bash - - pip install git+https://github.com/cssr-tools/plopm.git +.. code-block:: bash + . ./tests/scripts/docs_hello_world.sh CO2 cyclic injection -------------------- @@ -58,6 +86,12 @@ To generate a gif using plopm, this can be achieved by executing: Visualization of the gas saturation using plopm. +Then, both commands (pyopmnearwell and plopm) can be run by (`docs_co2_cyclic_injection.sh `_): + +.. code-block:: bash + + . ./tests/scripts/docs_co2_cyclic_injection.sh + CCUS (machine learning) ----------------------- See `this folder `_ for an example of diff --git a/examples/cemracs2023/h2_3controls/base_case/h2.mako b/examples/cemracs2023/h2_3controls/base_case/h2.mako index c9bddbb..f11c86c 100644 --- a/examples/cemracs2023/h2_3controls/base_case/h2.mako +++ b/examples/cemracs2023/h2_3controls/base_case/h2.mako @@ -31,15 +31,15 @@ rock = [[700.15,700.15,0.25,20,4]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): % if control == 0: -[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1"], +[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1 1e-12"], % elif control == 1: -[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1 1e-12"], % else: -[${tperiod},${tperiod},1,${qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${qrate},"0.01 0.1 1e-12"], % endif % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_3controls/hyst/h2.mako b/examples/cemracs2023/h2_3controls/hyst/h2.mako index e4723a2..c35ba64 100644 --- a/examples/cemracs2023/h2_3controls/hyst/h2.mako +++ b/examples/cemracs2023/h2_3controls/hyst/h2.mako @@ -32,15 +32,15 @@ rock = [[700.15,700.15,0.25,20,4]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): % if control == 0: -[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1"], +[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1 1e-12"], % elif control == 1: -[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1 1e-12"], % else: -[${tperiod},${tperiod},1,${qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${qrate},"0.01 0.1 1e-12"], % endif % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_3controls/hyst_wecon/h2.mako b/examples/cemracs2023/h2_3controls/hyst_wecon/h2.mako index 0ec9719..f1a5624 100644 --- a/examples/cemracs2023/h2_3controls/hyst_wecon/h2.mako +++ b/examples/cemracs2023/h2_3controls/hyst_wecon/h2.mako @@ -33,15 +33,15 @@ rock = [[700.15,700.15,0.25,20,4]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): % if control == 0: -[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1"], +[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1 1e-12"], % elif control == 1: -[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1 1e-12"], % else: -[${tperiod},${tperiod},1,${qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${qrate},"0.01 0.1 1e-12"], % endif % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_3controls/wecon/h2.mako b/examples/cemracs2023/h2_3controls/wecon/h2.mako index 57ef725..d57b498 100644 --- a/examples/cemracs2023/h2_3controls/wecon/h2.mako +++ b/examples/cemracs2023/h2_3controls/wecon/h2.mako @@ -32,15 +32,15 @@ rock = [[700.15,700.15,0.25,20,4]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): % if control == 0: -[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1"], +[${tperiod},${tperiod},1,${-1*qrate},3.6e1,"0.01 0.1 1e-12"], % elif control == 1: -[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${0*qrate},"0.01 0.1 1e-12"], % else: -[${tperiod},${tperiod},1,${qrate},"0.01 0.1"], +[${tperiod},${tperiod},1,${qrate},"0.01 0.1 1e-12"], % endif % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_combinations_in_schedule/base_case/h2.mako b/examples/cemracs2023/h2_combinations_in_schedule/base_case/h2.mako index d858300..1fb399c 100644 --- a/examples/cemracs2023/h2_combinations_in_schedule/base_case/h2.mako +++ b/examples/cemracs2023/h2_combinations_in_schedule/base_case/h2.mako @@ -33,9 +33,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1"], +[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1 1e-12"], % endfor -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_combinations_in_schedule/dissolution/h2.mako b/examples/cemracs2023/h2_combinations_in_schedule/dissolution/h2.mako index 9cd924a..633cc74 100644 --- a/examples/cemracs2023/h2_combinations_in_schedule/dissolution/h2.mako +++ b/examples/cemracs2023/h2_combinations_in_schedule/dissolution/h2.mako @@ -33,9 +33,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1"], +[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1 1e-12"], % endfor -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon/h2.mako b/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon/h2.mako index 9cd924a..633cc74 100644 --- a/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon/h2.mako +++ b/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon/h2.mako @@ -33,9 +33,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1"], +[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1 1e-12"], % endfor -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon_hyst/h2.mako b/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon_hyst/h2.mako index 6d301c9..1fe2c16 100644 --- a/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon_hyst/h2.mako +++ b/examples/cemracs2023/h2_combinations_in_schedule/dissolution_wecon_hyst/h2.mako @@ -34,9 +34,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1"], +[7,7,1,${'-40000,3.6e1' if control == 0 else 40000},"0.01 1 1e-12"], % endfor -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_forecast/base_case/h2.mako b/examples/cemracs2023/h2_forecast/base_case/h2.mako index 63e7cb5..72a110e 100644 --- a/examples/cemracs2023/h2_forecast/base_case/h2.mako +++ b/examples/cemracs2023/h2_forecast/base_case/h2.mako @@ -35,12 +35,12 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for i in range(mt.floor(time/tperiod)): -[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1']," if -1==(-1)**(i+1) else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1 1e-12']," if -1==(-1)**(i+1) else ",'0.01 0.1 1e-12'],"} % endfor % if time%tperiod != 0: -[${time - tperiod*mt.floor(time/tperiod)},${time - tperiod*mt.floor(time/tperiod)},1,${40000*(-1)**(mt.floor(time/tperiod)+1)}${",3.6e1,'0.01 1']" if -1==(-1)**(mt.floor(time/tperiod)+1) else ",'0.01 1']"} +[${time - tperiod*mt.floor(time/tperiod)},${time - tperiod*mt.floor(time/tperiod)},1,${40000*(-1)**(mt.floor(time/tperiod)+1)}${",3.6e1,'0.01 1 1e-12']" if -1==(-1)**(mt.floor(time/tperiod)+1) else ",'0.01 1 1e-12']"} % endif -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_forecast/dissolution/h2.mako b/examples/cemracs2023/h2_forecast/dissolution/h2.mako index abafb69..61467d6 100644 --- a/examples/cemracs2023/h2_forecast/dissolution/h2.mako +++ b/examples/cemracs2023/h2_forecast/dissolution/h2.mako @@ -35,12 +35,12 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for i in range(mt.floor(time/tperiod)): -[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1']," if -1==(-1)**(i+1) else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1 1e-12']," if -1==(-1)**(i+1) else ",'0.01 0.1 1e-12'],"} % endfor % if time%tperiod != 0: [${time - tperiod*mt.floor(time/tperiod)},${time - tperiod*mt.floor(time/tperiod)},1,${40000*(-1)**(mt.floor(time/tperiod)+1)}${",3.6e1,'0.01 1']" if -1==(-1)**(mt.floor(time/tperiod)+1) else ",'0.01 1']"} % endif -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_forecast/dissolution_wecon/h2.mako b/examples/cemracs2023/h2_forecast/dissolution_wecon/h2.mako index abafb69..61467d6 100644 --- a/examples/cemracs2023/h2_forecast/dissolution_wecon/h2.mako +++ b/examples/cemracs2023/h2_forecast/dissolution_wecon/h2.mako @@ -35,12 +35,12 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for i in range(mt.floor(time/tperiod)): -[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1']," if -1==(-1)**(i+1) else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1 1e-12']," if -1==(-1)**(i+1) else ",'0.01 0.1 1e-12'],"} % endfor % if time%tperiod != 0: [${time - tperiod*mt.floor(time/tperiod)},${time - tperiod*mt.floor(time/tperiod)},1,${40000*(-1)**(mt.floor(time/tperiod)+1)}${",3.6e1,'0.01 1']" if -1==(-1)**(mt.floor(time/tperiod)+1) else ",'0.01 1']"} % endif -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_forecast/dissolution_wecon_hyst/h2.mako b/examples/cemracs2023/h2_forecast/dissolution_wecon_hyst/h2.mako index 3e2da29..7f6d0e9 100644 --- a/examples/cemracs2023/h2_forecast/dissolution_wecon_hyst/h2.mako +++ b/examples/cemracs2023/h2_forecast/dissolution_wecon_hyst/h2.mako @@ -38,12 +38,12 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,20000,"0.01 10"], -[90,10,1,0,"0.01 10"], +inj = [[365,365,1,20000,"0.01 10 1e-12"], +[90,10,1,0,"0.01 10 1e-12"], % for i in range(mt.floor(time/tperiod)): -[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1']," if -1==(-1)**(i+1) else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${40000*(-1)**(i+1)}${",3.6e1,'0.01 0.1 1e-12']," if -1==(-1)**(i+1) else ",'0.01 0.1 1e-12'],"} % endfor % if time%tperiod != 0: [${time - tperiod*mt.floor(time/tperiod)},${time - tperiod*mt.floor(time/tperiod)},1,${40000*(-1)**(mt.floor(time/tperiod)+1)}${",3.6e1,'0.01 1']" if -1==(-1)**(mt.floor(time/tperiod)+1) else ",'0.01 1']"} % endif -[730,730,1,-20000,3.6e1,"0.01 1"]] \ No newline at end of file +[730,730,1,-20000,3.6e1,"0.01 1 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/base_case/h2.mako b/examples/cemracs2023/h2_lab/base_case/h2.mako index 1ee1c0d..b8898d4 100644 --- a/examples/cemracs2023/h2_lab/base_case/h2.mako +++ b/examples/cemracs2023/h2_lab/base_case/h2.mako @@ -31,9 +31,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss/h2.mako b/examples/cemracs2023/h2_lab/diss/h2.mako index 8df24d7..17fe44d 100644 --- a/examples/cemracs2023/h2_lab/diss/h2.mako +++ b/examples/cemracs2023/h2_lab/diss/h2.mako @@ -31,9 +31,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss_satfunc/h2.mako b/examples/cemracs2023/h2_lab/diss_satfunc/h2.mako index a4cc05c..dc0c947 100644 --- a/examples/cemracs2023/h2_lab/diss_satfunc/h2.mako +++ b/examples/cemracs2023/h2_lab/diss_satfunc/h2.mako @@ -31,9 +31,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss_satfunc_hyst/h2.mako b/examples/cemracs2023/h2_lab/diss_satfunc_hyst/h2.mako index db59938..3d51d09 100644 --- a/examples/cemracs2023/h2_lab/diss_satfunc_hyst/h2.mako +++ b/examples/cemracs2023/h2_lab/diss_satfunc_hyst/h2.mako @@ -32,9 +32,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss_satfunc_hyst_wecon/h2.mako b/examples/cemracs2023/h2_lab/diss_satfunc_hyst_wecon/h2.mako index 6232646..1e8c970 100644 --- a/examples/cemracs2023/h2_lab/diss_satfunc_hyst_wecon/h2.mako +++ b/examples/cemracs2023/h2_lab/diss_satfunc_hyst_wecon/h2.mako @@ -33,9 +33,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss_satfunc_wecon/h2.mako b/examples/cemracs2023/h2_lab/diss_satfunc_wecon/h2.mako index b3e40c1..0ed58cd 100644 --- a/examples/cemracs2023/h2_lab/diss_satfunc_wecon/h2.mako +++ b/examples/cemracs2023/h2_lab/diss_satfunc_wecon/h2.mako @@ -32,9 +32,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/diss_wecon/h2.mako b/examples/cemracs2023/h2_lab/diss_wecon/h2.mako index fd51988..d153ce2 100644 --- a/examples/cemracs2023/h2_lab/diss_wecon/h2.mako +++ b/examples/cemracs2023/h2_lab/diss_wecon/h2.mako @@ -32,9 +32,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/satfunc/h2.mako b/examples/cemracs2023/h2_lab/satfunc/h2.mako index 6086181..fd6a930 100644 --- a/examples/cemracs2023/h2_lab/satfunc/h2.mako +++ b/examples/cemracs2023/h2_lab/satfunc/h2.mako @@ -31,9 +31,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/satfunc_hyst/h2.mako b/examples/cemracs2023/h2_lab/satfunc_hyst/h2.mako index ae0de6d..3e62c2b 100644 --- a/examples/cemracs2023/h2_lab/satfunc_hyst/h2.mako +++ b/examples/cemracs2023/h2_lab/satfunc_hyst/h2.mako @@ -33,9 +33,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/satfunc_wecon/h2.mako b/examples/cemracs2023/h2_lab/satfunc_wecon/h2.mako index 79ef1d6..9634fc9 100644 --- a/examples/cemracs2023/h2_lab/satfunc_wecon/h2.mako +++ b/examples/cemracs2023/h2_lab/satfunc_wecon/h2.mako @@ -32,9 +32,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/h2_lab/wecon/h2.mako b/examples/cemracs2023/h2_lab/wecon/h2.mako index da3e0f4..35e37ee 100644 --- a/examples/cemracs2023/h2_lab/wecon/h2.mako +++ b/examples/cemracs2023/h2_lab/wecon/h2.mako @@ -32,9 +32,9 @@ rock = [[700.15,700.15,0.25,20,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[365,365,1,${200000. / 6},"0.01 10"], -[90,90,1,0,"0.01 10"], +inj = [[365,365,1,${200000. / 6},"0.01 10 1e-12"], +[90,90,1,0,"0.01 10 1e-12"], % for _,control in enumerate(schedule): -[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1']," if control == 0 else ",'0.01 0.1'],"} +[${tperiod},${tperiod},1,${-1*qrate if control == 0 else qrate}${",3.6e1,'0.01 0.1 1e-12']," if control == 0 else ",'0.01 0.1 1e-12'],"} % endfor -[730,730,1,${-200000. / 6},3.6e1,"0.01 10"]] \ No newline at end of file +[730,730,1,${-200000. / 6},3.6e1,"0.01 10 1e-12"]] \ No newline at end of file diff --git a/examples/cemracs2023/proceedings/hwell_hyst/h2.mako b/examples/cemracs2023/proceedings/hwell_hyst/h2.mako index bf3a81f..2a3a247 100644 --- a/examples/cemracs2023/proceedings/hwell_hyst/h2.mako +++ b/examples/cemracs2023/proceedings/hwell_hyst/h2.mako @@ -36,10 +36,10 @@ rock = [[700.15,700.15,0.3,50,100]] #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. inj = [ % for i in range(mt.floor(time/(tperiodi + tperiodp))): -[${tperiodi},${tperiodi},1,${qi}], +[${tperiodi},${tperiodi},1,${qi},"2* 1e-12"], % if i == mt.floor(time/(tperiodi + tperiodp)) - 1: -[${tperiodp},${tperiodp},1,${-qp},3.5e1]] +[${tperiodp},${tperiodp},1,${-qp},3.5e1,"2* 1e-12"]] % else: -[${tperiodp},${tperiodp},1,${-qp},3.5e1], +[${tperiodp},${tperiodp},1,${-qp},3.5e1,"2* 1e-12"], % endif % endfor \ No newline at end of file diff --git a/examples/cemracs2023/proceedings/hwell_noise/h2.mako b/examples/cemracs2023/proceedings/hwell_noise/h2.mako index cc27f55..f242b18 100644 --- a/examples/cemracs2023/proceedings/hwell_noise/h2.mako +++ b/examples/cemracs2023/proceedings/hwell_noise/h2.mako @@ -35,10 +35,10 @@ rock = [[700.15,700.15,0.3,50,100]] #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. inj = [ % for i in range(mt.floor(time/(tperiodi + tperiodp))): -[${tperiodi},${tperiodi},1,${qi}], +[${tperiodi},${tperiodi},1,${qi},"2* 1e-12"], % if i == mt.floor(time/(tperiodi + tperiodp)) - 1: -[${tperiodp},${tperiodp},1,${-qp},3.5e1]] +[${tperiodp},${tperiodp},1,${-qp},3.5e1,"2* 1e-12"]] % else: -[${tperiodp},${tperiodp},1,${-qp},3.5e1], +[${tperiodp},${tperiodp},1,${-qp},3.5e1,"2* 1e-12"], % endif % endfor \ No newline at end of file diff --git a/examples/co2.toml b/examples/co2.toml index f09a890..a3c9393 100644 --- a/examples/co2.toml +++ b/examples/co2.toml @@ -47,6 +47,6 @@ rock = [[101.324,10.1324,0.2,6,6], #Define the injection values (entry per change in the schedule): #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), 4) injection rates [kg/day]. #If --enable-tuning=1, then 5) for TUNING values as described in the OPM manual. -inj = [[7,1e-1,1,57611.52,"1* 1e-2"], -[7,1e-1,0,1E4,"1* 5e-2"], -[7,1e-1,1,57611.52,"1* 5e-2"]] \ No newline at end of file +inj = [[7,1e-1,1,57611.52,"1* 1e-2 1e-12"], +[7,1e-1,0,1E4,"1* 5e-2 1e-12"], +[7,1e-1,1,57611.52,"1* 5e-2 1e-12"]] \ No newline at end of file diff --git a/examples/co2eor_bhpcontrol.toml b/examples/co2eor_bhpcontrol.toml index 7d7501d..b5dccf6 100644 --- a/examples/co2eor_bhpcontrol.toml +++ b/examples/co2eor_bhpcontrol.toml @@ -1,5 +1,5 @@ #Set mpirun, the full path to the flow executable, and simulator flags (except --output-dir) -flow = "flow --enable-tuning=1 --relaxed-max-pv-fraction=0 --enable-opm-rst-file=true --newton-min-iterations=1" +flow = "flow --enable-tuning=true --relaxed-max-pv-fraction=0 --enable-opm-rst-file=true --newton-min-iterations=1" #Set the model parameters model = "co2eor" #Model (co2store/co2eor/foam/h2store/saltprec) @@ -18,6 +18,6 @@ rock = [[500,50,0.3,20,10],[50,50,0.3,30,6],[200,25,0.3,50,5]] #Define the injection values (entry per change in the schedule): #1) injection time [d], 2) time step size to write results [d], #3) fluid (0 wetting, 1 non-wetting), 4) injection rates [stb/day]. -#If --enable-tuning=1, then 5) the TUNING values as described in the OPM manual. -inj=[[90,30,0,1200,"1e-2 1"],[90,30,1,12000,"1e-2 1"],[90,30,0,1200,"1e-2 1"],[90,30,1,12000,"1e-2 1"], - [90,30,0,1200,"1e-2 1"],[90,30,1,12000,"1e-2 1"],[90,30,0,1200,"1e-2 1"],[90,30,1,12000,"1e-2 1"]] \ No newline at end of file +#If --enable-tuning=true, then 5) the TUNING values as described in the OPM manual. +inj=[[90,30,0,1200,"1e-2 1 1e-12"],[90,30,1,12000,"1e-2 1 1e-12"],[90,30,0,1200,"1e-2 1 1e-12"],[90,30,1,12000,"1e-2 1 1e-12"], + [90,30,0,1200,"1e-2 1 1e-12"],[90,30,1,12000,"1e-2 1 1e-12"],[90,30,0,1200,"1e-2 1 1e-12"],[90,30,1,12000,"1e-2 1 1e-12"]] \ No newline at end of file diff --git a/src/pyopmnearwell/utils/inputvalues.py b/src/pyopmnearwell/utils/inputvalues.py index b05aad6..5ff78cb 100644 --- a/src/pyopmnearwell/utils/inputvalues.py +++ b/src/pyopmnearwell/utils/inputvalues.py @@ -29,6 +29,18 @@ def process_input(dic, in_file): dic["ycn"] = [1] with open(in_file, "rb") as file: dic.update(tomllib.load(file)) + if "flow" not in dic: + # For toml files without flow, we generate only the requested tables + if "safu" not in dic: + dic["safu"] = [1] + if "template" not in dic: + dic["template"] = "base" + if "model" not in dic: + dic["model"] = "co2store" + if "hysteresis" not in dic: + dic["hysteresis"] = 0 + dic["imbnum"] = 2 if dic["hysteresis"] != 0 else 1 + return dic dic["satnum"] = len(dic["rock"]) - dic["perforations"][0] dic["fluxnum"] = len(dic["rock"]) > 1 dic["imbnum"] = 2 if dic["hysteresis"] != 0 else 1 diff --git a/src/pyopmnearwell/utils/writefile.py b/src/pyopmnearwell/utils/writefile.py index 27f9f6c..5d5e6fa 100644 --- a/src/pyopmnearwell/utils/writefile.py +++ b/src/pyopmnearwell/utils/writefile.py @@ -50,6 +50,13 @@ def reservoir_files( dic (dict): Global dictionary with new added parameters """ + if "flow" not in dic: + # We generate only the tables + if "poroperm" in dic: + generate_permfact_pcfact(dic) + if "krw" in dic: + manage_tables(dic) + return inc_folder = pathlib.Path(kwargs.get("inc_folder", pathlib.Path(""))) recalc_grid = kwargs.get("recalc_grid", True) recalc_tables = kwargs.get("recalc_tables", True) @@ -423,23 +430,29 @@ def manage_sections(dic): f.write(result) if dic["model"] in ["saltprec"] or dic["template"] in ["biofilm"]: - result = generate_permfact(dic) + generate_permfact_pcfact(dic) + + +def generate_permfact_pcfact(dic): + "Generate both permfact and pcfact" + fprep = dic["fprep"] + result = generate_permfact(dic) + with open( + os.path.join(fprep, "PERMFACT.INC"), + "w", + encoding="utf-8", + ) as f: + f.writelines(HEADER) + f.writelines(result) + if dic["pcfact"] != 0: + result = generate_pcfact(dic) with open( - os.path.join(fprep, "PERMFACT.INC"), + os.path.join(fprep, "PCFACT.INC"), "w", encoding="utf-8", ) as f: f.writelines(HEADER) f.writelines(result) - if dic["pcfact"] != 0: - result = generate_pcfact(dic) - with open( - os.path.join(fprep, "PCFACT.INC"), - "w", - encoding="utf-8", - ) as f: - f.writelines(HEADER) - f.writelines(result) def generate_pcfact(dic): @@ -549,7 +562,9 @@ def manage_tables(dic): """Write the saturation function tables""" model = dic["model"] template = dic["template"].lower() - if model in ["co2store", "h2store", "saltprec"] and template != "h2ch4": + if model in ["h2store"] and template != "h2ch4": + result = generate_saturation_functions_gsf_wsf(dic) + elif model in ["co2store", "saltprec"]: result = generate_saturation_functions_format_2(dic) else: result = generate_saturation_functions_format_1(dic) @@ -557,6 +572,115 @@ def manage_tables(dic): f.writelines(result) +def generate_saturation_functions_gsf_wsf(dic): + "Using GSF and WSF" + krw_code = compile(dic["krw"].strip(), "", "eval") + krn_code = compile(dic["krn"].strip(), "", "eval") + pcap_code = compile(dic["pcap"].strip(), "", "eval") + + safeglob = {"__builtins__": {}, "np": np} + + safug = [[0.0] * len(dic["safu"][0]) for _ in range(len(dic["safu"]))] + safuw = [[0.0] * len(dic["safu"][0]) for _ in range(len(dic["safu"]))] + + for i in range(len(dic["safu"])): + for j in range(len(dic["safu"][i])): + value = dic["safu"][i][j] + safug[i][j] = value + + if dic["imbnum"] == 2 and j == 1 and len(dic["safu"]) / dic["imbnum"] <= i: + idx = i % (len(dic["safu"]) // dic["imbnum"]) + safuw[i][j] = dic["safu"][idx][j] + else: + safuw[i][j] = value + + lines = [] + lines.append("GSF\n") + for j, para in enumerate(safug): + if j > 0 and safug[j - 1] == para: + lines.append("/\n") + continue + + swi = para[0] + sni = para[1] + krn = para[3] + pen = para[4] + nkrn = para[6] + npen = para[7] + + sco2 = np.linspace(0, 1 - swi, para[10]) + sw_values = 1 - sco2 + pc_sw_values = sw_values + para[8] + + krn_vals = eval( # pylint: disable=eval-used + krn_code, + safeglob, + { + "sw": sw_values, + "swi": swi, + "sni": sni, + "krn": krn, + "nkrn": nkrn, + }, + ) + + krn_vals = np.maximum(0, krn_vals) + + if pen == 0: + pcw_vals = np.zeros_like(sco2) + else: + pcw_vals = eval( # pylint: disable=eval-used + pcap_code, + safeglob, + { + "sw": pc_sw_values, + "swi": swi, + "sni": sni, + "pen": pen, + "npen": npen, + }, + ) + + for i, value in enumerate(sco2): + lines.append(f"{value:E} {krn_vals[i]:E} {pcw_vals[i]:E} \n") + + lines.append("/\n") + + lines.append("WSF\n") + for j, para in enumerate(safuw): + if j > 0 and safuw[j - 1] == para: + lines.append("/\n") + continue + + swi = para[0] + sni = para[1] + krw = para[2] + nkrw = para[5] + + sw_values = np.linspace(swi, 1, para[10]) + + krw_vals = eval( # pylint: disable=eval-used + krw_code, + safeglob, + { + "sw": sw_values, + "swi": swi, + "sni": sni, + "krw": krw, + "nkrw": nkrw, + }, + ) + + krw_vals = np.maximum(0, krw_vals) + + for i, value in enumerate(sw_values): + lines.append(f"{value:E} {krw_vals[i]:E}\n") + + lines.append("/\n") + + return lines + + def generate_saturation_functions_format_2(dic): "Using SGFN and SWFN" diff --git a/tests/geometries/core.toml b/tests/geometries/core.toml index 812ecc9..b25905c 100644 --- a/tests/geometries/core.toml +++ b/tests/geometries/core.toml @@ -31,4 +31,4 @@ rock = [[1013.25,101.325,0.1,0.017,3],[2013.25,201.325,0.2,0.017,3],[4013.25,401 #Define the injection values (entry per change in the schedule): #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), 4) injection rates [kg/day]. #If --enable-tuning=1, then 5) for TUNING values as described in the OPM manual. -inj = [[2,1,1,0.05,"1e-2 1e-1"]] \ No newline at end of file +inj = [[2,1,1,0.05,"1e-2 1e-1 1e-12"]] \ No newline at end of file diff --git a/tests/models/biofilm.toml b/tests/models/biofilm.toml index 5e6ae4c..7637e74 100644 --- a/tests/models/biofilm.toml +++ b/tests/models/biofilm.toml @@ -18,14 +18,14 @@ zxy = "100*(x/1000)**2" #The function for the reservoir surface pcfact = 0.5 #Exponent for the capillary pressure factor (Leveret J-function) [-] #Set the saturation functions -krw = "krw * ((sw - swi) / (1.0 - sni -swi)) ** nkrw" #Wetting rel perm saturation function [-] -krn = "krn * ((1.0 - sw - sni) / (1.0 - sni - swi)) ** nkrn" #Non-wetting rel perm saturation function [-] -pcap = "pen * ((sw - swi) / (1.0 - swi)) ** (-(1.0 / npen))" #Capillary pressure saturation function [Bar] +krw = "krw * ((sw - swi) / (1.0 -swi)) ** nkrw" #Wetting rel perm saturation function [-] +krn = "krn * ((1.0 - sw - sni) / (1.0 - sni)) ** nkrn" #Non-wetting rel perm saturation function [-] +pcap = "pen * ((sw - swi) / (1.0 - swi)) ** (-(1.0 / npen))" #Capillary pressure saturation function [bar] #Properties sat functions: 1) swi [-], 2) sni [-], 3) krw [-], 4) krn [-], 5) pen [Bar], 6) nkrw [-], #7) nkrn [-], 8) npen [-], 9) threshold cP evaluation, 10) ignore swi for cP? (sl* for cplog) #11) npoints [-] (entry per layer, if hysteresis, additional entries per layer) -safu = [[0.15,0.1,1,1,0.0,2,2,2,1e-4,0,1001]] +safu = [[0.15,0,1,1,1,5,2,2,1e-4,0,100]] #Properties rock: 1) Kxy [mD], 2) Kz [mD], 3) phi [-], 4) thickness [m], and 5) no cells in the z dir [-] (entry per layer) rock = [[1013.25,101.325,0.25,50,50]] diff --git a/tests/models/h2ch4.toml b/tests/models/h2ch4.toml new file mode 100644 index 0000000..65a6ee7 --- /dev/null +++ b/tests/models/h2ch4.toml @@ -0,0 +1,35 @@ +#Set mpirun, the full path to the flow executable, and simulator flags (except --output-dir) +flow = "flow --linear-solver-reduction=1e-5 --relaxed-max-pv-fraction=0 --enable-drift-compensation=0 --newton-max-iterations=50 --newton-min-iterations=5 --tolerance-wells=1e-5 --relaxed-well-flow-tol=1e-5 --use-multisegment-well=false --solver-max-time-step-in-days=1 --enable-opm-rst-file=true --enable-well-operability-check=false --min-time-step-before-shutting-problematic-wells-in-days=1e-99" + +#Set the model parameters +model = "h2store" #Model: co2store, co2eor, foam, h2store, or saltprec +template = "H2CH4" #Template file (see src/pyopmnearwell/templates/) +grid = "cartesian" #Grid type: cake, radial, core, cartesian2d, coord2d, tensor2d, cartesian, cpg3d, coord3d, or tensor3d +xdim = 100 #Length [m] (for cartesian/cpg3d/coord3d/tensor3d, Length=Width=2*xdim) +xcn = [10] #Number of x-cells [-]; coordinates for grid type coord2d/coord3d [m]; numbers of x-cells for grid type tensor2d/tensor3d [-] +xfac = 2 #Exponential factor for the telescopic x-gridding (0 to use an equidistant partition) +diameter = 0.3 #Well diameter [m] +pressure = 40 #Pressure [Bar] on the top +temperature = [50,50] #Top and bottom temperatures [C] +initialphase = 0 #Initial phase in the reservoir (0 wetting, 1 non-wetting) +pvmult = 1e5 #Pore volume multiplier on the boundary [-] (-1 to ignore; 0 to use well producers instead) +econ = 0.95 #For h2 models, econ for the producer + +#Set the saturation functions +krw = "krw * ((sw - swi) / (1.0 - sni -swi)) ** nkrw" #Wetting rel perm saturation function [-] +krn = "krn * ((1.0 - sw - sni) / (1.0 - sni - swi)) ** nkrn" #Non-wetting rel perm saturation function [-] +pcap = "pen * ((sw - swi) / (1.0 - swi)) ** (-(1.0 / npen))" #Capillary pressure saturation function [Bar] + +#Properties sat functions: 1) swi [-], 2) sni [-], 3) krw [-], 4) krn [-], 5) pen [Bar], 6) nkrw [-], +#7) nkrn [-], 8) npen [-], 9) threshold cP evaluation, 10) ignore swi for cP? (sl* for cplog) +#11) npoints [-] (entry per layer, if hysteresis, additional entries per layer) +safu = [[0.15,0.05,1,1,0,2,2,2,1e-4,0,10000]] + +#Properties rock: 1) Kxy [mD], 2) Kz [mD], 3) phi [-], 4) thickness [m], and 5) no cells in the z dir [-] (entry per layer) +rock = [[1013.25,101.325,0.25,10,10]] + +#Define the injection values (entry per change in the schedule): +#1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), +#4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). +#If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. +inj = [[1,1,1,5000],[1,1,1,-5000,3e1]] diff --git a/tests/models/h2store.toml b/tests/models/h2store.toml index a14483d..787daf3 100644 --- a/tests/models/h2store.toml +++ b/tests/models/h2store.toml @@ -16,14 +16,14 @@ pvmult = 1e5 #Pore volume multiplier on the boundary [-] (-1 to ignore; 0 to use econ = 0.95 #For h2 models, econ for the producer #Set the saturation functions -krw = "krw * ((sw - swi) / (1.0 - sni -swi)) ** nkrw" #Wetting rel perm saturation function [-] -krn = "krn * ((1.0 - sw - sni) / (1.0 - sni - swi)) ** nkrn" #Non-wetting rel perm saturation function [-] -pcap = "pen * ((sw - swi) / (1.0 - swi)) ** (-(1.0 / npen))" #Capillary pressure saturation function [Bar] +krw = "krw * ((sw - swi) / (1.0 -swi)) ** nkrw" #Wetting rel perm saturation function [-] +krn = "krn * ((1.0 - sw - sni) / (1.0 - sni)) ** nkrn" #Non-wetting rel perm saturation function [-] +pcap = "pen * ((sw - swi) / (1.0 - swi)) ** (-(1.0 / npen))" #Capillary pressure saturation function [bar] #Properties sat functions: 1) swi [-], 2) sni [-], 3) krw [-], 4) krn [-], 5) pen [Bar], 6) nkrw [-], #7) nkrn [-], 8) npen [-], 9) threshold cP evaluation, 10) ignore swi for cP? (sl* for cplog) #11) npoints [-] (entry per layer, if hysteresis, additional entries per layer) -safu = [[0.15,0.05,1,1,0,2,2,2,1e-4,0,10000]] +safu = [[0.15,0,1,1,1,5,2,2,1e-4,0,100]] #Properties rock: 1) Kxy [mD], 2) Kz [mD], 3) phi [-], 4) thickness [m], and 5) no cells in the z dir [-] (entry per layer) rock = [[1013.25,101.325,0.25,10,10]] @@ -32,4 +32,4 @@ rock = [[1013.25,101.325,0.25,10,10]] #1) injection time [d], 2) time step size to write results [d], 3) fluid (0 wetting, 1 non-wetting), #4) injection rates [kg/day] (for h2store, 5) minimum BHP for producer [Bar]). #If --enable-tuning=1, then last entry for TUNING values as described in the OPM manual. -inj = [[1,1,1,5000],[1,1,1,-5000,3e1]] \ No newline at end of file +inj = [[1,1,1,5000],[1,1,1,-500,3e1]] \ No newline at end of file diff --git a/tests/test_models.py b/tests/test_models.py index 9c99117..ade8a5b 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -82,24 +82,24 @@ class ModelCase: default_template="base", keywords=("H2STORE",), templates=( - ModelTemplateExpected("base", 40.04848861694336, 40.92131805419922), - ModelTemplateExpected("gaswater", 40.04848861694336, 40.92131805419922), - ModelTemplateExpected("hwell", 40.04848861694336, 40.92131805419922), - ModelTemplateExpected("hwellnoise", 40.04848861694336, 40.92131805419922), + ModelTemplateExpected("base", 41.048431396484375, 41.92125701904297), + ModelTemplateExpected("gaswater", 41.048431396484375, 41.92125701904297), + ModelTemplateExpected("hwell", 41.048431396484375, 41.92125701904297), + ModelTemplateExpected("hwellnoise", 41.048431396484375, 41.92125701904297), ModelTemplateExpected( - "nodissolution", 40.04848861694336, 40.92131805419922 + "nodissolution", 41.048431396484375, 41.92125701904297 ), ModelTemplateExpected( - "okoroafor2023", 40.04848861694336, 40.92131805419922 + "okoroafor2023", 41.048431396484375, 41.92125701904297 ), ), ), ModelCase( - model="h2store", + model="h2ch4", default_template="base", keywords=("CH4",), templates=( - ModelTemplateExpected("H2CH4", 40.0012321472168, 40.023380279541016), + ModelTemplateExpected("h2ch4", 40.0012321472168, 40.023380279541016), ), ), ModelCase( @@ -125,7 +125,7 @@ class ModelCase: "PCFACT", ), templates=( - ModelTemplateExpected("biofilm", 40.048500061035156, 54.38808059692383), + ModelTemplateExpected("biofilm", 41.04844284057617, 55.40837860107422), ), ), ) diff --git a/tests/utils/update_test_models.py b/tests/utils/update_test_models.py index c166de1..bb7abd5 100644 --- a/tests/utils/update_test_models.py +++ b/tests/utils/update_test_models.py @@ -70,10 +70,10 @@ class ModelCase: ), ), ModelCase( - model="h2store", + model="h2ch4", default_template="base", keywords=("CH4",), - templates=("H2CH4",), + templates=("h2ch4",), ), ModelCase( model="saltprec",