diff --git a/.github/workflows/ci_pycopm_ubuntu.yml b/.github/workflows/ci_pycopm_ubuntu.yml index 4cdc29d..c586510 100644 --- a/.github/workflows/ci_pycopm_ubuntu.yml +++ b/.github/workflows/ci_pycopm_ubuntu.yml @@ -34,6 +34,7 @@ jobs: run: | black --target-version py314 src/ tests/ --check pylint src/ tests/ + ruff check src/ tests/ mypy --ignore-missing-imports src/ tests/ - name: Run tests diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04bf91d..5159c6e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,6 +6,7 @@ Contributions are more than welcome using the fork and pull request approach - We use [_Black code formatting_](https://black.readthedocs.io/en/stable/) - We use [_Pylint_](https://pylint.readthedocs.io/en/stable/) +- We use [_Ruff_](https://docs.astral.sh/ruff/) - We document our code ## Contribute to the software @@ -15,6 +16,7 @@ Contributions are more than welcome using the fork and pull request approach 1. **pip install -r dev-requirements.txt** (this installs the [_dev-requirements.txt_](https://github.com/cssr-tools/pycopm/blob/main/dev-requirements.txt)) 1. **black --target-version py314 src/ tests/** (this formats the code) 1. **pylint src/ tests/** (this analyses the code, and might rise issues that need to be fixed before the pull request) + 1. **ruff check src/ tests/** (this also analyses the code, and might rise issues that need to be fixed before the pull request) 1. **mypy --ignore-missing-imports src/ tests/** (this is a static checker, and might rise issues that need to be fixed before the pull request) 1. **pytest --cov=pycopm --cov-report term-missing --basetemp=test_outputs tests/ -n auto** (this runs locally the tests, and might rise issues that need to be fixed before the pull request) 1. **pycopm -i examples/decks/HELLO_WORLD.DATA -c 5,5,1 -m all -o output** (this runs the hello world example, which succeeds if the file output/HELLO_WORLD_PYCOPM.EGRID is created) diff --git a/README.md b/README.md index 8cd53cd..2b647b7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Build Status](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_ubuntu.yml/badge.svg)](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_ubuntu.yml) [![Build Status](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_macos.yml/badge.svg)](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_macos.yml) [![Build Status](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_docker.yml/badge.svg)](https://github.com/cssr-tools/pycopm/actions/workflows/ci_pycopm_docker.yml) - + [![Code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) diff --git a/dev-requirements.txt b/dev-requirements.txt index 2c7a267..ecd111a 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -3,5 +3,6 @@ mypy pylint pytest-cov pytest-xdist +ruff sphinx sphinx-rtd-theme diff --git a/docs/_images/hello_world_3_plopm.png b/docs/_images/hello_world_3_plopm.png deleted file mode 100644 index 1c72568..0000000 Binary files a/docs/_images/hello_world_3_plopm.png and /dev/null differ diff --git a/docs/_sources/configuration_file.rst.txt b/docs/_sources/configuration_file.rst.txt index 70049c6..509f3d0 100644 --- a/docs/_sources/configuration_file.rst.txt +++ b/docs/_sources/configuration_file.rst.txt @@ -18,10 +18,10 @@ The first input parameter is: :linenos: # Set mpirun, the full path to the flow executable, and simulator flags (except --output-dir) - flow = "flow --newton-min-iterations=1" + flow_command = "flow --newton-min-iterations=1" If **flow** is not in your path, then write the full path to the executable, as well as adding mpirun -if this is supported in your machine (e.g., flow = "mpirun -np 8 /Users/dmar/Github/opm/build/opm-simulators/bin/flow -\-newton-min-iterations=1"). +if this is supported in your machine (e.g., flow_command = "mpirun -np 8 /Users/dmar/Github/opm/build/opm-simulators/bin/flow -\-newton-min-iterations=1"). The next entries define the following parameters: @@ -30,32 +30,31 @@ The next entries define the following parameters: :lineno-start: 4 # Set the model parameters - field = "norne" # Geological model (norne or drogon) - mode = "ert" # Mode to run (single-run, files, or ert) - X = [0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,2,0,2,2,2,2,0] # Array of x-coarsening - Y = [0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,0] # Array of y-coarsening - Z = [0,0,2,0,0,2,2,2,2,2,0,2,2,2,2,2,0,0,2,0,2,2,0] # Array of z-coarsening - net = 2 # Number of ensembles - mep = 2 # Maximum number of ensembles running in parallel - mrt = 600 # Maximum runtime in seconds of a realization. A value of 0 means unlimited runtime. - mrn = 2 # Minimum number of realizations that must have succeeded for the simulation to be regarded as a success. - rds = 7 # Set a specific seed for reproducibility. A value of 0 means no seed. - obs = "observations_training" # Name of the observation file for the hm ('observations_training', 'observations_test', or 'observations_complete') - deck = 0 # Select which coarser deck to use: 0 -> default one or 1 -> LET sat functions - letsatn = 1 # For norne: for the LET coarser deck, select: 0 -> SATNUM=1, 1 -> SATNUM is computed from Sandve et al 2022, 2 -> #SATNUM=#Cells. - cporv = 0 # 0 -> no corrections for lost porv, 1 -> correct it on all cells - initial = 0 # Initialization 0 -> Equil 1->INIT from fine-scale - error = [0.1,0.1,0.1] # Error WWPR, WOPR, and WGPR - minerror = [100,100,100000] # Minimum error of WWPR, WOPR, and WGPR - date = 2005-03-01 # Last date to HM - suffixes = ["PRT"] # Delete files with this suffix to save storage + model_name = "norne" # Geological model (norne or drogon) + execution_mode = "single-run" # Mode to run (single-run, files, or ert) + x_coarsening = [0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,2,0,2,2,2,2,0] # Array of x-coarsening + y_coarsening = [0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,0] # Array of y-coarsening + z_coarsening = [0,0,2,0,0,2,2,2,2,2,0,2,2,2,2,2,0,0,2,0,2,2,0] # Array of z-coarsening + ensemble_size = 2 # Number of ensembles + max_parallel_realizations = 2 # Maximum number of ensembles running in parallel + max_realization_runtime_seconds = 600 # Maximum runtime in seconds of a realization. A value of 0 means unlimited runtime. + min_successful_realizations = 2 # Minimum number of realizations that must have succeeded for the simulation to be regarded as a success. + random_seed = 7 # Set a specific seed for reproducibility. A value of 0 means no seed. + saturation_function_method = 0 # Select which coarser deck to use: 0 -> default one or 1 -> LET sat functions + satnum_generation_method = 1 # For norne: for the LET coarser deck, select: 0 -> SATNUM=1, 1 -> SATNUM is computed from Sandve et al 2022, 2 -> #SATNUM=#Cells. + pore_volume_correction = 0 # 0 -> no corrections for lost porv, 1 -> correct it on all cells + initialization_method = 0 # Initialization 0 -> Equil 1->INIT from fine-scale + observation_relative_errors = [0.1,0.1,0.1] # Error WWPR, WOPR, and WGPR + observation_minimum_errors = [100,100,100000] # Minimum error of WWPR, WOPR, and WGPR + history_matching_end_date = 2005-03-01 # Last date to HM + cleanup_file_suffixes = ["PRT"] # Delete files with this suffix to save storage The single-run mode results in Flow running only one simulation and the information shown in the terminal is the one from the Flow executable instead of the ERT one. The ert option calls the ERT executable and the command values are given after in the same input file which are discussed later. The files option only writes the needed input files for ERT. -The X, Y, and Z inputs define which pillars are removed (value 2) in the x, y, and z direction respectively. +The x-, y, and z-coarsening inputs define which pillars are removed (value 2) in the x, y, and z direction respectively. .. figure:: figs/index.png .. figure:: figs/index_plopm.png @@ -70,8 +69,7 @@ Values of 0 do not remove the pilar. The remaining lines define the number of ensembles, maximum number of ensembles running in parallel, the maximum runtime in seconds to stop a realization (0 means unlimited time), the minimum number of realizations for the simulation to be regarded as a success, -the random seed for reproducibility (0 means no seed), the observation file for the hm -('observations_training.data', 'observations_test.data', or 'observations_complete.data'), to use the saturation +the random seed for reproducibility (0 means no seed), to use the saturation functions from opm-tests norne or to use the LET saturation functions, defining if each of the coarser cells is considered as only one region, regions as in Sandve et al 2022 or as a different SATNUM region, and the cporv entry sets if the ntg and poro properties on the cells on the boundary are modified to account for lost PV respect to the @@ -85,7 +83,7 @@ If the ert option is activated, then the following input: :lineno-start: 25 # Set the command line for the ert executable (gui, test_run, ensemble_experiment, ensemble_smoother, iterative_ensemble_smoother, and es_mda) and flags - ert = "es_mda --weights 1" + ert_arguments = "es_mda --weights 1" sets the type of ert option and command flags. Currently, the options supported are gui, test_run, ensemble_experiment, ensemble_smoother, iterative_ensemble_smoother, and es_mda. Confer to the `ERT `_ documentation for a full description of these options. @@ -97,7 +95,7 @@ The LET saturation function parameters for each of the coarsened cells are given :lineno-start: 28 # Properties LET saturation functions: name, value, use dist in hm?, dist, distpara, distpara - LET = [["lw", 3, 1, "UNIFORM", 1.1, 5], + let_parameters = [["lw", 3, 1, "UNIFORM", 1.1, 5], ["ew", 1, 1, "UNIFORM", -1, 2], ["tw", 3, 1, "UNIFORM", 1.1, 5], ["lo", 3, 1, "UNIFORM", 1.1, 5], @@ -125,7 +123,7 @@ Finally, we set if the permeabilities will be considered for the hm: :lineno-start: 48 # Coarser rock properties: name, use dist in hm?, coarsing approach (max or mean) - rock = [["PERMX", 1, "max"], + rock_property_settings = [["PERMX", 1, "max"], ["PERMY", 0, "max"], ["PERMZ", 0, "max"]] diff --git a/docs/_sources/contributing.rst.txt b/docs/_sources/contributing.rst.txt index 59a50f1..7fe2289 100644 --- a/docs/_sources/contributing.rst.txt +++ b/docs/_sources/contributing.rst.txt @@ -11,7 +11,7 @@ Ground Rules ============ - We use Black code formatting -- We use Pylint +- We use Pylint and Ruff code analysis tools - We document our code ========================== @@ -24,6 +24,7 @@ Contribute to the software #. **pip install -r dev-requirements.txt** (this installs the `dev-requirements.txt `_) #. **black \-\-target-version py314 src/ tests/** (this formats the code) #. **pylint src/ tests/** (this analyses the code, and might rise issues that need to be fixed before the pull request) + #. **ruff check src/ tests/** (this also analyses the code, and might rise issues that need to be fixed before the pull request) #. **mypy \-\-ignore-missing-imports src/ tests/** (this is a static checker, and might rise issues that need to be fixed before the pull request) #. **pytest \-\-cov=pycopm \-\-cov-report term-missing \-\-basetemp=test_outputs tests/ -n auto** (this runs locally the tests, and might rise issues that need to be fixed before the pull request) #. **pycopm -i examples/decks/HELLO_WORLD.DATA -c 5,5,1 -m all -o output** (this runs the hello world example, which succeeds if the file output/HELLO_WORLD_PYCOPM.EGRID is created) diff --git a/docs/_sources/installation.rst.txt b/docs/_sources/installation.rst.txt index b64e284..22fd297 100644 --- a/docs/_sources/installation.rst.txt +++ b/docs/_sources/installation.rst.txt @@ -4,7 +4,7 @@ Installation The following steps work installing the dependencies in Ubuntu via apt-get or in macOS using `brew `_ or `macports `_. While using package managers such as Anaconda, Miniforge, or Mamba might work, these are not tested. -The supported Python versions are 3.11 to 3.14. +The supported Python versions are 3.12 to 3.14. .. note:: diff --git a/docs/_sources/introduction.rst.txt b/docs/_sources/introduction.rst.txt index 91753aa..b01867f 100644 --- a/docs/_sources/introduction.rst.txt +++ b/docs/_sources/introduction.rst.txt @@ -38,7 +38,7 @@ where -f OPM Flow path to executable (e.g., /home/pycopm/build/opm-simulators/bin/flow), or just 'flow' if this was installed via binaries or if the folder where flow is built has been added to your path ('flow' by default). -m Execute a dry run of the input deck to generate the static properties ('prep'), generate only the modified files ('deck'), only exectute a dry run on the generated model ('dry'), 'prep_deck', 'deck_dry', or do all ('all') ('prep_deck' by default). -v The location to extract the sub model which can be assigned by region values, e.g., 'fipnum 2,4' extracts the cells with fipnums equal to 2 or 4, by a polygon given the xy locations in meters, e.g., 'xypolygon [0,0] [30,0] [30,30] [0,0]', or by the name of the well and three different options for the neighbourhood: box, diamond, and diamondxy, where for box the i, j, and k interval around the connections are given, e.g., 'welln box [-1,1] [-2,2] [0,3]' results in a vicinity with 1 pm cell in the x direction, 2 pm cells in the y direction and only 3 cells in the k positive direction, while the diamond considers only the given number of cells around the well connections (e.g., 'welln diamond 2') and diamondxy it is restricted to the xy plane ('' by default). --c Level of coarsening in the x, y, and z dir ('2,2,2' by default; either use this flag or the -x, -y, and -z ones). +-c Level of coarsening in the x, y, and z dir (',' by default; either use this flag or the -x, -y, and -z ones). -x Array of x-coarsening, e.g., if the grid has 6 cells in the x direction, then '0,2,0,2,0,2,0' would generate a coarsened model with 3 cells, while '0,2,2,2,2,2,0' would generate a coarser model with 1 cell, i.e., 0 keeps the pilars while 2 removes them. As an alternative, the range of the cells to coarse can be given separate them by commas, e.g., '1:3,5:6' generates a coarsened model with 3 cells where the cells with the first three and two last i indices are coarsened to one ('' by default), -y Array of y-coarsening, see the description for -x ('' by default). -z Array of z-coarsening, see the description for -x ('' by default). @@ -46,9 +46,9 @@ where -rx Array of x-refinement, e.g., if the grid has 6 cells in the x direction, then '0,1,0,2,0,4' would generate a refined model with 13 cells, while 0,0,0,1,0,0 would generate a refined model with 7 cells ('' by default). -ry Array of y-refinement, see the description for -rx ('' by default). -rz Array of z-refinement, see the description for -rx ('' by default). --a In coarsening, use 'min', 'max', or 'mode' to scale the actnum, e.g., 'min' makes the new coarser cell inactive if at least one cell is inactive, while 'max' makes it active it at least one cell is active ('mode' by default). --n In coarsening, use 'min', 'max', or 'mode' to scale endnum, eqlnum, fipnum, fluxnum, imbnum, miscnum, multnum, opernum, pvtnum, rocknum, and satnum ('mode' by default). --s In coarsening, use 'min', 'max', 'mean', or 'pvmean' to scale permx, permy, permz, poro, swatinit, disperc, thconr, and all mult(-)xyz ('' by default, i.e., using the arithmetic average for permx/permy, harmonic average for permz, volume weighted mean for mult(-)xyz, and the pore volume weighted mean ('pvmean') for the rest). +-a In coarsening, use 'min', 'max', or 'mode' to scale the actnum, e.g., 'min' makes the new coarser cell inactive if at least one cell is inactive, while 'max' makes it active it at least one cell is active ('mode' by default). For range coarsenings using -z, then one can specify this per layer, e.g., '-z 1:10,11:15 -a min,mode'. +-n In coarsening, use 'min', 'max', or 'mode' to scale endnum, eqlnum, fipnum, fluxnum, imbnum, miscnum, multnum, opernum, pvtnum, rocknum, and satnum ('mode' by default). For range coarsenings using -z, then one can specify this per layer, e.g., '-z 1:3,4 -a max,min'. +-s In coarsening, use 'min', 'max', 'mean', or 'pvmean' to scale permx, permy, permz, poro, swatinit, disperc, thconr, and all mult(-)xyz ('' by default, i.e., using the arithmetic average for permx/permy, harmonic average for permz, volume weighted mean for mult(-)xyz, and the pore volume weighted mean ('pvmean') for the rest). . For range coarsenings using -z, then one can specify this per layer, e.g., '-z 1:40,41:43,44:50 -a pvmean,max,pvmean'. -p In coarsening, set to '1' to add the removed pore volume to the closest coarser cells, while in submodels '1' adds the porv from outside on the boundary of the submodel, '2' adds the corner regions (e.g., below the mini and minj from the input model) to the corners in the submodel, '3' distributes the porv uniformly along the boundary, and '4' distributes it on the whole submodel ('0' by default, i.e., no porv correction). -q Adjust the pv to the initial FGIP and FOIP from the input deck; use this option only for systems with initial oil, gas, and water, e.g., norne or drogon, but no in Smeaheia ('0' by default, '1' to enable). -t In coarsening, write and use upscaled transmissibilities by ('1') armonic averaging and summing the transmissibilities in the corresponding coarsening direction and ('2') scaling the face transmissibily on the coarse faces ('0' by default, i.e., transmissibilities are not used). @@ -61,3 +61,4 @@ where -d Options to transform the x,y,z coordinates: 'translate [10,-5,4]' adds the values in meters to the coordinates, 'scale [1,2,3]' multiplies the coordinates by the given values respectively, and 'rotatexy 45' applies a rotation in degrees in the xy plane (rotatexz and rotateyz applies a rotation around the y and x axis respectively) ('' by default). -explicit Set to 1 to explicitly write the cell values in the SOLUTION section in the deck ('0' by default). -dual Set the criterium to differentiate net and non-net in coarsening using a static variable, e.g., 'poro <= 0.1' ('' by default). +-precision Set the number of significant digits used when writing floating-point values, or 0 to use machine precision diff --git a/docs/_sources/pycopm.utils.coarsening.rst.txt b/docs/_sources/pycopm.utils.coarsening.rst.txt new file mode 100644 index 0000000..79755a1 --- /dev/null +++ b/docs/_sources/pycopm.utils.coarsening.rst.txt @@ -0,0 +1,8 @@ +pycopm.utils.coarsening module +============================== + +.. automodule:: pycopm.utils.coarsening + :members: + :private-members: + :show-inheritance: + :undoc-members: diff --git a/docs/text/pycopm.utils.generate_files.rst b/docs/_sources/pycopm.utils.generate_decks.rst.txt similarity index 58% rename from docs/text/pycopm.utils.generate_files.rst rename to docs/_sources/pycopm.utils.generate_decks.rst.txt index d351ea6..584ce44 100644 --- a/docs/text/pycopm.utils.generate_files.rst +++ b/docs/_sources/pycopm.utils.generate_decks.rst.txt @@ -1,7 +1,7 @@ -pycopm.utils.generate\_files module +pycopm.utils.generate\_decks module =================================== -.. automodule:: pycopm.utils.generate_files +.. automodule:: pycopm.utils.generate_decks :members: :private-members: :show-inheritance: diff --git a/docs/_sources/pycopm.utils.grid_builder.rst.txt b/docs/_sources/pycopm.utils.grid_builder.rst.txt deleted file mode 100644 index bacb48c..0000000 --- a/docs/_sources/pycopm.utils.grid_builder.rst.txt +++ /dev/null @@ -1,8 +0,0 @@ -pycopm.utils.grid\_builder module -================================= - -.. automodule:: pycopm.utils.grid_builder - :members: - :private-members: - :show-inheritance: - :undoc-members: diff --git a/docs/_sources/pycopm.utils.mapping_methods.rst.txt b/docs/_sources/pycopm.utils.mapping_methods.rst.txt deleted file mode 100644 index d251db3..0000000 --- a/docs/_sources/pycopm.utils.mapping_methods.rst.txt +++ /dev/null @@ -1,8 +0,0 @@ -pycopm.utils.mapping\_methods module -==================================== - -.. automodule:: pycopm.utils.mapping_methods - :members: - :private-members: - :show-inheritance: - :undoc-members: diff --git a/docs/_sources/pycopm.utils.properties_builder.rst.txt b/docs/_sources/pycopm.utils.properties_builder.rst.txt deleted file mode 100644 index 03ea808..0000000 --- a/docs/_sources/pycopm.utils.properties_builder.rst.txt +++ /dev/null @@ -1,8 +0,0 @@ -pycopm.utils.properties\_builder module -======================================= - -.. automodule:: pycopm.utils.properties_builder - :members: - :private-members: - :show-inheritance: - :undoc-members: diff --git a/docs/_sources/pycopm.utils.refinement.rst.txt b/docs/_sources/pycopm.utils.refinement.rst.txt new file mode 100644 index 0000000..97c6cb0 --- /dev/null +++ b/docs/_sources/pycopm.utils.refinement.rst.txt @@ -0,0 +1,8 @@ +pycopm.utils.refinement module +============================== + +.. automodule:: pycopm.utils.refinement + :members: + :private-members: + :show-inheritance: + :undoc-members: diff --git a/docs/_sources/pycopm.utils.rst.txt b/docs/_sources/pycopm.utils.rst.txt index e70d4f4..32cd074 100644 --- a/docs/_sources/pycopm.utils.rst.txt +++ b/docs/_sources/pycopm.utils.rst.txt @@ -7,14 +7,15 @@ Submodules .. toctree:: :maxdepth: 4 + pycopm.utils.coarsening pycopm.utils.files_writer - pycopm.utils.generate_files - pycopm.utils.grid_builder + pycopm.utils.generate_decks pycopm.utils.input_values - pycopm.utils.mapping_methods pycopm.utils.parser_deck - pycopm.utils.properties_builder + pycopm.utils.refinement pycopm.utils.runs_executer + pycopm.utils.transformation + pycopm.utils.vicinity Module contents --------------- diff --git a/docs/_sources/pycopm.utils.transformation.rst.txt b/docs/_sources/pycopm.utils.transformation.rst.txt new file mode 100644 index 0000000..df23dfe --- /dev/null +++ b/docs/_sources/pycopm.utils.transformation.rst.txt @@ -0,0 +1,8 @@ +pycopm.utils.transformation module +================================== + +.. automodule:: pycopm.utils.transformation + :members: + :private-members: + :show-inheritance: + :undoc-members: diff --git a/docs/_sources/pycopm.utils.vicinity.rst.txt b/docs/_sources/pycopm.utils.vicinity.rst.txt new file mode 100644 index 0000000..cee4d8d --- /dev/null +++ b/docs/_sources/pycopm.utils.vicinity.rst.txt @@ -0,0 +1,8 @@ +pycopm.utils.vicinity module +============================ + +.. automodule:: pycopm.utils.vicinity + :members: + :private-members: + :show-inheritance: + :undoc-members: diff --git a/docs/configuration_file.html b/docs/configuration_file.html index b489a3a..6f4612a 100644 --- a/docs/configuration_file.html +++ b/docs/configuration_file.html @@ -96,39 +96,38 @@

Configuration fileinput.toml). The first input parameter is:

1# Set mpirun, the full path to the flow executable, and simulator flags (except --output-dir)
-2flow = "flow --newton-min-iterations=1"
+2flow_command = "flow --newton-min-iterations=1"
 

If flow is not in your path, then write the full path to the executable, as well as adding mpirun -if this is supported in your machine (e.g., flow = “mpirun -np 8 /Users/dmar/Github/opm/build/opm-simulators/bin/flow --newton-min-iterations=1”).

+if this is supported in your machine (e.g., flow_command = “mpirun -np 8 /Users/dmar/Github/opm/build/opm-simulators/bin/flow --newton-min-iterations=1”).

The next entries define the following parameters:

 4# Set the model parameters
- 5field = "norne"  # Geological model (norne or drogon)
- 6mode = "ert" # Mode to run (single-run, files, or ert)
- 7X = [0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,2,0,2,2,2,2,0] # Array of x-coarsening
- 8Y = [0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,0] # Array of y-coarsening
- 9Z = [0,0,2,0,0,2,2,2,2,2,0,2,2,2,2,2,0,0,2,0,2,2,0] # Array of z-coarsening
-10net = 2 # Number of ensembles
-11mep = 2 # Maximum number of ensembles running in parallel
-12mrt = 600 # Maximum runtime in seconds of a realization. A value of 0 means unlimited runtime.
-13mrn = 2 # Minimum number of realizations that must have succeeded for the simulation to be regarded as a success.
-14rds = 7 # Set a specific seed for reproducibility. A value of 0 means no seed.
-15obs = "observations_training" # Name of the observation file for the hm ('observations_training', 'observations_test', or 'observations_complete')
-16deck = 0 # Select which coarser deck to use: 0 -> default one or 1 -> LET sat functions
-17letsatn = 1 # For norne: for the LET coarser deck, select: 0 -> SATNUM=1, 1 -> SATNUM is computed from Sandve et al 2022, 2 -> #SATNUM=#Cells.
-18cporv = 0 # 0 -> no corrections for lost porv, 1 -> correct it on all cells
-19initial = 0 # Initialization 0 -> Equil 1->INIT from fine-scale
-20error = [0.1,0.1,0.1] # Error WWPR, WOPR, and WGPR
-21minerror = [100,100,100000] # Minimum error of WWPR, WOPR, and WGPR
-22date = 2005-03-01 # Last date to HM
-23suffixes = ["PRT"] # Delete files with this suffix to save storage
+ 5model_name = "norne"  # Geological model (norne or drogon)
+ 6execution_mode = "single-run" # Mode to run (single-run, files, or ert)
+ 7x_coarsening = [0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,2,0,2,2,2,2,0] # Array of x-coarsening
+ 8y_coarsening = [0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,0] # Array of y-coarsening
+ 9z_coarsening = [0,0,2,0,0,2,2,2,2,2,0,2,2,2,2,2,0,0,2,0,2,2,0] # Array of z-coarsening
+10ensemble_size = 2 # Number of ensembles
+11max_parallel_realizations = 2 # Maximum number of ensembles running in parallel
+12max_realization_runtime_seconds = 600 # Maximum runtime in seconds of a realization. A value of 0 means unlimited runtime.
+13min_successful_realizations = 2 # Minimum number of realizations that must have succeeded for the simulation to be regarded as a success.
+14random_seed = 7 # Set a specific seed for reproducibility. A value of 0 means no seed.
+15saturation_function_method = 0 # Select which coarser deck to use: 0 -> default one or 1 -> LET sat functions
+16satnum_generation_method = 1 # For norne: for the LET coarser deck, select: 0 -> SATNUM=1, 1 -> SATNUM is computed from Sandve et al 2022, 2 -> #SATNUM=#Cells.
+17pore_volume_correction = 0 # 0 -> no corrections for lost porv, 1 -> correct it on all cells
+18initialization_method = 0 # Initialization 0 -> Equil 1->INIT from fine-scale
+19observation_relative_errors = [0.1,0.1,0.1] # Error WWPR, WOPR, and WGPR
+20observation_minimum_errors = [100,100,100000] # Minimum error of WWPR, WOPR, and WGPR
+21history_matching_end_date = 2005-03-01 # Last date to HM
+22cleanup_file_suffixes = ["PRT"] # Delete files with this suffix to save storage
 

The single-run mode results in Flow running only one simulation and the information shown in the terminal is the one from the Flow executable instead of the ERT one. The ert option calls the ERT executable and the command values are given after in the same input file which are discussed later. The files option only writes the needed input files for ERT.

-

The X, Y, and Z inputs define which pillars are removed (value 2) in the x, y, and z direction respectively.

+

The x-, y, and z-coarsening inputs define which pillars are removed (value 2) in the x, y, and z direction respectively.

_images/index.png
@@ -146,8 +145,7 @@

Configuration file
25# Set the command line for the ert executable (gui, test_run, ensemble_experiment, ensemble_smoother, iterative_ensemble_smoother, and es_mda) and flags
-26ert = "es_mda --weights 1"
+26ert_arguments = "es_mda --weights 1"
 

sets the type of ert option and command flags. Currently, the options supported are gui, test_run, ensemble_experiment, ensemble_smoother, iterative_ensemble_smoother, and es_mda. Confer to the ERT documentation for a full description of these options.

The LET saturation function parameters for each of the coarsened cells are given in the following entry:

28# Properties LET saturation functions: name, value, use dist in hm?, dist, distpara, distpara
-29LET = [["lw", 3, 1, "UNIFORM", 1.1,   5],
+29let_parameters = [["lw", 3, 1, "UNIFORM", 1.1,   5],
 30["ew",        1, 1, "UNIFORM", -1,    2],
 31["tw",        3, 1, "UNIFORM", 1.1,   5],
 32["lo",        3, 1, "UNIFORM", 1.1,   5],
@@ -185,7 +183,7 @@ 

Configuration file
48# Coarser rock properties: name, use dist in hm?, coarsing approach (max or mean)
-49rock = [["PERMX", 1, "max"],
+49rock_property_settings = [["PERMX", 1, "max"],
 50["PERMY",         0, "max"],
 51["PERMZ",         0, "max"]]
 
diff --git a/docs/contributing.html b/docs/contributing.html index 0d72217..84efd54 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -96,7 +96,7 @@

Contributing

  • We use Black code formatting

  • -
  • We use Pylint

  • +
  • We use Pylint and Ruff code analysis tools

  • We document our code

@@ -110,6 +110,7 @@

Contribute to the softwaredev-requirements.txt)

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

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

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

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

  • pytest --cov=pycopm --cov-report term-missing --basetemp=test_outputs tests/ -n auto (this runs locally the tests, and might rise issues that need to be fixed before the pull request)

  • pycopm -i examples/decks/HELLO_WORLD.DATA -c 5,5,1 -m all -o output (this runs the hello world example, which succeeds if the file output/HELLO_WORLD_PYCOPM.EGRID is created)

  • diff --git a/docs/genindex.html b/docs/genindex.html index 231ab94..9e646b6 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -81,14 +81,15 @@

    Index

    - A + _ + | A | B | C + | D | E | F | G | H - | I | L | M | N @@ -97,191 +98,315 @@

    Index

    | R | S | T + | V | W + | X + | Y + | Z
    -

    A

    +

    _

    - -
    - -

    B

    - - -
    - -

    C

    - -
    -

    E

    +

    A

    -
    - -

    F

    -
    -

    G

    +

    B

    -

    H

    +

    C

    +
    + +

    D

    + + + +
    + +

    E

    + + +
    -

    I

    +

    F

    + +
    + +

    G

    + + +
    + +

    H

    + +
    @@ -289,7 +414,21 @@

    I

    L

    +
    @@ -299,11 +438,25 @@

    M

    +

    N

    -
    @@ -354,7 +511,11 @@

    N

    O

    +
    @@ -362,11 +523,19 @@

    O

    P

    @@ -460,11 +636,29 @@

    P

    R

  • - pycopm.utils.files_writer + pycopm.utils.coarsening
    • - pycopm.utils.generate_files + pycopm.utils.files_writer
    • - pycopm.utils.grid_builder + pycopm.utils.generate_decks
    • @@ -427,31 +596,38 @@

      P

  • - pycopm.utils.mapping_methods + pycopm.utils.parser_deck
  • - pycopm.utils.parser_deck + pycopm.utils.refinement
  • - pycopm.utils.properties_builder + pycopm.utils.runs_executer
  • - pycopm.utils.runs_executer + pycopm.utils.transformation
  • +
  • + pycopm.utils.vicinity + +
  • @@ -472,11 +666,23 @@

    R

    S

    @@ -484,7 +690,23 @@

    S

    T

    + +
    + +

    V

    + + +
    @@ -492,16 +714,72 @@

    T

    W

    +
    + +

    X

    + + +
    + +

    Y

    + + +
    + +

    Z

    + +
    diff --git a/docs/installation.html b/docs/installation.html index 4d0485f..2007e6a 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -95,7 +95,7 @@

    Installation

    The following steps work installing the dependencies in Ubuntu via apt-get or in macOS using brew or macports. While using package managers such as Anaconda, Miniforge, or Mamba might work, these are not tested. -The supported Python versions are 3.11 to 3.14.

    +The supported Python versions are 3.12 to 3.14.

    Note

    In Ubuntu, one also needs to install freeglut3-dev:

    diff --git a/docs/introduction.html b/docs/introduction.html index 2ab646c..e500be9 100644 --- a/docs/introduction.html +++ b/docs/introduction.html @@ -128,7 +128,7 @@

    Roadmap

    The location to extract the sub model which can be assigned by region values, e.g., ‘fipnum 2,4’ extracts the cells with fipnums equal to 2 or 4, by a polygon given the xy locations in meters, e.g., ‘xypolygon [0,0] [30,0] [30,30] [0,0]’, or by the name of the well and three different options for the neighbourhood: box, diamond, and diamondxy, where for box the i, j, and k interval around the connections are given, e.g., ‘welln box [-1,1] [-2,2] [0,3]’ results in a vicinity with 1 pm cell in the x direction, 2 pm cells in the y direction and only 3 cells in the k positive direction, while the diamond considers only the given number of cells around the well connections (e.g., ‘welln diamond 2’) and diamondxy it is restricted to the xy plane (’’ by default).

    -c
    -

    Level of coarsening in the x, y, and z dir (‘2,2,2’ by default; either use this flag or the -x, -y, and -z ones).

    +

    Level of coarsening in the x, y, and z dir (‘,’ by default; either use this flag or the -x, -y, and -z ones).

    -x

    Array of x-coarsening, e.g., if the grid has 6 cells in the x direction, then ‘0,2,0,2,0,2,0’ would generate a coarsened model with 3 cells, while ‘0,2,2,2,2,2,0’ would generate a coarser model with 1 cell, i.e., 0 keeps the pilars while 2 removes them. As an alternative, the range of the cells to coarse can be given separate them by commas, e.g., ‘1:3,5:6’ generates a coarsened model with 3 cells where the cells with the first three and two last i indices are coarsened to one (’’ by default),

    @@ -152,13 +152,13 @@

    Roadmap

    Array of z-refinement, see the description for -rx (’’ by default).

    -a
    -

    In coarsening, use ‘min’, ‘max’, or ‘mode’ to scale the actnum, e.g., ‘min’ makes the new coarser cell inactive if at least one cell is inactive, while ‘max’ makes it active it at least one cell is active (‘mode’ by default).

    +

    In coarsening, use ‘min’, ‘max’, or ‘mode’ to scale the actnum, e.g., ‘min’ makes the new coarser cell inactive if at least one cell is inactive, while ‘max’ makes it active it at least one cell is active (‘mode’ by default). For range coarsenings using -z, then one can specify this per layer, e.g., ‘-z 1:10,11:15 -a min,mode’.

    -n
    -

    In coarsening, use ‘min’, ‘max’, or ‘mode’ to scale endnum, eqlnum, fipnum, fluxnum, imbnum, miscnum, multnum, opernum, pvtnum, rocknum, and satnum (‘mode’ by default).

    +

    In coarsening, use ‘min’, ‘max’, or ‘mode’ to scale endnum, eqlnum, fipnum, fluxnum, imbnum, miscnum, multnum, opernum, pvtnum, rocknum, and satnum (‘mode’ by default). For range coarsenings using -z, then one can specify this per layer, e.g., ‘-z 1:3,4 -a max,min’.

    -s
    -

    In coarsening, use ‘min’, ‘max’, ‘mean’, or ‘pvmean’ to scale permx, permy, permz, poro, swatinit, disperc, thconr, and all mult(-)xyz (’’ by default, i.e., using the arithmetic average for permx/permy, harmonic average for permz, volume weighted mean for mult(-)xyz, and the pore volume weighted mean (‘pvmean’) for the rest).

    +

    In coarsening, use ‘min’, ‘max’, ‘mean’, or ‘pvmean’ to scale permx, permy, permz, poro, swatinit, disperc, thconr, and all mult(-)xyz (’’ by default, i.e., using the arithmetic average for permx/permy, harmonic average for permz, volume weighted mean for mult(-)xyz, and the pore volume weighted mean (‘pvmean’) for the rest). . For range coarsenings using -z, then one can specify this per layer, e.g., ‘-z 1:40,41:43,44:50 -a pvmean,max,pvmean’.

    -p

    In coarsening, set to ‘1’ to add the removed pore volume to the closest coarser cells, while in submodels ‘1’ adds the porv from outside on the boundary of the submodel, ‘2’ adds the corner regions (e.g., below the mini and minj from the input model) to the corners in the submodel, ‘3’ distributes the porv uniformly along the boundary, and ‘4’ distributes it on the whole submodel (‘0’ by default, i.e., no porv correction).

    @@ -196,6 +196,9 @@

    Roadmap
    -dual

    Set the criterium to differentiate net and non-net in coarsening using a static variable, e.g., ‘poro <= 0.1’ (’’ by default).

    +
    -precision
    +

    Set the number of significant digits used when writing floating-point values, or 0 to use machine precision

    +
    diff --git a/docs/objects.inv b/docs/objects.inv index 6de14f6..a92b845 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/output_folder.html b/docs/output_folder.html index a49d3c9..6e92012 100644 --- a/docs/output_folder.html +++ b/docs/output_folder.html @@ -21,7 +21,7 @@ - + @@ -128,7 +128,7 @@

    Via an OPM Flow input deck - +

    diff --git a/docs/py-modindex.html b/docs/py-modindex.html index 5efae51..8803155 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -115,17 +115,17 @@

    Python Module Index

        - pycopm.utils.files_writer + pycopm.utils.coarsening     - pycopm.utils.generate_files + pycopm.utils.files_writer     - pycopm.utils.grid_builder + pycopm.utils.generate_decks @@ -135,22 +135,27 @@

    Python Module Index

        - pycopm.utils.mapping_methods + pycopm.utils.parser_deck     - pycopm.utils.parser_deck + pycopm.utils.refinement + + + +     + pycopm.utils.runs_executer     - pycopm.utils.properties_builder + pycopm.utils.transformation     - pycopm.utils.runs_executer + pycopm.utils.vicinity diff --git a/docs/pycopm.core.html b/docs/pycopm.core.html index f180e36..3c2d2b5 100644 --- a/docs/pycopm.core.html +++ b/docs/pycopm.core.html @@ -90,8 +90,9 @@

    Submodules
    • pycopm.core.pycopm module
    • diff --git a/docs/pycopm.core.pycopm.html b/docs/pycopm.core.pycopm.html index 46e5e4f..836ba88 100644 --- a/docs/pycopm.core.pycopm.html +++ b/docs/pycopm.core.pycopm.html @@ -86,31 +86,182 @@

      pycopm.core.pycopm module

      -

      Main script for pycopm

      +

      Command-line entry point and top-level workflow coordination for pycopm.

      +

      pycopm supports two input workflows:

      +
        +
      • OPM .DATA decks can be coarsened, refined, transformed, or reduced to a +submodel.

      • +
      • TOML configurations generate coarsened Norne or Drogon cases and can +optionally run OPM Flow or ERT studies.

      • +
      +

      This module parses and validates command-line arguments, selects the appropriate +workflow, and coordinates its major processing steps. The numerical and +file-generation details are implemented in the utility modules.

      +
      +
      +pycopm.core.pycopm._check_cmdargs(cmdargs: dict[str, str]) None
      +

      Validate command-line arguments and incompatible operations.

      +

      The checks cover input type, Flow availability, coarsening and refinement +syntax, aggregation methods, vicinity selections, transformations, and +options restricted to particular workflows.

      +
      +
      Parameters:
      +

      cmdargs – Parsed arguments returned by _parse_arguments().

      +
      +
      Raises:
      +

      SystemExit – If an argument is invalid or an incompatible combination is requested.

      +
      +
      +
      +
      -
      -pycopm.core.pycopm.check_cmdargs(cmdargs)
      -

      Check for invalid combinations of command arguments

      +
      +pycopm.core.pycopm._check_flow(flow_cmdargs: str, flow_toml: str, input_file: str) str
      +

      Select an available OPM Flow command for a TOML workflow.

      Parameters:
      -

      cmdargs (dict) – Command flags

      +
        +
      • flow_cmdargs – Flow command supplied through the command line.

      • +
      • flow_toml – Flow command read from the TOML configuration.

      • +
      • input_file – TOML filename used in validation messages.

      • +
      Returns:
      -

      None

      +

      The selected Flow command.

      +
      +
      Return type:
      +

      str

      +
      +
      Raises:
      +

      SystemExit – If neither command identifies a working Flow executable.

      -
      -pycopm.core.pycopm.load_parser(argv)
      -

      Argument options

      +
      +pycopm.core.pycopm._parse_arguments(argv: Sequence[str] | None = None) dict[str, str]
      +

      Parse supported command-line arguments.

      +

      Unknown arguments are left unprocessed for compatibility with external +launchers.

      +
      +
      Parameters:
      +

      argv – Command-line arguments. If omitted, arguments are read from sys.argv.

      +
      +
      Returns:
      +

      Arguments keyed by their destination names.

      +
      +
      Return type:
      +

      dict[str, str]

      +
      +
      -pycopm.core.pycopm.main(argv=None)
      -

      Main function for the pycopm executable

      +pycopm.core.pycopm.main(argv: Sequence[str] | None = None) None +

      Run the deck-based or TOML-based pycopm workflow.

      +

      OPM .DATA decks can be coarsened, refined, transformed, or reduced to +a submodel. TOML configurations generate coarsened Norne or Drogon cases +and can optionally run OPM Flow or ERT studies.

      +
      +
      Parameters:
      +
        +
      • argv – Command-line arguments. If omitted, arguments are read from +sys.argv.

      • +
      • -i – Input .DATA deck or TOML configuration file.

      • +
      • --input_deck_path – Input .DATA deck or TOML configuration file.

      • +
      • -o – Directory for generated decks, include files, and simulation results.

      • +
      • --output_directory – Directory for generated decks, include files, and simulation results.

      • +
      • -f – Command or path used to run OPM Flow.

      • +
      • --flow_command – Command or path used to run OPM Flow.

      • +
      • -m – Deck-processing stages to run: prep, deck, dry, +prep_deck, deck_dry, or all.

      • +
      • --execution_mode – Deck-processing stages to run: prep, deck, dry, +prep_deck, deck_dry, or all.

      • +
      • -v – Submodel selection based on region values, an xy polygon, or a +well-centred box, diamond, or diamondxy neighbourhood.

      • +
      • --vicinity_specification – Submodel selection based on region values, an xy polygon, or a +well-centred box, diamond, or diamondxy neighbourhood.

      • +
      • -c – Uniform coarsening factors in the x, y, and z directions.

      • +
      • --coarsening – Uniform coarsening factors in the x, y, and z directions.

      • +
      • -x – Cell-specific coarsening specification along the x axis.

      • +
      • --x_coarsening – Cell-specific coarsening specification along the x axis.

      • +
      • -y – Cell-specific coarsening specification along the y axis.

      • +
      • --y_coarsening – Cell-specific coarsening specification along the y axis.

      • +
      • -z – Cell-specific coarsening specification along the z axis.

      • +
      • --z_coarsening – Cell-specific coarsening specification along the z axis.

      • +
      • -g – Uniform numbers of additional cells along the x, y, and z axes.

      • +
      • --refinement – Uniform numbers of additional cells along the x, y, and z axes.

      • +
      • -rx – Number of additional cells for each original x interval.

      • +
      • --x_refinement – Number of additional cells for each original x interval.

      • +
      • -ry – Number of additional cells for each original y interval.

      • +
      • --y_refinement – Number of additional cells for each original y interval.

      • +
      • -rz – Number of additional cells for each original z interval.

      • +
      • --z_refinement – Number of additional cells for each original z interval.

      • +
      • -a – Aggregation method for active-cell values: min, max, or +mode.

      • +
      • --active_cell_methods – Aggregation method for active-cell values: min, max, or +mode.

      • +
      • -n – Aggregation method for discrete properties: min, max, or +mode.

      • +
      • --discrete_aggregation_method – Aggregation method for discrete properties: min, max, or +mode.

      • +
      • -s – Aggregation method for continuous properties: min, max, +mean, or pore-volume-weighted mean (pvmean). If omitted, +property-specific physical aggregation is used.

      • +
      • --continuous_aggregation_method – Aggregation method for continuous properties: min, max, +mean, or pore-volume-weighted mean (pvmean). If omitted, +property-specific physical aggregation is used.

      • +
      • -p – Pore-volume correction method. The available values are 0 through +4; supported methods depend on the selected workflow.

      • +
      • --pore_volume_correction – Pore-volume correction method. The available values are 0 through +4; supported methods depend on the selected workflow.

      • +
      • -q – Set to 1 to adjust pore volume to match the initial oil and gas in +place of the input model.

      • +
      • --correct_fluid_in_place – Set to 1 to adjust pore volume to match the initial oil and gas in +place of the input model.

      • +
      • -t – Transmissibility coarsening method: 0, 1, or 2.

      • +
      • --transmissibility_coarsening_method – Transmissibility coarsening method: 0, 1, or 2.

      • +
      • -r – Level of COMPDAT data removed after coarsening: 0, 1, or +2.

      • +
      • --completion_removal_level – Level of COMPDAT data removed after coarsening: 0, 1, or +2.

      • +
      • -j – Positive depth-jump thresholds used to prevent unwanted connections +between cells grouped during coarsening.

      • +
      • --jump_thresholds – Positive depth-jump thresholds used to prevent unwanted connections +between cells grouped during coarsening.

      • +
      • -w – Name of the generated OPM deck.

      • +
      • --output_deck_name – Name of the generated OPM deck.

      • +
      • -l – Prefix added to generated include filenames.

      • +
      • --include_prefix – Prefix added to generated include filenames.

      • +
      • -e – Character encoding used to read the input deck: ISO-8859-1 or +utf8.

      • +
      • --deck_encoding – Character encoding used to read the input deck: ISO-8859-1 or +utf8.

      • +
      • -ijk – One-based input-grid i,j,k indices to map to the modified grid.

      • +
      • --requested_ijk – One-based input-grid i,j,k indices to map to the modified grid.

      • +
      • -d – Coordinate transformation: translate [x,y,z], scale [x,y,z], +or rotatexy, rotatexz, or rotateyz followed by an angle +in degrees.

      • +
      • --grid_transformation – Coordinate transformation: translate [x,y,z], scale [x,y,z], +or rotatexy, rotatexz, or rotateyz followed by an angle +in degrees.

      • +
      • -explicit – Set to 1 to write initial solution properties explicitly instead +of retaining EQUIL initialization.

      • +
      • --write_explicit_solution – Set to 1 to write initial solution properties explicitly instead +of retaining EQUIL initialization.

      • +
      • -dual – Static-property criterion used to separate matrix and fracture or +non-net cells during coarsening.

      • +
      • --dual_porosity_criterion – Static-property criterion used to separate matrix and fracture or +non-net cells during coarsening.

      • +
      • -precision – Number of significant digits used when writing floating-point values. +Set to 0 to preserve machine precision.

      • +
      • --significant_digits – Number of significant digits used when writing floating-point values. +Set to 0 to preserve machine precision.

      • +
      +
      +
      diff --git a/docs/pycopm.html b/docs/pycopm.html index 4c74c9f..496177f 100644 --- a/docs/pycopm.html +++ b/docs/pycopm.html @@ -91,8 +91,9 @@

      Subpackagespycopm.core package