Joakim Hove
f5f3d8a98e
Introduce WellState::stopWell()
2020-12-10 09:54:37 +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
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
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
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
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
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
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