Kai Bao
c246dc6938
applying the face area when calculating the flux rate
...
For NNC is not needed, but some NNC is converted to some non-NNC, we
need the face area.
2021-02-22 23:15:26 +01:00
Kai Bao
8d7c3aa0ca
getting numerical aquifer ready for summary output
...
it works well for some cases, while not the other one. More
investigation is ongoing.
2021-02-22 23:15:26 +01:00
Kai Bao
6008aa8339
begining simulator code for numerical aquifer
...
most of the functionality is to collect data for summary output.
2021-02-22 23:15:26 +01:00
Paul Egberts
59b6e21cc3
fixed num_perf_this_well declaration
2021-02-22 21:39:34 +01:00
Paul Egberts
42f426c7fd
rebasing thermaloutput
2021-02-22 18:47:13 +01:00
Paul Egberts
3ff3d549ed
temperature output as weighted sum of well block temperatures based on specific heat capacity of the phases
2021-02-22 18:41:25 +01:00
Tor Harald Sandve
38a394dcc2
change default MinTimeStepBeforeShuttingProblematicWellsInDays to 0.01
2021-02-19 09:12:36 +01:00
Joakim Hove
ff51c2d7ee
Handle WELLPI keyword in ACTIONX
...
When an ACTIONX has evaluated to True we inspect the keyword payload and if it
contains WELPI we query the well model for current wellpi values and pass that
along as context to the Schedule::applyAction()
2021-02-18 16:53:50 +01:00
Joakim Hove
d65cb22e69
Merge pull request #3066 from joakim-hove/vfp-warnings
...
Use class based enums for VFP flow types
2021-02-16 13:37:57 +01:00
Joakim Hove
abf48b0782
Remove multiplier in aquifer connected area
2021-02-16 10:02:36 +01:00
Joakim Hove
d2e6d80265
Improve warning when invalid values are encountered in VFP
2021-02-16 07:48:59 +01:00
Joakim Hove
471a19e851
Pass table argument to getGFR() and getWFR()
2021-02-15 22:36:51 +01:00
Joakim Hove
fda1d65494
Pass table argument to VFP getFLo()
2021-02-15 22:21:56 +01:00
Joakim Hove
6383f3c1ac
Use class based enums for VFP flow types
2021-02-15 19:17:39 +01:00
Joakim Hove
27b4dabd6a
Merge pull request #3063 from joakim-hove/aquconn-default
...
Aquifer connected cell area - unconditional access to double
2021-02-15 09:20:10 +01:00
Joakim Hove
b7f3a07939
Aquifer connected cell area - unconditional access to double
2021-02-14 20:47:22 +01:00
Joakim Hove
99a61e120b
Implement BlackoilWellModel::hasWell() method
2021-02-13 10:37:45 +01:00
Joakim Hove
0299af26ed
Extract method wellPI() from existing lambda implementation
2021-02-12 11:49:04 +01:00
Alf Birger Rustad
8fce439f13
One more message
2021-02-12 10:39:04 +01:00
Alf Birger Rustad
40800da0a8
Do not report confusing error
2021-02-11 23:48:30 +01:00
Bård Skaflestad
4f112e443f
Merge pull request #3055 from joakim-hove/wellpi-update-connections
...
Extract functionality to update ecl_well
2021-02-10 21:15:20 +01:00
Joakim Hove
89eb6e5659
Extract functionality to update ecl wells to separate function
2021-02-10 15:17:36 +01:00
Markus Blatt
00df3d06c2
Allow usage of non-gpu devices with OpenCL.
...
This is needed to use the CPU backend of PoCL http://portablecl.org/
which seems handy for debugging.
2021-02-09 10:45:19 +01:00
Markus Blatt
7862f7d56d
Merge pull request #2991 from Tongdongq/fgpilu_cpu_gpu
...
Added CPU and GPU implementations of Fine-Grained Parallel ILU (FGPILU)
2021-02-09 10:35:12 +01:00
Joakim Hove
d9f29945aa
Pass unscaled newWellPI to Schedule::applyWellProdIndexScaling()
2021-02-05 12:53:00 +01:00
tqiu
c8dca99fad
Renamed fgpilu to ChowPatelIlu
2021-02-03 17:43:54 +01:00
Kai Bao
a18c1a15ab
correcting the output of the number of threads
2021-02-03 14:02:56 +01:00
Markus Blatt
0238a80b02
Merge pull request #3032 from blattms/test-spe9-distributed-wells
...
Support external loadbalancers in EclCpGridVanguard
2021-02-02 11:21:40 +01:00
Markus Blatt
67fc95c340
Merge pull request #3029 from blattms/activate-distributed-wells
...
Activate distributed wells in the simulator
2021-02-02 09:40:08 +01:00
tqiu
a64a342104
Added symmetry check in Debug mode
2021-02-01 11:19:38 +01:00
Bård Skaflestad
76c59978b6
Reset Non-Linear Iteration Count Before 'beginTimeStep'
...
While here, also fix a couple of misprints in a nearby comment.
2021-01-29 12:30:34 +01:00
Markus Blatt
1af403c45d
Merge pull request #3037 from totto82/resetIter
...
reset the iteration count in the newtonSolver
2021-01-29 08:33:17 +01:00
Tor Harald Sandve
d3ea5a67ea
reset the iteration count in the newtonSolver
2021-01-29 07:59:56 +01:00
tqiu
363cc31316
Made waiting for a GPUcopy more explicit
2021-01-28 15:40:10 +01:00
Arne Morten Kvarving
9b74b5dfac
changed: this is known on compile time
...
use info to disable code
2021-01-28 14:33:56 +01:00
tqiu
d222dffcfd
Improved initial guess of L
2021-01-28 13:46:01 +01:00
Arne Morten Kvarving
77692c1f99
quell unused parameter warning
2021-01-28 12:52:19 +01:00
Kai Bao
e77f8b2f7d
Merge pull request #2997 from totto82/avoidDoubleCopy
...
dont copy the well model in computeWellPotentials
2021-01-28 11:45:41 +01:00
Kai Bao
d8f8b9f0cc
Merge pull request #3028 from totto82/quarryPerfLengthAndRadius
...
get connection length and radius from the connection object
2021-01-28 11:21:21 +01:00
Markus Blatt
2d23b01da8
Restrict property/type tag changes to eclbasevanguar.hh
2021-01-27 14:41:10 +01:00
Bård Skaflestad
27a11508ae
Merge pull request #3031 from totto82/relperm_diag
...
Removing explicit usage of the Grid in the relperm diagnostics
2021-01-27 09:18:16 +01:00
tqiu
837a83fc16
Added error checking and std::call_once
2021-01-26 17:32:18 +01:00
tqiu
1e09b1f4d9
Added comments and rewrote if
2021-01-26 15:42:38 +01:00
Tor Harald Sandve
c145722798
pass CartesianIndexMapper instead of the grid to the RelpermDiagnositics
2021-01-26 14:59:36 +01:00
Joakim Hove
358620120e
Merge pull request #3027 from joakim-hove/vfp-ref-wrapper
...
Use std::reference_wrapper<> instead of pointers for VFP tables
2021-01-26 11:07:42 +01:00
Bård Skaflestad
7684f22073
Merge pull request #3000 from totto82/substituteSolveWellEq
...
substitute solveWellEq with inner iterations and initial solve
2021-01-26 09:59:37 +01:00
Joakim Hove
e4789d4eb7
Use std::reference_wrapper for VFP tables
2021-01-26 07:56:59 +01:00
Markus Blatt
f464d93f15
Activate distributed standard wells.
...
We introduce a new parameter --enable-distributed-wells=<true|false>
for this. During startup we check that the model either only has
standard wells or that multisegement wells are actively interpreted
as standard wells (by way of passing --enable-multisegment-wells=false
as an option).
2021-01-25 15:05:24 +01:00
Tor Harald Sandve
9277b2edee
get connection length and radius from the connection object
2021-01-25 14:08:59 +01:00
Bård Skaflestad
f8e4346e6d
Ensure Well Defined Initial Values for CT Data Members
2021-01-22 09:04:08 +01:00
Atgeirr Flø Rasmussen
18a8d78f02
Merge pull request #3008 from GitPaean/cleaningup_after_aicd_pr
...
refactoring the pressure assemble equations for ICD
2021-01-22 08:26:16 +01:00
Tor Harald Sandve
91ab0f4d93
fix phase index for WELLPI for MSW
2021-01-21 11:58:24 +01:00
Tor Harald Sandve
036a021c63
fix well model for gasoil thermal
2021-01-21 11:37:25 +01:00
tqiu
dba20adf04
Bugfix: extra swap was done on odd number of sweeps
2021-01-20 11:00:30 +01:00
Tor Harald Sandve
36ba423d42
Add guard around solve well equation.
2021-01-20 08:46:58 +01:00
tqiu
48ebef7808
Updated comments
2021-01-19 11:06:39 +01:00
tqiu
123e3fa89e
Use std::find and added comments
2021-01-18 17:10:46 +01:00
Tor Harald Sandve
62e485cbea
adapt to changes in the schedule class
2021-01-18 15:12:17 +01:00
Tor Harald Sandve
b6fe8cbd77
only update individual wells after solve eq
2021-01-18 15:12:17 +01:00
Tor Harald Sandve
27bea2fa4f
Solve well equation for the first iteration
2021-01-18 15:12:17 +01:00
Tor Harald Sandve
fbcd230eb2
substitute solveWellEq with one inner solve for newly opened wells
2021-01-18 15:12:17 +01:00
tqiu
a8e524fc9d
Minor C to C++ changes
2021-01-18 14:11:07 +01:00
Atgeirr Flø Rasmussen
3a0dbdc6e7
Merge pull request #2993 from blattms/stdwell-comm-rebase-split-cont-clean
...
Final fixes to make distributed wells work for Norne.
2021-01-15 15:42:45 +01:00
Joakim Hove
17fcdfc87a
Use ScheduleState to handle VFP propertes + simplifications
2021-01-14 19:22:34 +01:00
tqiu
0f9ae3695d
Made reordering optional for WellContributions
...
Removed unnecessary alloc
2021-01-13 12:34:56 +01:00
Joakim Hove
5b129a3304
Use ScheduleState to manage network properties
2021-01-13 00:58:03 +01:00
Joakim Hove
b32f3f7546
Manage GConSale and GConSump with ScheduleState object
2021-01-12 18:29:59 +01:00
tqiu
f26e58c6ca
Reordering is now actually skipped when NONE is chosen.
...
Also made reordering optional for openclSolver.
2021-01-12 15:25:47 +01:00
tqiu
71692ff52b
Disabled FGPILU by default
2021-01-12 15:21:19 +01:00
tqiu
9f92a69037
Added CPU and GPU implementations of Fine-Grained Parallel ILU (FGPILU)
2021-01-12 15:21:19 +01:00
Joakim Hove
c1a1bf8683
Use ScheduleState to manage well test configuration
2021-01-12 14:08:41 +01:00
Joakim Hove
914bbeca82
Fetch messagelimits from ScheduleState
2021-01-12 07:44:10 +01:00
Joakim Hove
237eb2b7ee
Fetch events from ScheduleState
2021-01-11 17:42:30 +01:00
Joakim Hove
8983b8d532
Merge pull request #3009 from GitPaean/moving_aquifer_folder
...
adapting to the directory change in opm-common related to aquifer
2021-01-09 10:35:03 +01:00
Kai Bao
a3004580e6
adapting to the directory change in opm-common related to aquifer
2021-01-08 23:18:41 +01:00
Kai Bao
00ca6dc492
putting all the pressure assmeble function to one function
...
assemblePressureEq for MSW
2021-01-08 16:46:32 +01:00
Kai Bao
2dc63b7a57
putting the three ICD assembleEq function to be one
...
to reduce the code duplication.
2021-01-08 15:09:27 +01:00
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
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
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