Håkon Hægland
cd85943352
Fix some warnings.
2021-03-30 15:41:46 +02:00
Håkon Hægland
434640fdf5
Implements gas lift optimization for groups.
...
Extends PR #2824 to include support for GLIFTOPT (item 2, maximum lift
gas supply for a group) and group production constraints.
The optimization is split into two phases. First the wells are optimized
separately (as in PR #2824 ). In this phase LIFTOPT and WLIFTOPT constraints
(e.g. maxmimum lift gas injection for a well, minimum economic gradient) are
considered together with well production constraints.
Then, in the next phase the wells are optimized in groups. Here, the ALQ
distribution from the first phase is used as a starting point. If a group
has any production rate constraints, and/or a limit on its total rate of
lift gas supply, lift gas is redistributed to the wells that gain the most
benefit from it by considering which wells that currently has the largest
weighted incremental gradient (i.e. increase in oil rate compared to
increase in ALQ).
2021-03-30 15:41:46 +02:00
Joakim Hove
98f6a9a7ac
Update collection of wells after ACTIONX
2021-03-29 16:20:10 +02:00
Joakim Hove
5fe43c09cb
Implement updateEclWell() as an internal function in wellPI code
2021-03-29 16:20:10 +02:00
Joakim Hove
90a9ed49a2
Add function WellState::updateStatus()
2021-03-29 16:20:10 +02:00
Joakim Hove
43925ae4f2
Explicily assign CMODE_UNDEFINED when controls vector is resized
2021-03-29 16:20:10 +02:00
Joakim Hove
405b9d2244
Add accessor functions to maintain WellState objects in well model
2021-03-29 15:30:32 +02:00
Joakim Hove
3d226abd24
Remove references to RestartConfig
2021-03-26 08:03:07 +01:00
Bård Skaflestad
7503cfd76a
Address PR Review Comments
2021-03-24 23:13:50 +01:00
Bård Skaflestad
578fa4b6c3
Report Dimensionless Time and Pressure for CT Aquifers
...
This commit adds support for calculating and reporting the
dimensionless time (simulator time divided by aquifer's time
constant) and pressure (influence function evaluated at
dimensionless time) values as part of the Carter-Tracy aquifer's
'aquiferData()' reporting function.
These values are useful in their own right, e.g., for summary output
through the keywords AAQTD and AAQPD, but they are also needed for
ECLIPSE restart purposes.
2021-03-24 23:13:50 +01:00
Bård Skaflestad
c23ce16879
Merge pull request #3120 from totto82/refactorBAVG
...
only compute Bavg once pr timestep
2021-03-24 11:34:13 +01:00
Bård Skaflestad
f980ff5f77
Merge pull request #3128 from totto82/fixTarget
...
reset target from wconprod and wconinje
2021-03-23 23:59:27 +01:00
Bård Skaflestad
41fd301d16
Merge pull request #3131 from fgfuchs/global_time_fix
...
fix bug that sets global_time to 0
2021-03-23 15:51:47 +01:00
Tor Harald Sandve
8283b53f3b
only compute Bavg once pr timestep and use the stored variable instead of passing it around
2021-03-23 15:30:36 +01:00
Franz Georg Fuchs
b86d5e2ad0
fix bug that sets global_time to 0
2021-03-23 12:19:07 +01:00
Tor Harald Sandve
3a65a7ba22
reset target from wconprod and wconinje
2021-03-23 09:23:35 +01:00
Tor Harald Sandve
8882b8027a
Merge pull request #3115 from totto82/onlyComputeGuideRateOnce
...
only compute guiderates at the beginning of a timestep
2021-03-23 08:43:47 +01:00
Joakim Hove
44eb07e621
Don't Initialize Well State for Shut Wells
2021-03-20 20:33:28 +01:00
Joakim Hove
4fd5d52f2f
Retrieve Number of Connections from Well Map
2021-03-20 20:33:28 +01:00
Joakim Hove
f0c738ea34
Reflect Well Object's Status Flag in Well State
2021-03-20 20:33:28 +01:00
Joakim Hove
e2d75b608b
Rename well filter -> not_on_process_()
2021-03-20 20:33:28 +01:00
Joakim Hove
9662d4019e
Use enum Well::Status to indicate well status instead of bool
2021-03-20 20:33:28 +01:00
Joakim Hove
634f0d61d8
Deferred logger will throw "correct" exception
2021-03-19 14:05:55 +01:00
Tor Harald Sandve
78d351676f
only update guide rates at the beginning of a timestep
2021-03-19 11:09:14 +01:00
Bård Skaflestad
2b34dc843c
Merge pull request #3119 from totto82/mintimestep
...
Change minimum timestep size to 1e-12
2021-03-19 09:39:35 +01:00
Bård Skaflestad
b982ad0fd2
Record Dynamic Well Status in 'wellData()' Output
...
This commit sets the 'data::Well::dynamicStatus' based on the
dynamically updated 'Schedule' object (i.e., from ACTIONX and
similar) and the results of well/operability testing (WECON and/or
WTEST). If a well is closed due to economic limits (WECON) we still
provide summary-style data at the timestep that closed the well, but
omit this data at later steps until the well reopens.
We add a new parameter to WellState::report() to distinguish these
situations.
This is in preparation of making the 'BlackoilWellModel' manage both
open and shut wells alike.
2021-03-18 17:28:28 +01:00
Bård Skaflestad
65edfb702c
Preparations for Recording Dynamic Well State
...
Coalesce blocks with same conditions, split long lines, and apply
'const' where appropriate. While here, also tighten the "rate = 0"
criterion to include denormalised numbers.
2021-03-18 17:28:28 +01:00
Joakim Hove
cd7c4d9927
Merge pull request #3112 from totto82/refact_ginj
...
Add support for explicit guiderate for injection groups
2021-03-18 17:03:53 +01:00
Tor Harald Sandve
61de5689bd
cleanup: add and remove comments
2021-03-18 14:56:45 +01:00
Tor Harald Sandve
58fa3eaf31
replace asserts with OPM_DEFLOG_THROW
2021-03-18 11:58:05 +01:00
Tor Harald Sandve
1582d92d06
Change minimum timestep size to 1e-12
...
the unit is days for field and metric and hours for lab
the purpose is to shut down "dead" simulations
2021-03-18 10:45:26 +01:00
Bård Skaflestad
0667497108
Merge pull request #3039 from GitPaean/new_numerical_aquifer
...
New numerical aquifer
2021-03-16 16:30:53 +01:00
Tor Harald Sandve
6bac5da27c
adapt to changes in the guiderate interface
2021-03-16 15:56:31 +01:00
Tor Harald Sandve
f4ac7f555b
Add support for explicit guiderate for injection groups
...
With this commit the guiderate logic used for the production groups is also used for injectors
This allows for setting guiderates explicit at different group levels
Only RATE, NETV and VOID guiderate type is suppored.
2021-03-16 15:56:31 +01:00
Tor Harald Sandve
c29b61ff99
Merge pull request #3074 from plgbrts/thermaloutput
...
Temperature output for producers
2021-03-15 13:54:18 +01:00
Kai Bao
1bd7d8775a
Merge remote-tracking branch 'upstream/master' into new_numerical_aquifer
2021-03-15 12:16:09 +01:00
Kai Bao
116b77bd8a
addressing the reviewing comments for PR OPM/opm-simulators#3039
...
putting the numerical aquifer related modification in a function and the
function is called after the equilibration calculation, so it will work
for different equilibration methods.
2021-03-15 10:21:40 +01:00
Joakim Hove
8adea8c68a
Merge pull request #3102 from totto82/validControls2
...
make sure wells has valid controls
2021-03-15 09:43:22 +01:00
Kai Bao
afac0fb485
changing the parameters for the numerical aquifer regression tests
...
cpr linear solver is used for better convergence.
2021-03-12 23:39:01 +01:00
Tong Dong Qiu
8ea19c66aa
Reduced code duplication in BdaBridge
2021-03-12 11:15:02 +01:00
Tong Dong Qiu
81c0a3d9f9
Simplified CPU fallback warnings
2021-03-12 11:15:02 +01:00
Giacomo Marchiori
b4aa28771f
Added fpgaSolver
2021-03-12 11:14:59 +01:00
Kai Bao
9ecdca75d9
Merge remote-tracking branch 'upstream/master' into new_numerical_aquifer
2021-03-11 14:08:42 +01:00
Franz Georg Fuchs
d13cf3ee6a
fix ordering of first line in *INFOSTEP files
2021-03-11 11:22:58 +01:00
Kai Bao
347ca3978a
adding parameter to control the min time step
...
can be reduced to based on the newton iteration counts.
By default it is zero, so it should not change any running results.
2021-03-10 11:49:59 +01:00
Joakim Hove
7e59532944
Merge pull request #3104 from joakim-hove/summary-config-rm-tables
...
Remove TableManager argument when constructing SummaryConfig
2021-03-10 07:33:06 +01:00
Tor Harald Sandve
8ad00e60f9
Merge pull request #3096 from totto82/weconPOTN
...
add support for POTN in WECON
2021-03-09 13:51:14 +01:00
Tor Harald Sandve
858856adec
update solution for WAG injectors
2021-03-09 13:37:03 +01:00
Kai Bao
0ad848658e
Merge pull request #3099 from atgeirr/revive-using_porevolume_average
...
Fix hydrocarbon volume issue with no oil or gas
2021-03-09 12:15:06 +01:00
Arne Morten Kvarving
e179bb5850
quell uninitialized usage warning without mpi
2021-03-09 08:39:17 +01:00
Joakim Hove
46ae5fa577
Merge pull request #3105 from joakim-hove/output-interval
...
Pass ouput interval overeride to Schedule constructor
2021-03-09 07:25:50 +01:00
Joakim Hove
ec344d555d
Pass ouput interval overeride to Schedule constructor
2021-03-08 19:30:58 +01:00
Markus Blatt
3ec181e231
Merge pull request #3089 from Tongdongq/exact-ilu-decomp-gpu
...
Exact ilu decomp gpu
2021-03-08 17:25:04 +01:00
Joakim Hove
253205d63e
Remove TableManager argument when constructing SummaryConfig
2021-03-08 15:40:17 +01:00
Paul Egberts
646dafe78f
introduced computeWellTemperature() to be called at each timestep
2021-03-08 15:11:50 +01:00
Joakim Hove
9597a4be37
Merge pull request #3101 from joakim-hove/summary-config-fp
...
Add FieldProps argument to SummaryConfig constructor
2021-03-08 12:25:25 +01:00
Tor Harald Sandve
a098d76c19
fix issue when switching from injection to/from production
2021-03-08 11:13:34 +01:00
Tor Harald Sandve
f861188d60
make sure wells has valid controls
2021-03-08 08:44:55 +01:00
Joakim Hove
1563525e8d
Add FieldProps argument to SummaryConfig constructor
2021-03-08 08:18:50 +01:00
Joakim Hove
9ad5d69744
Utilize private restartconfig
2021-03-07 09:31:10 +01:00
Kai Bao
f9ead85435
Use pore volume to do the average when hydrocarbon is missing.
2021-03-05 14:49:15 +01:00
Kai Bao
69619339a1
Merge branch 'master' into new_numerical_aquifer
2021-03-04 22:54:36 +01:00
Bård Skaflestad
4ed085ddc3
Merge pull request #3073 from joakim-hove/timemap-api
...
Remove timemap member from Schedule
2021-03-03 18:17:27 +01:00
Tong Dong Qiu
87e3f1d72d
Added timers to ChowPatelIlu
2021-03-03 17:12:46 +01:00
Tong Dong Qiu
b87e9dad9a
Updated comments
2021-03-03 16:36:27 +01:00
Tong Dong Qiu
0caae966b8
Add more waiting for opencl functions, using shortened opencl kernel params in WellContributions
2021-03-03 14:04:06 +01:00
Tong Dong Qiu
688d8ff627
Shorten opencl kernel params, add source file for openclKernels
2021-03-03 13:09:24 +01:00
Tong Dong Qiu
61bf85bf24
Add waiting for enqueueWriteBuffer
2021-03-03 10:37:01 +01:00
Tor Harald Sandve
4f55c25607
add support for POTN in WECON
2021-03-03 10:31:57 +01:00
Tor Harald Sandve
00e65e88b2
Merge pull request #3095 from blattms/apply-gefac-also-on-topmost-group
...
Apply gefac also on topmost VREP controlled group
2021-03-03 10:03:31 +01:00
Tong Dong Qiu
18bf7c4b19
Replace diagfinding with std::find
2021-03-03 09:50:33 +01:00
Bård Skaflestad
d78f5dc259
Merge pull request #3083 from totto82/fixMPIThrow
...
Fix MPI issues in the well model
2021-03-02 12:04:39 +01:00
Markus Blatt
d1f65451f1
Honor top most group efficiency factor in checkGroupConstraints{Inj,Prod}
2021-03-02 11:32:27 +01:00
Markus Blatt
0d2b9629b0
Document efficiencyFactor in checkGroupConstraints{Inj,Prod}
...
Reading recursion is quite hard and a comment might help others.
2021-03-02 11:31:04 +01:00
Bård Skaflestad
a2a9ed192d
Merge pull request #3084 from totto82/onlyLogOnRank0
...
only log changes of group controls on rank 0
2021-03-01 22:10:05 +01:00
Markus Blatt
39546864ab
Honor GEFAC of topmost group when summing solvent rates.
2021-03-01 11:16:29 +01:00
Markus Blatt
6e8b1e8d2e
Honor gefac of topmost group in WellHelpers::updateGuideRateForGroups
2021-03-01 11:16:29 +01:00
Markus Blatt
1d9f13e310
Honor GEFAC for the top most group when calculating well phase rates.
...
Previously GEFAC was not applied here.
2021-03-01 11:15:57 +01:00
Tong Dong Qiu
5b4deab7e4
Generating opencl kernels
2021-03-01 10:26:44 +01:00
Markus Blatt
1ce5c59851
Honor GEFAC for top group in get{Injection,Production}Controls.
2021-03-01 10:26:40 +01:00
Tong Dong Qiu
141af23db5
Exact ILU decomp is now performed on GPU
2021-03-01 10:26:35 +01:00
Tong Dong Qiu
748dc4ccb3
Reduced header inclusion, also moved WellContributions OpenCL initialization
2021-03-01 09:42:56 +01:00
Joakim Hove
81ec44822b
Make sure ParallellFieldPropsManager::porv() return compact values
2021-02-28 15:47:59 +01:00
Tor Harald Sandve
09ff71ae31
only log changes of group controls on rank 0
2021-02-26 14:16:38 +01:00
Joakim Hove
74ca0d12e0
Use std::chrono::system_clock with 1/1000 second resolution
2021-02-25 23:50:25 +01:00
Joakim Hove
6f15765f53
Use Schedule time functions - avoid TimeMap
2021-02-25 18:10:22 +01:00
Tor Harald Sandve
1627e421d7
communicate group data before well testing
2021-02-25 11:08:55 +01:00
Tor Harald Sandve
c23094b299
make another throw tread safe
2021-02-24 15:54:02 +01:00
Atgeirr Flø Rasmussen
831f1db872
Merge pull request #3078 from fgfuchs/json_file_does_not_exist
...
throw specific error if json file does not exist
2021-02-24 14:13:14 +01:00
Franz Georg Fuchs
17126ba229
throw specific error if json file does not exist
2021-02-24 11:31:36 +01:00
Kai Bao
f00b4d9aa8
Merge pull request #3059 from alfbr/fix-error
...
Do not report confusing error
2021-02-23 14:21:59 +01:00
Alf Birger Rustad
034dab84f9
Messages sent to debug file
2021-02-23 12:17:51 +01:00
Kai Bao
4c92f22677
for numerical aquifer, flux_rate_ should not be summed across processes
...
it will be taken care of in ecloutputblackoilmodule.hh
aq.fluxRate += data.fluxRate;
aq.volume += data.volume;
2021-02-22 23:15:26 +01:00
Kai Bao
867b769fcb
only handling the interior elements for numerical aquifer
2021-02-22 23:15:26 +01:00
Kai Bao
5e408ad71b
trying to make the numerical aquifer runs in parallel
...
the current approach is not necessarily correct. When aquifer cells are
on the overlap layers, things are much more complicated.
But it mostly affects only the summary output of the numerical aquifers.
The well data should be fine.
2021-02-22 23:15:26 +01:00
Kai Bao
ab9b43249c
using the water volume instead of pore volume
...
when calculating the nuemricla aquifer pressure.
2021-02-22 23:15:26 +01:00
Kai Bao
2b85e93ef6
some cleaning up
...
not functionality changes.
2021-02-22 23:15:26 +01:00
Kai Bao
524e63a255
adapting to the upstream interface change.
2021-02-22 23:15:26 +01:00
Kai Bao
a755b54afc
rebasing and fixing the compilation.
...
The equilibration needs to be fixed for numerical aquifers.
2021-02-22 23:15:26 +01:00
Kai Bao
b6fdb7cc8e
using global index when accessing pore volume in numerical aquifer
2021-02-22 23:15:26 +01:00
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