Kai Bao
286a7d2e5b
Merge pull request #3002 from totto82/moveWellOpCheck
...
move well operability check for STW
2021-01-08 11:28:35 +01:00
Joakim Hove
c6f0ea3ae2
Merge pull request #3004 from joakim-hove/nupcol
...
Use ScheduleState to access nupcol
2021-01-07 15:48:49 +01:00
Joakim Hove
a8be103173
Merge pull request #3005 from joakim-hove/sched-tuning
...
Access tuning class from ScheduleState
2021-01-07 07:49:29 +01:00
Joakim Hove
ad9d6079b3
Merge pull request #3001 from joakim-hove/improve-error-message
...
Output typeid(T).name() for types without packing support
2021-01-06 19:12:25 +01:00
Joakim Hove
fe788cdb05
Access tuning class from ScheduleState
2021-01-06 16:26:13 +01:00
Joakim Hove
c1e10d81ba
Use ScheduleState to access nupcol
2021-01-06 15:10:05 +01:00
Tor Harald Sandve
5ee75c45e3
move well operability check for STW
2021-01-05 15:10:40 +01:00
Joakim Hove
f5653af392
Output typeid(T).name() for types without packing support
2021-01-05 12:00:46 +01:00
Bård Skaflestad
cc6d0e35a3
Relperm Diagnostics: Chase EPS API Update
...
The API for extracting unscaled (raw) saturation end-points has
changed in opm-material. Follow that change here.
2021-01-05 09:59:07 +01:00
Joakim Hove
fff19a2cf3
Serialize std::chrono::system_clock::time_point through std::time_t
2021-01-03 10:30:51 +01:00
Markus Blatt
c037bd762d
Merge pull request #2990 from atgeirr/testing-precfactory-operators
...
Only add AMG preconditioners to factory if sensible.
2020-12-22 09:52:53 +01:00
Tor Harald Sandve
967f99500c
dont copy the well model in computeWellPotentials
2020-12-22 09:25:56 +01:00
Atgeirr Flø Rasmussen
02f93984f3
Merge pull request #2995 from totto82/stopfix
...
don't shut stopped wells
2020-12-21 15:51:36 +01:00
Bård Skaflestad
a657f2371a
Merge pull request #2996 from totto82/outputStoppedWells
...
output stopped wells
2020-12-21 15:22:25 +01:00
Tor Harald Sandve
33e3102983
output stopped wells
2020-12-21 13:51:21 +01:00
Arne Morten Kvarving
b812088519
further avoidance of overlap cells
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
faa04b5c4d
changed: put initializeConnections in base aquifer class
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
4cdb3e85c0
make initializeConnection similar in aquifer classes
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
5f844bc3a4
fixed: no reason to calculate this inside the loop
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
86d7666e5c
enable aquifers in parallel
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
fa90bc0709
add some parallel reductions in aquifer code
2020-12-21 12:54:34 +01:00
Arne Morten Kvarving
91336f30e7
fixed: do not process aquifers attached to overlap cells
2020-12-21 12:02:54 +01:00
Tor Harald Sandve
bcdf6c8d02
don't shut stopped wells
2020-12-21 09:25:57 +01:00
Bård Skaflestad
eb4aabc71a
Merge pull request #2986 from totto82/scalePot
...
Initial well rates with the well potentials and scale the segment rates
2020-12-18 23:03:37 +01:00
Markus Blatt
ef6c953e0f
[bugfix] Fix partial sum
...
the total number of entries gathered was computed wrong, and we wrote
out ouf memory.
2020-12-18 14:48:19 +01:00
Markus Blatt
5b943761d7
Fixes StandardWell::computeConnectionDensities.
...
This computation is serial and needs a complete representation
of data attached to all preforations (even those stored on
another process). This commit uses the newly created factory to
correctly compute the connection densities for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
69fd6495c0
Added factory to construct the global representation of perf data.
...
Some of our computations are heavily serial and need a complete
representation of the data attached to all perforation no matter
whether a perforation lives on the local partition or not. This commit
adds a factory that allows to easily create such a representaion and
helps writing data back to the local representation.
2020-12-18 14:48:19 +01:00
Markus Blatt
53b51eeba7
Use int as global index type in IndexSet
...
That is what seems to be used by ECL schedule, too.
2020-12-18 14:48:19 +01:00
Markus Blatt
4dff6fb168
Fixes StandardWell::updateProductivityIndex for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
12f5a6aaff
Fixes StandardWell::allDrawDownWrongDirection for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
ba1feadb63
Added missing parallel reduction to computeCurrentWellRates.
...
This is supposed to be summation over values at all perforations.
Hence, it needs a parallel sum.
2020-12-18 14:48:19 +01:00
Markus Blatt
fc4a7fa3c1
Fixes StandardWell::updateIPR for distributed wells.
...
Of course the summation needs to be over all perforations of the
wells, no matter where they reside. Hence we need communication.
2020-12-18 14:48:19 +01:00
Markus Blatt
c09797355d
Sum well rates in computeWellRatesWithBhp for distributed wells.
...
This needs summation over all procs that share the well as it needs
information from all perforations. Some of them might reside on other
processes.
2020-12-18 14:48:19 +01:00
Alf Birger Rustad
673328a4e1
Remove WSEGAICD from missing features
2020-12-18 11:23:26 +01:00
Atgeirr Flø Rasmussen
d910d42f6e
Only add AMG preconditioners to factory if sensible.
...
Also add test using a new operator class, that would not compile
without the change.
2020-12-17 14:54:59 +01:00
Tor Harald Sandve
273538e1f4
some cleanup
2020-12-16 12:58:17 +01:00
Tor Harald Sandve
30ce605713
use the old initSegmentRates when opening up wells
2020-12-15 15:15:59 +01:00
Atgeirr Flø Rasmussen
81419aa001
Merge pull request #2975 from totto82/dunify_aquifers
...
Dunify aquifers
2020-12-15 09:46:21 +01:00
Tor Harald Sandve
d027205c34
Initial well rates with the well potentials and scale the segment rates
...
Initialize the well rates with well potentials when computing rates from bhp or bhp(thp)
The bhp was already initialized.
Scale the segment rates and pressure to adapt to changes in well rate and bhp
Improves convergence of the well potential calculations
2020-12-15 08:39:22 +01:00
Joakim Hove
ab143d15c7
Make sure well is open before copying MSW well state from previous
2020-12-14 09:01:42 +01:00
Joakim Hove
aa345a36f1
Fetch connpos and number of perforations from WellInfo for MSW wells
2020-12-14 09:01:37 +01:00
Markus Blatt
065e2f34f1
Do not include config.h in header (not even in *_impl.hpp)
...
I was getting warnings about redefined definitions (e.g. HAVE_PARMETIS).
2020-12-11 17:53:24 +01:00
Markus Blatt
924bf5ed19
Use old style traits class approach to check for face tag support.
...
Old version failed due to a gcc compiler
bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77446 with error:
"non-constant condition for static assertion"
2020-12-11 17:39:55 +01:00
Joakim Hove
cd19e987cf
Merge pull request #2981 from joakim-hove/skip-prev-closed-well
...
Skip previously shut wells in WellState init
2020-12-11 17:01:46 +01:00
Markus Blatt
9097907857
Merge pull request #2983 from blattms/stdwell-comm-works-on-spe9-2
...
use random access to simplify code at second occasion
2020-12-11 17:00:07 +01:00
Tor Harald Sandve
7a42a82c55
add check for gridType
2020-12-11 15:33:25 +01:00
Markus Blatt
fa83ed2fdc
use random access to simplify code at second occasion
2020-12-11 14:25:56 +01:00
Markus Blatt
354ae1f319
Merge pull request #2976 from blattms/stdwell-comm-works-on-spe9
...
Make distributed standard well work on SPE9.
2020-12-11 13:43:03 +01:00
Tor Harald Sandve
e09eff6063
Merge pull request #2979 from totto82/prepostreport
...
Add report for pre/post time
2020-12-11 13:38:58 +01:00
Tor Harald Sandve
6cf91e7f19
Get compressed to cartesian mapping and depths from the vanguard
2020-12-11 12:48:01 +01:00
Tor Harald Sandve
8a0fde9104
dunify the aquifer models
2020-12-11 12:48:01 +01:00
Markus Blatt
b4ed86313e
use random access to simplify code during partial_sum of dist wells
2020-12-11 11:24:51 +01:00
Markus Blatt
02bab0957d
Merge pull request #2982 from totto82/fixPot
...
move the try-catch inside the compute potential loop
2020-12-11 11:24:21 +01:00
Tor Harald Sandve
2deee380f9
move the try-catch inside the compute potential loop
2020-12-11 08:26:52 +01:00
Joakim Hove
8c17172f08
Skip previously shut wells in WellState init
2020-12-10 16:41:10 +01:00
Tor Harald Sandve
6b7c0e630a
report pre/post time
2020-12-10 13:40:41 +01:00
Atgeirr Flø Rasmussen
2673af7db5
Merge pull request #2978 from joakim-hove/use-well-status
...
Use enum Well::Status for well status in WellState
2020-12-10 12:43:40 +01:00
Markus Blatt
c0c1897ea9
Fix computeConnectionPressureDelta for distributed wells.
...
As this is as sequential (ordering matters!) as it can get we need to
communicate all perforations, do the partial sum with them and save
result back to the local perforations.
2020-12-10 11:32:52 +01:00
Markus Blatt
35218bf042
Added possibility to communicate values from perforations below.
2020-12-10 11:06:28 +01:00
Markus Blatt
3c66b729e1
Fixes perf rate initialization for distributed wells.
2020-12-10 11:06:28 +01:00
Joakim Hove
f5f3d8a98e
Introduce WellState::stopWell()
2020-12-10 09:54:37 +01:00
Atgeirr Flø Rasmussen
6e87ec6266
Merge pull request #2955 from blattms/stdwell-comm-rebase-split-pwell-info
...
Last part of current distributed standard wells.
2020-12-10 08:56:00 +01:00
Joakim Hove
bd3fa0af88
Use enum Well::Status for well status in WellState
2020-12-10 08:11:19 +01:00
Bård Skaflestad
a9e739d0a2
Merge pull request #2977 from joakim-hove/connpos
...
Change access to connpos to use WellMap instead of index counting
2020-12-09 20:50:03 +01:00
Joakim Hove
e4303c6784
Change access to connpos to use WellMap instead of index counting
2020-12-09 16:49:10 +01:00
Bård Skaflestad
b83f8f0397
Merge pull request #2949 from totto82/msw_operability2
...
Check operability for MSW
2020-12-09 15:06:21 +01:00
Markus Blatt
1d9d04161d
Use std::partial_sum to calculate displacements.
2020-12-09 12:30:48 +01:00
Markus Blatt
b97385c963
Fix and move changes to commented code to code to WellGroupHlper.hpp
2020-12-09 12:29:56 +01:00
Tor Harald Sandve
73439070f7
Merge pull request #2963 from totto82/extbo_conv
...
add convergence check for extended blackoil model
2020-12-09 08:51:11 +01:00
Atgeirr Flø Rasmussen
f6353535c9
Merge pull request #2973 from blattms/include-config.h
...
[bugfix] Include config.h in WellGroupHelpers.cpp
2020-12-09 07:36:33 +01:00
Markus Blatt
4f93b2b7c6
Include config.h in WellGroupHelpers.cpp
...
as should be done in all cpp files.
2020-12-08 21:21:02 +01:00
Atgeirr Flø Rasmussen
6a376b3212
Merge pull request #2922 from atgeirr/make-new-well-rate-init-default
...
Make --alternative-well-rate-init=true the default.
2020-12-08 16:25:12 +01:00
Tor Harald Sandve
21fd76ccf6
add convergence check for extended blackoil model
2020-12-08 13:09:58 +01:00
Tor Harald Sandve
ba8d2068ea
pass trivial B_avg to init method in wellPI calculation
2020-12-08 12:51:25 +01:00
Tor Harald Sandve
5fb73c9714
Only check well operability for wells under THP and BHP limits
2020-12-08 12:38:25 +01:00
Tor Harald Sandve
8ca9cc241a
remove unused warnings
2020-12-08 12:38:25 +01:00
Tor Harald Sandve
bc04fb68ef
check the sum not individual phases for operability
2020-12-08 12:38:25 +01:00
Tor Harald Sandve
90050372ae
keep msw wells open even if bhp from thp fails
2020-12-08 12:38:25 +01:00
Tor Harald Sandve
a7664f9ea6
Add check for operability of MSW
2020-12-08 12:38:25 +01:00
Atgeirr Flø Rasmussen
dbb1d0e731
Silence warnings.
2020-12-08 09:33:07 +01:00
Markus Blatt
44bd18ea78
Used remove_reference_t
2020-12-07 20:41:15 +01:00
Markus Blatt
b6c1a1533c
Use vector::empty() instead of size() to test for entries.
2020-12-07 20:41:15 +01:00
Markus Blatt
07e676371e
Get global index from Well connection instead of computing it.
2020-12-07 20:22:54 +01:00
Markus Blatt
f7ed1b21fa
Determine pressure and depth above for distributed wells.
2020-12-07 16:32:33 +01:00
Markus Blatt
6f4fa114c1
barrier before and after MPI_Broadcast in non-production runs.
...
This helps with debugging as for some OpenMPI versions communication
might interfere with other communications if there are bugs.
2020-12-07 16:32:33 +01:00
Markus Blatt
901327ac54
Cater for empty parts of distributed wells for pvt region index.
2020-12-07 16:32:33 +01:00
Markus Blatt
a9df5065ae
Use global number of perforations when initializing well.
...
The local number of perforations is not correct anymore
for distributed wells.
2020-12-07 16:32:33 +01:00
Markus Blatt
0d6c39be2f
Fix distributed WellInterface::checkMaxRatioLimitCompletions
...
Not all connections are local, hence we need a sum across all processes
computing for this well.
2020-12-07 16:32:33 +01:00
Markus Blatt
6eb835c98e
Only use connections in the interior for distributed wells.
2020-12-07 16:32:33 +01:00
Markus Blatt
91e951420f
[bugfix] Pass references to gatherVectorOnRoot
2020-12-07 15:40:51 +01:00
Markus Blatt
fd4db9b933
Only sum rates for owned wells in WellGroupHelpers.
...
Well rates of distributed wells might be stored on multiple processes
but should be summed only once. Hence only the owner does the
summation with this commit.
2020-12-07 15:40:51 +01:00
Markus Blatt
c2f59b0629
Skip temp. reporting of some rates if distributed non-owned wells.
...
In the end of the report each the report from these wells will
come from another process, anyway.
2020-12-07 15:40:51 +01:00
Markus Blatt
472623d4a3
Output report for distributed wells only on owner.
...
For this we need to gather the connection data from
both WellState and WellStateFullyImplicitBlackoil.
2020-12-07 15:40:51 +01:00
Markus Blatt
580ef249b3
Skip wells not owned when communicating goup rates.
2020-12-07 15:40:50 +01:00
Markus Blatt
4edca71a1b
Correct pressure and pvt region index for distributed wells.
...
To get this we need to determine which process has the
very first open well connection and use that to broadcast
pressure and pvt region index.
2020-12-07 15:40:50 +01:00
Markus Blatt
a9a733ebc1
Make check whether a connection exists work for distributed wells.
2020-12-07 15:20:42 +01:00
Arne Morten Kvarving
7d19091cb3
changed: make member variables constexpr
...
may as well use the compile time information to eliminate
unnecessary code
2020-12-07 12:16:04 +01:00
Arne Morten Kvarving
bbf0f7d6af
remove unused members
2020-12-07 12:09:33 +01:00
Markus Blatt
932e3c8fb9
Use a custom handle for copying doubles for above.
...
The one previously used is unfortunately protected upstream (not noticed with gcc <=8).
2020-12-07 11:47:09 +01:00
Atgeirr Flø Rasmussen
d20641d97b
Only modify initial rates for producers.
2020-12-07 10:05:46 +01:00
Atgeirr Flø Rasmussen
a07ee07c66
Add missing template qualification.
2020-12-07 08:31:10 +01:00
Kai Bao
7ecb2e4813
Merge pull request #2866 from bska/activate-welpi-scaling
...
Initial Implementation of WELPI Feature
2020-12-04 20:44:42 +01:00
Atgeirr Flø Rasmussen
83a6c2abae
Merge pull request #2947 from blattms/fix-parallel-well-red
...
Prepares for apply distributed standard wells.
2020-12-04 20:32:30 +01:00
Bård Skaflestad
d06b7f9ec2
Record Basic Support for WELPI
...
Remove 'WELPI' keyword from MissingFeatures.
2020-12-04 15:16:25 +01:00
Bård Skaflestad
319c240336
Run WELPI Scaling At Beginning of Report Step
...
This commit implements the WELPI feature. We calculate new PI/II
values for all wells in the event of a WELPI request and use those
values for well-specific WELPI request, to calculate CTF scaling
factors. We then apply those factors to all subsequent editions of
the well provided the connection factors are eligible for
WELPI-based rescaling.
If we trigger a rescaling event we also reset the WellState's
internal copies of the CTFs and reinitialize the Well PI calculators
to ensure the rescaling takes effect immediately. Since we rely on
PI values being available at the end of each time step we must also
take care to forward those values from the WellState of one report
step to the WellState of the next report step.
Finally, take care not to redo a WELPI scaling if we've already
performed the scaling operation and restart a report step. This,
in turn, happens if WELPI is requested on the first report step.
2020-12-04 15:16:25 +01:00
Bård Skaflestad
f6130861df
Well Data: Report CTFs for Shut Connections
...
Needed to ensure that the CTFs reported to the summary files will be
correct in the presence of WELPI even for shut connections.
2020-12-04 15:16:25 +01:00
Bård Skaflestad
e780d107ab
Split Well Stat Initialization Out to Helper Function
...
Mostly to reduce the complexity of the implementation of
beginReportStep() and to enable easier reordering of the stages.
2020-12-04 15:16:25 +01:00
Bård Skaflestad
4e9e60a71b
Refactor Well Guide Rate Summary Assignment
...
In anticipation of adding more steps later.
2020-12-04 15:16:24 +01:00
Bård Skaflestad
c800c5376d
Add Special-Purpose Operation to Reset WellState CTFs
...
This commit adds a new member function
WellState::resetConnectionTransFactors
which overwrites the transmissibility factor of 'well_perf_data_'
pertaining to a particular well. This is to keep the values in
sync following a rescaling operation such as WELPI.
2020-12-04 15:16:24 +01:00
Bård Skaflestad
aaca907f77
Productivity Index Calculator: Add Reinitialization operation
...
This commit adds a new member function
WellProdIndexCalculator::reInit(const Well& well)
which reinitializes the internal arrays in the same way as the
constructor. This is needed to ensure that the PI calculation
device is synchronised in the case of CTF rescaling-e.g., as a
result of WELPI.
2020-12-04 15:16:24 +01:00
Bård Skaflestad
3ac2f02f4f
Merge pull request #2839 from akva2/remove_liftopt_missing
...
remove LIFTOPT and WLIFTOPT from missing features
2020-12-04 13:52:09 +01:00
Markus Blatt
10fd57f37f
BlackoilWellModel: Skip capturing this and simulator in lambda
...
Instead create local variables and capture them.
2020-12-04 13:43:45 +01:00
Markus Blatt
2e5b1c8d54
Use reference for WellInterface::parallel_well_info_
2020-12-04 13:24:31 +01:00
Markus Blatt
eb03712027
Factored out creation of parallel well infos from getLocalNonshutWells.
2020-12-04 13:02:01 +01:00
Markus Blatt
9c17628995
Renamed pinfo to parallel_well_info
2020-12-03 15:34:48 +01:00
Markus Blatt
9cada4a5a5
Fix indentation
2020-12-03 15:29:12 +01:00
Markus Blatt
575120d4f0
Improce documentation a bit.
2020-12-03 15:24:05 +01:00
Kai Bao
61bebb2ec5
addressing reviewing comments for OPM/opm-simulators#2951
2020-12-03 15:23:14 +01:00
Kai Bao
6e8394eba6
supporting WSEGAICD
2020-12-03 15:23:14 +01:00
Markus Blatt
c5dd4f4533
Make CommunicateAbove constructor explicit.
2020-12-03 15:12:35 +01:00
Markus Blatt
0126243f02
Utility to communicate above value of a perf of distributed well
...
This adds an utility that creates a vector of all above values for
the local perforations. For distributed wells this is needed as the
perforation above might live on another processor. We use the parallel
index sets together with the global index of the cells that are
perforated.
2020-12-03 11:10:36 +01:00
Markus Blatt
73919d6136
Support broadcasting value of first perforation for distributed well
...
This needed to e.g. determine bottom hole pressure, pvt region, etc.
2020-12-03 11:10:36 +01:00
Markus Blatt
317e29d15a
Utility for checking connections of distributed well.
2020-12-03 11:10:36 +01:00
Markus Blatt
3d92e41cad
Recover prev. iteration count and curves for undistributed wells
...
Rounding errors for `B.mmv(x,y)` are slightly different from
```
Y temp(y);
B-mv(x, temp);
y -= temp;
```
2020-12-03 11:10:36 +01:00
Markus Blatt
8ee58096ba
Make the parallel reduction when applying the Wells.
...
The B matrix is basically a component-wise multiplication
with a vector followed by a parallel reduction. We do that
reduction to all ranks computing for the well to save the
broadcast when applying C^T.
2020-12-03 11:10:36 +01:00
Markus Blatt
3996967344
Added a class with information and comunicator for parallel wells.
...
BlackoilWellModel now stores an instance of this class for each
well. Inside that class there is a custom communicator that only
contains ranks that will have local cells perforated by the well.
This will be used in the application of the distributed well operator.
This is another small step in the direction of distributed wells,
but it should be safe to merge this (note creation of the custom
communicators is a collective operation in MPI but done only once).
2020-12-03 09:29:43 +01:00
Paul Egberts
877c0b723d
fix missing argument for BlackoilTwophaseIndices
2020-12-03 09:04:11 +01:00
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