Commit Graph

2028 Commits

Author SHA1 Message Date
Paul Egberts
d0421582e1 add gas-water simulator 2020-12-03 09:04:11 +01:00
Bård Skaflestad
b7fd9e42f4 Well Model: Add Helper for Well Pointer Creation
This commit adds a new helper function,

  WellInterfacePtr createWellPointer(wellID, reportStep) const

which is responsible for creating appropriately typed derived well
pointers depending on well types (multi-segment vs. standard).
This, in turn, allows us to centralise this logic and use the same
factory function both when creating the 'well_container_' and when
forming the well-test objects.

Finally, this helper will become useful for calculating PI/II values
of shut/stopped wells in the context of WELPI.
2020-12-02 16:30:46 +01:00
Atgeirr Flø Rasmussen
30856af1ab
Merge pull request #2959 from blattms/fix-initCompletions
[bugfix] Do not iterate pass end of perf_data_ in initCompletions
2020-12-02 16:11:05 +01:00
Markus Blatt
fdf6f4244c [bugfix] Do not iterate pass end of perf_data_ in initCompletions
IMHO this might have happened if perf_data_ is empty
or if the last connection is closed. (Discovered while
working on distributed wells but might happen already
before!)
2020-12-01 14:54:48 +01:00
Markus Blatt
ab114b2e95 Use WellInterface::perf_data_ to calculate PI.
that simplifies the code a bit and will work with
distributed wells. Previously, we assumed that all
non-shut perforations are stored locally. That does
not hold any more.
2020-12-01 14:11:05 +01:00
Bård Skaflestad
b0dc5c0a63 Well PI: Use Appropriate Calculator for Each Well
The original code assumed that

    well_container_.size() == numLocalWells()

This assumption does not hold when wells open/shut dynamically in
the context of WECON and/or WTEST.

Switch to indexing into the 'prod_index_calc_' vector using the
well's own linear index instead of manually advancing iterators.

Pointy Hat: [at]bska
2020-11-27 14:50:08 +01:00
Atgeirr Flø Rasmussen
374764fc6f
Merge pull request #2946 from atgeirr/add-more-amg-options
Add more AMG options to allow setting from JSON.
2020-11-27 08:57:04 +01:00
Atgeirr Flø Rasmussen
5617a2ef5c
Merge pull request #2919 from blattms/do-not-filter-distributed
Do not filter connections on the schedule of the loadbalanced grid.
2020-11-26 16:43:09 +01:00
Atgeirr Flø Rasmussen
6e31c77234 Add more AMG options to allow setting from JSON. 2020-11-26 15:37:50 +01:00
Tor Harald Sandve
f924ac7ffe
Merge pull request #2933 from totto82/dunefem
WIP make Flow compile with dune-fem
2020-11-26 15:10:34 +01:00
Atgeirr Flø Rasmussen
a0ca8dd0b5 Use better-suited AMG criterion.
Use SymmetricDependency instead of SymmetricMatrixDependency.
Our matrices are structurally symmetric, but not numerically symmetric.
2020-11-25 16:40:03 +01:00
Markus Blatt
19bebcefe2 Broadcast schedule another time after filtering connection on rank 0
Only after rank zero does the filtering the schedule the well
definitions in there are guarateed to have no perforations to inactive
cells. Therefore we broadcast the schedule another time to publish
this to all processes.

Previously, we did the filtering locally on these processes bit that
did also remove perforations to cells that are active globally but
not locally. That seems very hard to work with when allowing
distributed wells.
2020-11-24 22:46:49 +01:00
Bård Skaflestad
bd79d4b9d5 PI/II: Switch to Using Values Only
We don't need to do the calculations in terms of EvalWell when we're
going to reduce this to the .value() before calling the PI/II
calculation routine.  We can also get by with a simpler approach to
computing the II by assuming we always inject pure phases and no
cross flow in injectors.

Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
92589a697b PI/II Loop: Switch Order of Injection/Production Branches
For readability reasons.

Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
c8a43b982c PI/II Loop: Check That We Process All Active Connections
Assert that the 'subsetPerfID' is equal to number_of_perforations_
at the end of the loop.

Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
a46a732f9e PI: Treat Production Differently From Injection
This commit makes the PI/II calculation more closely mirror the
approach taken when computing connection flow rates.  In particular,
we switch to using total mobility, mixing and volume ratios for
injecting connections while producing connections continue to use
the phase mobilities and formation volume factors derived from
conditions in the connecting cells.  We also include dissolved
gas/oil ratios and vaporised oil/gas ratios in order to fully
capture the surface flow conditions.

We split the handling of producing/injecting connections out to
separate helper functions in order to make the overall logic in
updateProductivityIndex() more manageable.ex() more manageable.
2020-11-24 21:53:58 +01:00
Bård Skaflestad
75156cd872 Unconditionally Calculate PI at End of Timestep
This commit ensures that we calculate the well and connection level
per-phase steady-state productivity index (PI) at the end of a
completed time step (triggered from endTimeStep()).

We add a new data member,

    BlackoilWellModel<>::prod_index_calc_

which holds one WellProdIndexCalculator for each of the process'
local wells and a new interface member function

    WellInterface::updateProductivityIndex

which uses a per-well PI calculator to actually compute the PI
values and store those in the WellState.  Implement this member
function for both StandardWell and MultisegmentWell.  Were it not
for 'getMobility' existing only in the derived classes, the two
equal implementations could be merged and moved to the interface.

We also add a new data member to the WellStateFullyImplicitBlackoil
to hold the connection-level PI values.  Finally, remove the
conditional PI calculation from StandardWell's well equation
assembly routine.
2020-11-24 21:53:58 +01:00
Bård Skaflestad
9f12a2edba
Merge pull request #2931 from alfbr/guiderat-supported
Removed supported keywords from list
2020-11-24 21:51:30 +01:00
Cintia Goncalves Machado
f0ba56652e restructure if 2020-11-24 09:05:18 +01:00
Cintia Goncalves Machado
82c8201f00 fix well Control Single-Phase 2020-11-23 18:40:37 +01:00
Atgeirr Flø Rasmussen
ea34c2c2df
Merge pull request #2911 from atgeirr/network-add-glift
Add the option to include gas lift for network calculations.
2020-11-20 15:23:12 +01:00
Atgeirr Flø Rasmussen
69d04b7000 Set and communicate ALQ properly in parallel. 2020-11-20 08:03:21 +01:00
Atgeirr Flø Rasmussen
e15db6a892
Merge pull request #2934 from blattms/stdwell-assign-totalrate-once
StandardWell only assing primary_variables_[WQTotal] once.
2020-11-20 07:54:43 +01:00
Markus Blatt
b21b6cf28c
Merge pull request #2914 from ducbueno/rm-oclcontainer
Removed WellContributionsOCLContainer class
2020-11-19 21:27:55 +01:00
Markus Blatt
fb5f2eb9d0 StandardWell only assing primary_variables_[WQTotal] once.
There seems to be no need to assign the same value consecutively
as often as there are phases.
2020-11-19 19:50:01 +01:00
Tor Harald Sandve
c4c0b7a756 Make it compile with dune-fem 2020-11-19 15:45:37 +01:00
Atgeirr Flø Rasmussen
8716dbfcfd Add the option to include gas lift for network calculations. 2020-11-19 14:19:26 +01:00
Atgeirr Flø Rasmussen
307315a03d
Merge pull request #2932 from atgeirr/glift-constify
Make consistent use of const for alq-related state.
2020-11-19 12:56:37 +01:00
Atgeirr Flø Rasmussen
376aecfad5 Store producer status, only call getALQ() for producers.
As it was, the getALQ() call would insert injectors into the ALQ maps,
leading to trouble.

Also, this gets rid of the slightly weird thing that the output data
structure's producer/injector status was only set after creation,
in BlackoilWellModel::wellData().
2020-11-19 11:22:25 +01:00
Arne Morten Kvarving
a95cc3dcbc fixed: signed/unsigned comparison warnings 2020-11-19 11:03:06 +01:00
Atgeirr Flø Rasmussen
8a5203814b Make consistent use of const for alq-related state.
A const well state was passed to functions that were modifying it by
calling setALQ(). Now the setALQ() method is made non-const, mutable
references to the well state are passed where sensible. The getALQ()
method uses map::at() instead of map::operator[] and no longer modifies
current_alq_. With this, it is now easy to see which methods modify the
well state and which don't. The alq-related members in the
WellStateFullyImplicitBlackoil class are no longer 'mutable'-qualified.
2020-11-19 10:09:52 +01:00
Alf Birger Rustad
b651469f34 Removed supported keywords from list 2020-11-19 09:36:30 +01:00
Tor Harald Sandve
0ac2f922d3
Merge pull request #2851 from osae/extboSimulators
Alternative solvent extension for the black oil model.
2020-11-18 14:01:36 +01:00
Markus Blatt
ea3c899080
Merge pull request #2882 from atgeirr/msw-add-well-contrib
Implement addWellContributions() for multi-segment wells
2020-11-18 13:44:24 +01:00
Jose Eduardo Bueno
a9c2a684c6 Removed WellContributionsOCLContainer class (rebase) 2020-11-18 09:14:31 -03:00
Arne Morten Kvarving
7b58071b8e
Merge pull request #2924 from akva2/janitoring
remove unused variable
2020-11-18 10:53:50 +01:00
Ove Sævareid
940af0f15d Fixed typo. 2020-11-17 19:42:41 +01:00
Ove Sævareid
63c97d54d0 Rebase issue. 2020-11-17 14:50:57 +01:00
Arne Morten Kvarving
cff02ee105 remove unused variable 2020-11-17 13:22:35 +01:00
Markus Blatt
41843f2667 Use consistent pvt region index for groups in parallel.
In serial we use the first cell of the first well to determine the
pvt region index for a group. Previously, we used the first cell of
the first local well in a parallel run. Unfortunately that may lead
to different pvt region indices being used for the same goup on
different processes.

We fix this by using the same approach in parallel as we already use
in serial. For this we use Well::seqIndex() to determine the needed
ordering.
2020-11-17 12:54:45 +01:00
Atgeirr Flø Rasmussen
d69dbf598e Response to review comments. 2020-11-17 12:53:04 +01:00
Ove Sævareid
98b2ed5bd4 Cleaning up various issues. 2020-11-17 12:39:21 +01:00
Ove Sævareid
0f7e66e151 Alternative solvent extension for the black oil model. 2020-11-17 12:33:19 +01:00
Atgeirr Flø Rasmussen
f967d82ad5 Make --alternative-well-rate-init=true the default. 2020-11-17 11:56:02 +01:00
Markus Blatt
09a4a04c22
Merge pull request #2896 from atgeirr/refactor-well-calc
Refactor well calculations
2020-11-17 09:40:19 +01:00
Markus Blatt
64fa5a2b30
Merge pull request #2858 from Tongdongq/ilu-reorder-strategy
Added cmdline parameter --ilu-reorder-strategy
2020-11-17 09:35:12 +01:00
Markus Blatt
0dcfc60363
Merge pull request #2912 from totto82/polyhedrealgrid
Make a flow version that uses the polyhedreal grid
2020-11-16 17:04:38 +01:00
Atgeirr Flø Rasmussen
82ecb1e7cd Implement addWellContributions() for MultisegmentWell. 2020-11-16 11:42:29 +01:00
Atgeirr Flø Rasmussen
963a8b640a Add the invertWithUMFPack() utility. 2020-11-16 11:37:44 +01:00
Atgeirr Flø Rasmussen
db7cd1053f Add the multMatrixImpl() utility. 2020-11-16 11:37:44 +01:00
Atgeirr Flø Rasmussen
cb928f90f0 Refactor per-perforation code into separate function.
Also make some methods const.
2020-11-16 11:19:03 +01:00
Atgeirr Flø Rasmussen
6f7e83a2ce
Merge pull request #2916 from blattms/stdwell-comm-backport
Parts of the distributed well work backported to original approach.
2020-11-13 08:43:00 +01:00
Markus Blatt
d6e2e87efc WellInterface::initComletions: stop relying on open connections being local.
Instead use the perforation data to add the correct indices.
2020-11-12 17:22:36 +01:00
Markus Blatt
049aaad326 Adds original ECL index of well connection to PerforationData
and use it in the WellInterface instead of creating a vector
with these indices there. The original approach recreates
information in another path of the well and assumes that all
connections are in a process's local partition. That assumption
does not hold any more for distributed wells.
2020-11-12 17:21:37 +01:00
Markus Blatt
010ff83f26 Use functor iterating container when communicating group rates.
Makes the code more compact.
2020-11-12 16:28:36 +01:00
Tor Harald Sandve
fbccdbf68e Make a flow version that uses the polyhedreal grid
Currently the simulator creats the polyhedreal grid from an eclGrid from opm-common

TODO
 - make it possible to create the grid directly from DGF or MRST format
 - fix issue on norne.
2020-11-10 15:49:59 +01:00
Alf Birger Rustad
25b12428be Less aggressive growth dampoing factor 2020-11-09 11:45:13 +01:00
Alf Birger Rustad
553a408b13 Set number directly instead of fraction and update comments 2020-11-09 09:13:20 +01:00
Alf Birger Rustad
2fc9b03af4 Switched time step control and changed damping factor for it 2020-11-09 08:40:31 +01:00
Bård Skaflestad
fc3ce85be2
Merge pull request #2906 from goncalvesmachadoc/patch-3
Delete some radial keywords from Missing Features
2020-11-06 16:35:57 +01:00
Tor Harald Sandve
73b384f8cd
Merge pull request #2902 from totto82/fixWlift
Fixes to the wlift implementation
2020-11-06 15:58:24 +01:00
Tor Harald Sandve
2795d1713f avoid oscilating between decreasing and increasing when rates are limited 2020-11-06 15:19:21 +01:00
Cintia Goncalves Machado
9695de9e8c
Delete some radial keywords from Missing Features
They are implemented in the SpyderWeb grid.
2020-11-06 14:26:59 +01:00
Paul Egberts
7ef854f32f
Two fixes
1) Corrected phaseIsActive with PhaseIdx argument instead of CompIdx argument in "subtraction of dissolved gas from oil phase and vapporized oil from gas phase".
2) Fix for well accumulation calculation in case oil is absent.
2020-11-05 17:09:25 +01:00
Atgeirr Flø Rasmussen
adfb8ef771
Merge pull request #2898 from blattms/always-accu-to-one-proc-as-default
Always accumulates data in AMG to 1 process on coarse levels.
2020-11-05 15:41:57 +01:00
Tor Harald Sandve
bd370c6470 fixes to the wlift implementation 2020-11-05 13:05:01 +01:00
Håkon Hægland
7011a6c0b7 Restore cwd after each unittest.
Restores the original cwd after each unittest in test_basic.py. Also
simplifies add_test() in python/simulators/CMakeLists.txt such that the
Bash script wrapper run-python-tests.sh is no longer needed to run the
tests.
2020-11-04 13:51:36 +01:00
Markus Blatt
d83ae17e5b Always accumulates data in AMG to 1 process on coarse levels.
In OPM the matrix graph might be unsymmetric as we do not store
the full sparsity pattern for copy rows but only the diagonal.
Unfortunately, DUNE assumes that matrices from finite elements and
finite volumes have a symmetric sparsity pattern for copy rows to
and uses this assumption to create the graphs for PTScotch/ParMETIS
more easily. But PTScotch/ParMetis assume a symmetric graph.
2020-11-03 22:13:27 +01:00
Håkon Hægland
648bab7108 Implements access to the porosity from Python.
Implements access (read/write) to the porosity from Python.
2020-11-03 17:18:14 +01:00
Håkon Hægland
53cbe0c57e Initialize boolean variables in-class.
Initialize the boolean variables hasRunInit_ and hasRunCleanup_ in
the class instead of in the constructor.
2020-11-03 16:17:52 +01:00
Håkon Hægland
0403d4e6e7 Implements a Python step_cleanup() method.
Continues the work in #2735 on implementing Python bindings for the flow
simulator.
2020-11-03 16:12:12 +01:00
Arne Morten Kvarving
4121e0a3c4 fix typo 2020-11-03 13:48:09 +01:00
Cintia Goncalves Machado
27a00b3c59
Delete WEIR and WEIT 2020-10-28 19:17:53 +01:00
Bård Skaflestad
3058047d3c Extract Correct Connection-Level Rates
The Polymer, Brine, and Solvent quantities would be extracted from
elements 0..#perf-1 of their pertinent container rather than from
the elements associated to the particular well.
2020-10-23 22:24:00 +02:00
Atgeirr Flø Rasmussen
5d48923994
Merge pull request #2856 from plgbrts/temp
fix temperature reporting for injectors
2020-10-22 14:25:35 +02:00
Tor Harald Sandve
990ce70287
Merge pull request #2849 from goncalvesmachadoc/aquifer
Prepare Well Implemantion For Water and Water-Gas System
2020-10-22 14:08:12 +02:00
Arne Morten Kvarving
7d13d347db changed: remove unused parameters 2020-10-21 13:32:12 +02:00
Tor Harald Sandve
41f40e5002
Merge pull request #2626 from atgeirr/network-thp
Network-controlled THP limit
2020-10-21 12:33:42 +02:00
Atgeirr Flø Rasmussen
7e737b143d Address review comments. 2020-10-21 09:50:31 +02:00
tqiu
d25405d39a Renamed parameter to OpenclIluReorder and moved error checking to BdaBridge constructor. 2020-10-19 11:36:25 +02:00
tqiu
a372a1e4bd Added cmdline parameter --ilu-reorder-strategy 2020-10-19 11:33:32 +02:00
Atgeirr Flø Rasmussen
e7d1d6603a Silence unused argument warning. 2020-10-19 09:13:37 +02:00
Bård Skaflestad
9a71bbe4b0 Move 'gridForConn' Into Cuda/OpenCL Block
It is only used within this context and produces a warning of the
form

  ISTLSolverEbos.hpp:128:25: warning: unused variable ‘gridForConn’

unless the build configures accelerator support.
2020-10-19 02:28:05 +02:00
Atgeirr Flø Rasmussen
24b2393334 Add parameter --alternative-well-rate-init.
With this, a slightly more sophisticated procedure is used for well rate intialization.
Since it changes existing results, it defaults to false, giving the existing behaviour.
2020-10-15 17:56:11 +02:00
Atgeirr Flø Rasmussen
6155188a70 Remove unused file SimFIBODetails.hpp. 2020-10-15 16:35:35 +02:00
Atgeirr Flø Rasmussen
8eb4d1dc70 Implemented computeCurrentWellRates() for multisegment wells.
Also add effect of rock compressibility on well connection transmissibility factors,
which was added to StandardWell earlier but not MultisegmentWell.
2020-10-15 16:24:55 +02:00
Atgeirr Flø Rasmussen
7e87ea3200 Refactor to put updateWellStateRates() in base class. 2020-10-15 14:15:05 +02:00
Atgeirr Flø Rasmussen
52c695937b Implement extended network model. 2020-10-15 10:54:03 +02:00
Markus Blatt
44fadfb88a Fixes compilation of CUDA.
nvcc exits compilation if the header dune/istl/basearray.hh (form DUNE
2.6) is included as it does not seem to understand the friend declaration
there (friend class for a struct).

```
/usr/include/dune/istl/basearray.hh:101:49: error: ‘typename Dune::Imp::base_array_unmanaged<B, A>::RealIterator’ names ‘template<class B, class A> template<class T> struct Dune::Imp::base_array_unmanaged<B, A>::RealIterator’, which is not a type
       friend class RealIterator<const ValueType>;
                                                 ^
```
2020-10-14 19:23:57 +02:00
Paul Egberts
9ecd153099 fix temperature reporting for injectors 2020-10-14 17:52:04 +02:00
Cintia Goncalves Machado
a697e7faf6 fix return position 2020-10-14 14:55:38 +02:00
Bård Skaflestad
7bf4b76dac Add Doxygen Documentation to Well PI Calculator
Suggested by [at]atgeirr.
2020-10-13 15:42:35 +02:00
Bård Skaflestad
b6e0bd1b7b Add Calculator for Connection/Well Productivity Index
Switches between using the logarithmic and unit scaling factor based
on whether or not the well has an explicit, positive drainage radius
(WELSPECS item 7).  Does presently not include the D factor.

Add a set of unit tests to exercise the facility.
2020-10-13 15:42:35 +02:00
Atgeirr Flø Rasmussen
2aeefc71c1
Merge pull request #2827 from totto82/timestepping
add options for timestepping
2020-10-13 14:25:26 +02:00
Atgeirr Flø Rasmussen
43d5d2c532
Merge pull request #2850 from atgeirr/silence-warnings
Silence warnings from range-for.
2020-10-13 08:19:48 +02:00
Markus Blatt
884e02c0e2
Merge pull request #2848 from atgeirr/unify-linsolve-only
Unify linear solvers
2020-10-13 08:09:27 +02:00
Atgeirr Flø Rasmussen
ea0abd1331 Bugfix: do not substr() on too small strings. 2020-10-12 21:58:58 +02:00
Atgeirr Flø Rasmussen
dedbe78cee Copyright additions. 2020-10-12 17:06:11 +02:00
Atgeirr Flø Rasmussen
316b28923d Rename parameter --linear-solver-configuration to --linsolver. 2020-10-12 17:03:00 +02:00
Cintia Goncalves Machado
920f071f5f fix fractions 2020-10-12 16:46:39 +02:00
Atgeirr Flø Rasmussen
f169cf90d8 Remove --linear-solver-configuration-file parameter.
This is now handled by passing a string to --linear-solver-configuration that
ends with ".json".
2020-10-12 16:41:09 +02:00
Atgeirr Flø Rasmussen
f262eec9bf Silence warnings from range-for. 2020-10-12 09:39:37 +02:00
Atgeirr Flø Rasmussen
385880485a Fix logic of shouldCreateSolver(). 2020-10-11 22:46:02 +02:00
Atgeirr Flø Rasmussen
30a4fe55b0 Add "amg" option to --linear-solver-configuration. 2020-10-11 09:31:48 +02:00
Atgeirr Flø Rasmussen
842afd312e Refactor setupPropertyTree(). 2020-10-11 09:24:05 +02:00
Atgeirr Flø Rasmussen
00438c4860 Remove unused parts (not just comment out). 2020-10-11 08:44:21 +02:00
Atgeirr Flø Rasmussen
0a70d95bee Refactor shouldCreateSolver(). 2020-10-11 08:20:19 +02:00
Cintia Goncalves Machado
23e7886297 prepareWellImplForLackOfOil 2020-10-10 16:05:12 +02:00
Atgeirr Flø Rasmussen
1c208e9a92 Avoid unnecessary extra matrix manipulation.
When using the ParallelOverlappingILU0 it is not necessary to fix the overlap rows.
2020-10-10 10:09:23 +02:00
Atgeirr Flø Rasmussen
ac3004da9d
Merge pull request #2847 from blattms/blackoilmodel-getLocalNonshutWells
Added BlackoilWellModel::getLocalNonshutWells to reduce code duplicat…
2020-10-09 16:35:50 +02:00
Markus Blatt
ba1bc7c23c Added BlackoilWellModel::getLocalNonshutWells to reduce code duplication. 2020-10-09 15:27:09 +02:00
Atgeirr Flø Rasmussen
65817c9068 Removed old amg/cpr code that can be replaced.
The replacement consists of using the FlexibleSolver code.
2020-10-08 15:12:41 +02:00
Atgeirr Flø Rasmussen
f528adb604
Merge pull request #2837 from blattms/fix-parallel-average-formation-factors
Fixes parallel computation of average formation factors.
2020-10-06 19:37:12 +02:00
Bård Skaflestad
406feea8e7
Merge pull request #2835 from bska/chase-ctfac-api-update
Provide Simulator's Dynamic CTF in data::Connection
2020-10-06 14:33:12 +02:00
Alf Birger Rustad
2949c54957
Merge pull request #2838 from akva2/janitoring
fix typo
2020-10-06 14:10:23 +02:00
Arne Morten Kvarving
440cfdd38b remove LIFTOPT and WLIFTOPT from missing features 2020-10-06 13:55:10 +02:00
Arne Morten Kvarving
3db98e3bef fix typo 2020-10-06 12:36:27 +02:00
Kai Bao
64746e21bf
Merge pull request #2826 from akva2/janitoring
fixed: make some indices constexpr
2020-10-06 11:21:40 +02:00
Bård Skaflestad
e39333895c Provide Simulator's Dynamic CTF in data::Connection
This is in preparation of implementing the WELPI feature.
2020-10-05 23:14:24 +02:00
Bård Skaflestad
14e34378b0
Merge pull request #2829 from GitPaean/wip_aquifer_keywords
aquifer summary keywords
2020-10-05 22:51:40 +02:00
Markus Blatt
5553d2d1f3 Renamed variables/functions for number of cells. 2020-10-05 20:02:13 +02:00
Markus Blatt
ca8de16285 Fixes parallel computation of average formation factors.
This was using the sum of the sum of all cells of the partitions.
Hence the shared cells were counted twice.
2020-10-05 14:08:59 +02:00
Arne Morten Kvarving
c888410a07 avoid usage of property system macros 2020-10-05 09:01:58 +02:00
Atgeirr Flø Rasmussen
f6569b6a4f
Merge pull request #2832 from alfbr/improve-output
Improve output
2020-10-05 08:49:09 +02:00
Alf Birger Rustad
958f368ce7 indent 2020-10-03 12:25:47 +02:00
Alf Birger Rustad
207d2678fa Fix indent 2020-10-03 12:23:46 +02:00
Alf Birger Rustad
5a8f274c36 Typo and white space 2020-10-03 12:21:05 +02:00
Håkon Hægland
c0b493c4ce Fix inconsistent-missing-override warnings 2020-10-03 10:43:09 +02:00
Alf Birger Rustad
3204b55a35 Forgot two 2020-10-02 15:20:23 +02:00
Alf Birger Rustad
885c182b7e Added one more decimal for hundreds of a second. 2020-10-02 15:13:41 +02:00
Tor Harald Sandve
165fa96250
Merge pull request #2824 from hakonhagland/gas_lift3
Implements support for gas lift optimization.
2020-10-02 14:48:27 +02:00
Alf Birger Rustad
3832be4f28 Typo 2020-10-02 14:27:51 +02:00
Alf Birger Rustad
a25868dc52 Untabify and add three missing parantheses 2020-10-02 14:26:09 +02:00
Alf Birger Rustad
9e89883aec Allow more digits in simulation time 2020-10-02 14:18:06 +02:00
Alf Birger Rustad
a081394f32 Fixed alignement 2020-10-02 14:06:25 +02:00
Kai Bao
ed89f25d1b providing the aquifer data for summary output 2020-10-02 13:13:20 +02:00
Alf Birger Rustad
7cebf7fb5a Added space 2020-10-02 12:48:35 +02:00
Alf Birger Rustad
e68db6dbda Converted to fmt formatting 2020-10-02 12:46:45 +02:00
Håkon Hægland
a5ac74082a Avoid unused variable warning.
The control_mode is unused if not build in debug mode since the assertion
will be skipped.
2020-10-02 11:17:48 +02:00
Alf Birger Rustad
845eb17d28 Formatted seconds and percent in final report. 2020-10-02 09:31:49 +02:00
Alf Birger Rustad
d36069c759 Remove confusing progress message. 2020-10-02 09:04:26 +02:00
Kai Bao
49eb111225 adapting to the interface change of SummaryConfig 2020-10-01 23:32:21 +02:00
Alf Birger Rustad
90b2e8b8ef Compacted time step report 2020-10-01 22:42:20 +02:00
Markus Blatt
ec884183a5
Merge pull request #2828 from blattms/add-mswells
[opencl] deletes assignment operator of WellContributionsOCLContainer
2020-10-01 22:35:09 +02:00
Markus Blatt
e8c030be17
Merge pull request #2821 from ducbueno/add-mswells
Reintroduced multisegment wells to OpenCL backend
2020-10-01 21:52:25 +02:00
Håkon Hægland
52f6f819ee Simplified using fmt::format()
Simplified debug output formatting by using fmt::format(). Also switched
off glift debug output by default.
2020-10-01 18:40:05 +02:00
Markus Blatt
684b58564c use auto in for-loop as at other occasions. 2020-10-01 15:56:50 +02:00
Markus Blatt
f306f78737 Delete assignment operator of WellContributionsOCLContainer, too 2020-10-01 15:55:57 +02:00
Jose Eduardo Bueno
fbbb21d482 Removed smart pointers; + delete for copy constr 2020-10-01 10:27:34 -03:00
Tor Harald Sandve
6b3a64bd40 add options for timestepping 2020-10-01 14:46:58 +02:00
Arne Morten Kvarving
7ffceeba57 fixed: make some indices constexpr
also use the bool conditions for conditional deref'ing with the indices.
this helps avoid maybe uninitialized warnings with gcc
2020-10-01 11:46:31 +02:00
Jose Eduardo Bueno
89cefd8d95 Fixed seg fault when there are only mswells 2020-09-30 18:34:50 -03:00
Jose Eduardo Bueno
7aad035bcf Added smart pointers 2020-09-30 17:31:35 -03:00
Markus Blatt
d30f6d272b [gpu] Support UMFPack with DUNE 2.7
The index type changed from int to long int with 2.7.
2020-09-30 20:10:21 +02:00
Jose Eduardo Bueno
3a680f728e Removed unnecessary vector clear operations 2020-09-30 09:14:20 -03:00
Jose Eduardo Bueno
99e4419b3c Reintroduced multisegment wells 2020-09-30 09:11:20 -03:00
Håkon Hægland
a01ae8a64c Removed unnecessary code.
Forgot to remove this call after refactoring.
2020-09-30 12:13:01 +02:00
Arne Morten Kvarving
36a42c0685 remove unused variables 2020-09-30 10:12:33 +02:00
Håkon Hægland
d707967f58 Implements support for gas lift optimization.
Implements gas lift optimization for a single StandardWell. Support for
gas lift optimization for multi-segment wells, groups of wells and
networks is not implemented yet.

The keywords LIFTOPT, WLIFTOPT, and VFPPROD are used to supply parameters for
the optimization. Also adds support for summary output of liftgas
injection rate via keyword WGLIR.
2020-09-30 10:04:39 +02:00
Markus Blatt
c26aefdd5b
Merge pull request #2816 from ducbueno/new-opencl-stdwell
New standard well implementation for the OpenCL backend
2020-09-30 09:32:19 +02:00
Jose Eduardo Bueno
a3a15a744c Corrected kernel 2020-09-28 18:06:13 -03:00
Jose Eduardo Bueno
9fe6ee85a4 Throws exception if well dimensions aren't correct 2020-09-28 18:01:42 -03:00
Jose Eduardo Bueno
268bcd95e8 Implemented reinit; reduced sync events 2020-09-28 17:27:12 -03:00
Jose Eduardo Bueno
bedf3d16cf Querying number of work items with get_local_size 2020-09-28 12:56:22 -03:00
Joakim Hove
0092ef0cf0 Pass location to ParseContext.handleError() 2020-09-28 16:58:37 +02:00
Joakim Hove
5985dee574
Merge pull request #2813 from joakim-hove/flow-exceptions
Flow exceptions
2020-09-28 16:57:02 +02:00
Jose Eduardo Bueno
77bcadff45 Events wellContribs write calls & update sparsity 2020-09-28 09:40:39 -03:00
Jose Eduardo Bueno
d653873735 Added destructor for WellContributionsOCLContainer 2020-09-28 09:15:17 -03:00
Atgeirr Flø Rasmussen
64f9f1431b
Merge pull request #2809 from GitPaean/fixing_ct_aquifer
fixing the initialization of aquifer pressure for CT aquifer
2020-09-28 12:28:02 +02:00
Joakim Hove
a755a2d056 Do not print error message when flow exits 2020-09-28 11:03:45 +02:00
Joakim Hove
76f57f5a1d Catch OpmInputError in addition to std::exception 2020-09-28 11:03:45 +02:00
Joakim Hove
0b5134521e Add inline fmtlib code in source tree 2020-09-28 11:01:13 +02:00
Atgeirr Flø Rasmussen
e8460b384e
Merge pull request #2804 from totto82/updateAndInvalid
Invalidate and update the intensive quantities at the same time
2020-09-28 09:02:25 +02:00
Atgeirr Flø Rasmussen
b5c5c28c16
Merge pull request #2788 from alfbr/new-defaults
New numerical defaults
2020-09-28 08:57:08 +02:00
Jose Eduardo Bueno
d236079173 Bug fixes 2020-09-25 11:31:17 -03:00
Jose Eduardo Bueno
ab57d5ecd2 Fixed errors 2020-09-24 18:07:10 -03:00
Jose Eduardo Bueno
1ba81cece2 First commit 2020-09-24 16:35:36 -03:00
Jose Eduardo Bueno
c43648076f Fixed kernel; fixed time step chopping; 2020-09-24 16:35:36 -03:00
Jose Eduardo Bueno
c41aafcc58 Simplified initialize_wellContribs calls 2020-09-24 16:35:36 -03:00
Kai Bao
fd3287cdd3 removing the duplication of calculateReservoirEquilibrium
in the aquifer models.
2020-09-24 16:09:56 +02:00
Kai Bao
91ec74dffc fixing the initialization of aquifer pressure for CT aquifer 2020-09-24 15:37:31 +02:00
Joakim Hove
2c447ae829
Merge pull request #2805 from akva2/serializer_optional
Optional support in eclmpiserializer
2020-09-24 07:33:16 +02:00
Arne Morten Kvarving
f846bbe959 remove Mpi::pack handling for GPMaint
this is not implemented, and should go through the
serializer support
2020-09-23 12:23:30 +02:00
Tor Harald Sandve
85e25f7e0e Invalidate and update the intensive quantities instead of just invalidate them 2020-09-23 11:39:04 +02:00
Atgeirr Flø Rasmussen
237b281f09
Merge pull request #2802 from blattms/refactor-defunct-wells
Refactored how well information is exported after load balancing.
2020-09-23 08:54:35 +02:00
Markus Blatt
1d94357558 Refactored how well information is exported after load balancing.
Previously, we exported an unordered map containing all names of
wells that are not present in the local part of the grid.

As we envision to have wells that are distributed across multiple
processors, this information does not seem to be enough. We need
to be able to set up communication for each well. To do this we need
to find out who handles perforations of each well.

We now export a full list of well name together with a boolean
indicating whether it perforates local cells (vector of pair of string
and bool).
2020-09-22 20:04:01 +02:00
Markus Blatt
779c7f6012
Merge pull request #2793 from blattms/fix-tran-application
Fixes application of transmissibility modifiers from the edit section.
2020-09-22 19:56:16 +02:00
Atgeirr Flø Rasmussen
68add695fe
Merge pull request #2735 from hakonhagland/python_step2
Implements a Python step() method.
2020-09-22 15:47:48 +02:00
Markus Blatt
a4ea6e9658
Merge pull request #2792 from atgeirr/fewer-mpi-sums
Rewrite communicateGroupRates() to do a single sum().
2020-09-22 07:51:34 +02:00
Markus Blatt
e5f4971d58 CentroidsPropsDatahandle Use emplace_back for saving pair 2020-09-21 21:30:51 +02:00
Joakim Hove
c059653fa0 Add #include <opm/common/Exceptions.hpp> 2020-09-21 19:25:52 +02:00
Joakim Hove
cc6abb4086
Merge pull request #2796 from joakim-hove/rm-exceptions
Remove unused #include of exceptions
2020-09-21 16:33:19 +02:00
Joakim Hove
d9465907be
Merge pull request #2795 from joakim-hove/remove-sim-container
Remove references to unused class SimulationDataContainer
2020-09-21 11:16:37 +02:00
Joakim Hove
0565d6f402 Remove unused #include of exceptions 2020-09-21 11:12:15 +02:00
Joakim Hove
9809dcc804 Remove references to unused class SimulationDataContainer 2020-09-21 07:16:11 +02:00
Bård Skaflestad
fde3c476c3 Chase Group/Node Summary API Update
This is in preparation of adding support for outputting the network
node pressure quantity, GPR, to the summary file.  In particular,
'GroupValues' is renamed to 'GroupAndNetworkValues' and has new
individual datamembers for the former group-level data and the new
node-level data.

Update BlackoilWellModel::groupData() and CollectToIORank
accordingly and bring the parallel restart facility in line with the
new layout.
2020-09-20 22:26:07 +02:00
Markus Blatt
99f74cad96 FieldData and TranCalculator are now in Fieldprops namespace. 2020-09-18 15:01:17 +02:00
Atgeirr Flø Rasmussen
8dffd39b0a Rewrite communicateGroupRates() to do a single sum(). 2020-09-18 09:50:41 +02:00
Markus Blatt
abff765c1d Also query unsupported field data for the TransCalculator.
FiedlPropsManager::keys() list the FieldProperties needed by the
TransCalculator, but these cannot be queried the normal way as this
raises exceptions and results in a deadlock. Hence we use the new
funtionality to get also the unsupported ones, by passing true to
get_double_field_data.
2020-09-17 22:23:04 +02:00
Markus Blatt
fd2a0d8a7d Deserialize TranCalculator also on master 2020-09-17 20:28:17 +02:00
Markus Blatt
5987eae7d5 Add TranCalculator functionality to ParallelFieldPropsManager 2020-09-17 19:49:38 +02:00
Markus Blatt
9b997aea8c Use FieldData in ParallelEclipseState.
We will need the values_status for the TranCalculator in parallel.
2020-09-17 19:49:38 +02:00
Alf Birger Rustad
2e2bad179d New default tuning parameters based on pore volume 2020-09-16 15:58:14 +02:00
Atgeirr Flø Rasmussen
0816e21846
Merge pull request #2787 from akva2/fix_optional_deserialization
Fix optional deserialization
2020-09-16 09:41:53 +02:00
Arne Morten Kvarving
4160c6ce98 fixed: deserialization for std::optional<T>
just writing the data does not update the has_value as expected
2020-09-16 08:47:06 +02:00
Joakim Hove
d5bc4d539c Distribute transmissibility calculator of the FieldPropsManager 2020-09-15 17:15:03 +02:00
Arne Morten Kvarving
76c63c4405 changed: hide internal method 2020-09-15 10:51:57 +02:00
Bård Skaflestad
e8582ce476 Include All Pertinent EFACs In Guiderate Potential Updates
This commit switches the helper function

    WellGroupHelpers::updateGuideRateForGroups<>()

to include efficiency factors in the potential rates at grouptree
levels below a particular group.  We furthermore switch the helper
function

    WellGroupHelpers::updateGuideRatesForWells<>()

to not include efficiency factors at all.

The motivation for this change is that efficiency factors always
apply to the level we're accumulating rate values into rather than
to the rate values themselves.
2020-09-15 09:44:52 +02:00
Bård Skaflestad
453dec3e26
Merge pull request #2785 from blattms/improve-parallel-deck-error-handling
Improves error handling and reporting in parallel.
2020-09-15 09:06:43 +02:00
Markus Blatt
58fdf300df Use std::exit(EXIT_FAILURE)
Somehow this reappeard druing refactoring.
2020-09-15 08:36:20 +02:00
Markus Blatt
cd74796004 Refactored to only check once for errors in parallel.
This simplifies the code a lot (less `#if HAVE_MPI`) and there seems
to be not reason not to.
2020-09-15 08:27:04 +02:00
Markus Blatt
d413a2c960 Perform checkArrayDimension only on rank 0. 2020-09-15 08:26:23 +02:00
Markus Blatt
921e154972 use EXIT_FAILURE to indicate problems whem exiting. 2020-09-14 19:17:55 +02:00
Tor Harald Sandve
c2c009ecb6 clean-up based on review 2020-09-14 15:42:48 +02:00
Tor Harald Sandve
1a7b617074 guards against non-exsisting phases 2020-09-14 14:44:16 +02:00
Tor Harald Sandve
a323487b3b Fix the equation index for 2p oil-water simulations 2020-09-14 14:44:16 +02:00
Markus Blatt
519e4ac002 Improves error handling and reporting in parallel.
As the ErrorGuard also dumps warnings we now always dump
it (previously only on error) to get these messages in the
console.

If there are error encountered, we log a meaningful error
message (the real cause was missing previously) and do a
graceful exit after MPI_Finalize.
2020-09-14 12:53:02 +02:00
Alf B. Rustad
d0c110e935 Removed duplicated OPTIONS 2020-09-13 23:15:01 +02:00
Alf B. Rustad
1b05ed1199 Removed OPERATER and OPERNUM since they are supported. 2020-09-13 22:40:20 +02:00
Atgeirr Flø Rasmussen
76384344ca
Merge pull request #2777 from GitPaean/adding_well_assembly_timing
adding timing for the well assembly
2020-09-08 16:02:16 +02:00
Kai Bao
7b4142e9b6 adding timing for the well assembly
And changes the indentation of the linear solver setup time a little to
show it is part of the linear solve time.
2020-09-08 11:12:41 +02:00
Bård Skaflestad
9d6a0be776
Merge pull request #2772 from blattms/prevent-copy-in-rateconverter
Prevent another copy of cell to region mapping in RateConverter.
2020-09-07 17:13:22 +02:00
Markus Blatt
578ca0a725 Fixed unused variable warning. 2020-09-07 16:42:01 +02:00
Markus Blatt
c21f1e72f8 Prevent another copy of cell to region mapping in RateConverter.
RateConverter itself already copies this and offers the mapping.
With this commit we just use that.
2020-09-07 15:36:07 +02:00
Markus Blatt
53005c477d
Merge pull request #2762 from ducbueno/opencl-stdwell-clean
Fixed out of resources problem
2020-09-03 19:50:39 +02:00
Jose Eduardo Bueno
525faf7b5d Changed work_group_size 2020-09-03 14:25:50 -03:00
Jose Eduardo Bueno
f8898e3158 New function for setting OpenCL in wellContribs 2020-09-03 13:30:12 -03:00
Markus Blatt
3ee0db8cf4
Merge pull request #2760 from atgeirr/inform-user
Use log mechanism for info output
2020-09-03 17:15:00 +02:00
Markus Blatt
ba8782eeca
Merge pull request #2761 from akva2/fix_flexible_serial
fixed: use the proper linear operator without wells in matrix in serial
2020-09-03 17:08:40 +02:00
Arne Morten Kvarving
273d465c32 fixed: use the proper linear operator without wells in matrix in serial 2020-09-03 15:53:57 +02:00
Atgeirr Flø Rasmussen
3dffb5d4da Use log mechanism for info output, and tell the user the deck has been read. 2020-09-03 15:11:25 +02:00
Markus Blatt
d51b4a53e8
Merge pull request #2758 from atgeirr/reinstate-lost-features
Reinstate lost logging of header and parameters.
2020-09-03 15:08:55 +02:00
Jose Eduardo Bueno
c7adc3495f Initial commit 2020-09-03 09:46:44 -03:00
Atgeirr Flø Rasmussen
92bdcbf597 Reinstate lost logging of header and parameters.
Also re-add the ability to do strict parsing.
2020-09-03 14:07:33 +02:00
Bård Skaflestad
6220cdf613 Restore Groups' Active Constraints on Restart
First step towards better restarts of models with group control.
2020-09-03 01:11:32 +02:00
Bård Skaflestad
bdc34a7580 Distribute Group Values at Parallel Restart
Mostly to prepare for restoring the groups' active controls from
restart information.
2020-09-03 01:11:32 +02:00
Bård Skaflestad
a0373ed428 Support Distributing Guiderates in Parallel Restart
In preparation of distributing group-related information (e.g.,
the active constraint).
2020-09-03 01:11:32 +02:00
Markus Blatt
27931c4303 [opencl] Fixes shadowing variable warnings.
These seemed familar and I would have sworn that I already fixed them
somewhen. Might have been reintroduced by rebasing.
2020-09-02 22:46:44 +02:00
Markus Blatt
e997d7b130
Merge pull request #2751 from ducbueno/opencl-stdwell-clean
AddStandardWell functionality in OpenCL backend
2020-09-02 22:02:05 +02:00
Jose Eduardo Bueno
4d10d9ac76 Fixed issue when no std wells are present 2020-09-02 15:44:46 -03:00
Jose Eduardo Bueno
56c1c0862c Added StandardWell functionality to OpenCL backend 2020-09-02 15:00:34 -03:00
Bård Skaflestad
144baeeb42 Well Model: Report Guiderates at Well and Group Levels
This commit adds support for reporting the simulator's guiderate
values at the well and group levels to the output layer through the
wellData() and groupData() member functions.  We add several new
member functions that collectively assemble the values and assign
them to objects of type Opm::data::GuideRateValue for subsequent
output to the summary and restart files.

In particular

    getGuideRateValues(const Well&) const
    getGuideRateValues(const Group&) const

retrieve the guiderate values for all phases for those individual
wells and groups for which the guideRate_ data member defines a
value.  The most complicated function of this commit is

    calculateAllGroupGuideRates

which aggregates those individual contributions from the well (leaf)
level up to the root of the group tree (the FIELD group).  This
process uses an ancillary array ('up') to keep track of the parent
groups of all wells and all groups, and to ensure that we only visit
each parent group once (sort+unique on subsets of the 'up' array).

We do not currently support outputting guiderates for reservoir
voidage volume (GuideRateModel::Target::RES).
2020-09-02 17:22:04 +02:00
Bård Skaflestad
e1ce1c9124 Centralize Rate Vector Derivation for Guide Rates
This commit creates a single implementation function for deriving
'RateVector' objects that go into the guiderate calculation.  In
particular, we now use the same implementation function for both the
well and the group levels.  While here, also expose the group level
derivation as a free function and reimplement the FractionCalculator
version in terms of this free function.  Finally, remove the
previous attempt at such a free function taking only the group name.
This function no longer exists in isolation and is only accessible
through the FractionCalculator.

This is in preparation of reporting guiderate values to the output
layer (summary and restart files).
2020-09-02 17:22:04 +02:00
Bård Skaflestad
3c91761999 Well State: Add Predicate for Flow Rate Existence
This commit adds two new predicate member functions

    bool hasWellRates(well_name) const
    bool hasProductionGroupRates(group_name) const

that enable querying the existence of the corresponding flow rate
values for wells and group production.

This is in preparation of reporting the simulator's guiderate values
to the summary and restart files.
2020-09-02 17:22:04 +02:00
Bård Skaflestad
fdba34e071 IsXGroup: Return Explicit Boolean Value
Mostly to highlight that 'globalIsXGrup_' holds integers rather than
bools.  While here, also fix an error message formatting problem.
2020-09-02 17:22:04 +02:00
Arne Morten Kvarving
7305f84351 use std::make_unique where applicable 2020-09-02 15:35:39 +02:00
Arne Morten Kvarving
182ec130b1 fixed: use const refs in foreach constructs
avoids unnecessary copies
2020-09-01 13:25:26 +02:00
Bård Skaflestad
efed640e63 Broken Constraints: Fix Diagnostic Message
Especially, grab a copy of the "oldControl" to avoid reading through
a reference for which the underlying object is reset in

    setCurrent*GroupControl()

This in turn avoids generating confusing diagnostic messages of the
form

    Switching production control mode for group G from FLD to FLD
2020-08-31 13:04:39 +02:00
Arne Morten Kvarving
f4f5fa3a5d changed: remove one missed TTAG usage
also include header for the Scalar property definition
2020-08-28 10:44:53 +02:00
Arne Morten Kvarving
9a000c6d07 changed: remove SET_TAG_PROP macro usage 2020-08-28 10:44:53 +02:00