Commit Graph

8992 Commits

Author SHA1 Message Date
Tor Harald Sandve
bf77bbbc10
Merge pull request #3759 from plgbrts/saltp
Enable salt precipitation/dissolution
2022-01-18 12:02:32 +01:00
Paul Egberts
590920db6b allow for explicit initialization of SALT (salt concentration) and SALTP (precipitated salt) 2022-01-18 11:12:43 +01:00
Kai Bao
913ad21733 return zero thp value for extremely small injection rate
it is a finding from one of the test case.
2022-01-18 10:12:20 +01:00
Eduardo Bueno
1df9d2e51f Adds BISAI preconditioner to openclSolver 2022-01-17 13:57:29 -03:00
Arne Morten Kvarving
a82ad816c7 add fallback return (control reaches end of non-void function) 2022-01-17 13:59:47 +01:00
Paul Egberts
98c8e691c3 Allow for brine and precipitation/dissolution of salt 2022-01-14 11:46:40 +01:00
Paul Egberts
f69aa171fe removed some salt-precipitation related keywords from the unsupported keyword list 2022-01-14 11:46:39 +01:00
Bård Skaflestad
3317f10c4a
Merge pull request #3729 from goncalvesmachadoc/gaswater_brine
allow for gas-water + brine
2022-01-12 12:31:34 +01:00
Markus Blatt
790fa8044e
Merge pull request #3755 from blattms/fix-opencl-apply-stdwells-rebased
Fix opencl apply stdwells rebased (replaces #3746)
2022-01-11 19:18:03 +01:00
goncalvesmachadoc
300f536a19 add exit_failure for water+brine case 2022-01-11 14:23:37 +01:00
Bård Skaflestad
abf92eed52 Accumulate Dissolved Gas and Vaporized Oil Flow Rates Across Ranks
This is needed to get consistent estimates for the summary vectors

  * {F,G,W}OP{R,T}{F,S} -- Free/Vaporized Oil Production
  * {F,G,W}GP{R,T}{F,S} -- Free/Dissolved Gas Production

in the case of distributed wells.

Thanks to [at]blattms for the suggested fix.
2022-01-10 14:14:39 +01:00
Kai Bao
2b9b6e5155 addressing reviewing comments for PR#3760 2022-01-10 11:33:11 +01:00
Kai Bao
dec3100247 fixing a bug in funcion bisectBracket 2022-01-09 00:21:31 +01:00
Kai Bao
3b7e62979c refactoring to shorten the function computeBhpAtThpLimitProd
better readibility hopefully.
2022-01-07 15:49:48 +01:00
Kai Bao
5824acbf92 making bruteforce bracket as a function
for better readbility.
2022-01-07 15:13:33 +01:00
Kai Bao
3273f310e3 prototyping the brute force for bracketing bhp
to fix the situation the existing approach fails.
2022-01-07 14:32:16 +01:00
Tor Harald Sandve
3e4e62bc4f
Merge pull request #3751 from hakonhagland/glift_swg_fx3
Refactor some methods in `GasLiftSingleWellGeneric.cpp` (part 2)
2022-01-03 14:14:15 +01:00
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01:00
Tong Dong Qiu
f48fe632cb Added comment to apply_stdwell kernels 2021-12-22 16:22:55 +01:00
Tong Dong Qiu
3decb73561 Fix stdwell_apply opencl kernel 2021-12-22 16:16:04 +01:00
Jose Eduardo Bueno
c7ac97e215 [OpenCL] Moves all OpenCL kernels to *.cl files.
Kernel files are located in opm/simulators/linalg/bda/opencl/kernels.
CMake will combine them for usage in
${PROJECT_BINARY_DIR}/clSources.cpp that becomes part of the library.
2021-12-22 12:43:18 +01:00
Håkon Hægland
4bdf7c1b58 Refactor methods getXyzRateWithLimit_()
Refactors getOilRateWithLimit_(), getGasRateWithLimit_(), and
getWaterRateWithLimit_() in GasLiftSingleWellGeneric.cpp. The
common part of the methods is split out into a new method called
getRateWithLimit_(). The purpose of the refactorization is to reduce
reptetive code and make the code easier to maintain.
2021-12-22 10:45:31 +01:00
Håkon Hægland
f28b906782 Made some methods in GasLiftGroupInfo const
This is in agreement with C++ Core Guidelines. A member function should
be marked const unless it changes the object’s observable state. This
gives a more precise statement of design intent, better readability, more
errors caught by the compiler, and sometimes more optimization opportunities.
2021-12-21 23:24:58 +01:00
Håkon Hægland
11ad879472 Make parameters to getLiquidRateWithGroupLimit_() const
To improve readability, we make the parameters of
getLiquidRateWithGroupLimit_() const as discussed in
https://github.com/OPM/opm-simulators/pull/3748
2021-12-20 23:19:40 +01:00
Håkon Hægland
837f33e679 Refactor some methods in GasLiftSingleWellGeneric.
Refactor getOilRateWithGroupLimit_(), getGasRateWithGroupLimit_(),
getWaterRateWithGroupLimit_(), and getLiquidRateWithGroupLimit_() into
a single generic method called getRateWithGroupLimit_().
2021-12-20 23:08:31 +01:00
Bård Skaflestad
f77d82a0e9
Merge pull request #3744 from OPMUSER/Validate-ROCKCOMP
Validate ROCKCOMP Update
2021-12-20 13:51:07 +01:00
Markus Blatt
0485c65d16
Merge pull request #3740 from atgeirr/make-split-comm-test-runtime-optional
Replace DEMONSTRATE_RUN_WITH_NONWORLD_COMM macro with runtime bool.
2021-12-20 12:46:49 +01:00
OPMUSER
d6f7cb59a7 Validate ROCKCOMP Upadate 2021-12-20 18:06:17 +08:00
Håkon Hægland
e388827d81 Fixup in GasLiftSingleWellGeneric
Consider all groups when reducing oil rate to group limits.
The current code just checks the first group limit in the set.
But there might be groups later in the set with more restrictive
limits, causing the oil rate to be reduced more than the first
limit.
2021-12-15 19:15:35 +01:00
OPMUSER
34652f2d5d Remove NEXTSTEP from Unsupported List 2021-12-14 11:31:38 +08:00
Atgeirr Flø Rasmussen
e22d1177fd
Merge pull request #3738 from OPMUSER/WILL_STOP
Update PartiallySupportedFlowKeywords.cpp All STOP Version
2021-12-13 09:23:44 +01:00
Atgeirr Flø Rasmussen
eec32ec581 Replace DEMONSTRATE_RUN_WITH_NONWORLD_COMM macro with runtime bool.
This allows for testing the simulator with the artifically split communicator,
in order to verify that there is no inappropriate usage of the world communicator.
2021-12-10 17:42:44 +01:00
Tor Harald Sandve
51d9b7ee11
Merge pull request #3719 from totto82/noIterPot
Do not iterate when computing well potentials for standard wells
2021-12-10 16:20:10 +01:00
OPMUSER
0ee2ed0311 Update PartiallySupportedFlowKeywords.cpp 2021-12-10 20:17:12 +08:00
OPMUSER
f7327c06f7 Update PartiallySupportedFlowKeywords.cpp 2021-12-10 19:56:54 +08:00
Tor Harald Sandve
1baee5ec9b
Merge pull request #3715 from goncalvesmachadoc/vapwat
update parameters BlackoilFluidSystem
2021-12-09 15:37:49 +01:00
Tor Harald Sandve
b87e5e0a9f
Merge pull request #3735 from hakonhagland/glift_refact
Small clean up in GasLiftSingleWellGeneric.cpp
2021-12-09 15:24:49 +01:00
Håkon Hægland
738b5c5f18 Small clean up in GasLiftSingleWellGeneric.cpp
As discussed in PR #3728, it is better to move the two methods
reduceALQtoGroupTarget() and checkGroupTargetsViolated() from
OptimizeState to the parent class, then we do not have to abuse
OptimizeState in maybeAdjustALQbeforeOptimizeLoop_() just to call
reduceALQtoGroupTarget().

Also fixes a typo (as discussed in PR #3729) in reduceALQtoGrouptTarget()
where the water rate is updated with the gas flow rate instead of the
water flow rate. Should be like this:

 water_rate = -potentials[this->parent.water_pos_];

instead of

 water_rate = -potentials[this->parent.gas_pos_];
2021-12-09 11:58:43 +01:00
Arne Morten Kvarving
2d0d48d8c9 fix build with dune 2.6 2021-12-09 09:02:13 +01:00
Tor Harald Sandve
bd9e13d4bd
Merge pull request #3728 from totto82/fixGasliftGroupWell
Fix when both well and group control restrict gaslift
2021-12-09 08:12:31 +01:00
Atgeirr Flø Rasmussen
e2cdab208b
Merge pull request #3730 from atgeirr/fix-efficiency-alq-network
Account for efficiency when adding lift gas to network flows.
2021-12-09 07:49:16 +01:00
Markus Blatt
ac41c318da Fixes compilation of opencl CPR without MPI 2021-12-08 20:24:14 +01:00
Markus Blatt
a61f69bb79
Merge pull request #3672 from Tongdongq/add-cpr-opencl
Add CPR preconditioner to openclSolver
2021-12-08 19:44:59 +01:00
goncalvesmachadoc
b15b893b3a add Index Traits 2021-12-08 16:52:23 +01:00
Atgeirr Flø Rasmussen
819d88a1a7 Account for efficiency when adding lift gas to network flows. 2021-12-08 15:54:12 +01:00
goncalvesmachadoc
7f320102c3 allow for gas-water + brine 2021-12-08 14:35:22 +01:00
Tor Harald Sandve
66425eb7c2 WIP fix when both well and group control restrict gasslift 2021-12-08 09:36:26 +00:00
Atgeirr Flø Rasmussen
69b81c4fbf
Merge pull request #3724 from totto82/CO2STORETHERMAL
Add gasoil + thermal simulator
2021-12-08 08:33:46 +01:00
Tor Harald Sandve
31954a487b
Merge pull request #3720 from totto82/operSolvEcon
Only check operable wells for wecon
2021-12-07 12:44:24 +01:00
Tor Harald Sandve
4f75d1ab8d Add gasoil + energy simulator
Useful when combining CO2STORE + THERMAL

This PR also fixes an issue with missing phases in computation of output temperature
2021-12-07 09:18:38 +01:00
Kai Bao
148fb4a282
Merge pull request #3712 from totto82/fixAssertInStw
Fix assert in relaxation factor in std well
2021-12-06 11:09:08 +01:00
Tor Harald Sandve
e230174de6 Fix assert in relaxation factor in std well
If original sum ~ 1 and relaxed_update ~ 0 the factor could -> inf
and trigger the assert.
The 1 + epsilon factor will make sure this does not happen
2021-12-03 14:00:40 +00:00
Tor Harald Sandve
4d19ba7409 Only check operable wells for wecon 2021-12-03 11:37:51 +00:00
Tor Harald Sandve
fac3ca3507 do not iterate when computing well potentials 2021-12-02 13:48:22 +00:00
Tong Dong Qiu
374f8276dc Move opencl variables to Preconditioner 2021-12-01 14:15:59 +01:00
Tong Dong Qiu
94ea2dcd30 Change C to C++
Also bugfix wrong size when COPY_ROW_BY_ROW is active
2021-12-01 14:15:16 +01:00
Tong Dong Qiu
e0a4d271ea Formatting changes 2021-12-01 11:47:45 +01:00
Tong Dong Qiu
0881089406 Add Preconditioner, superclass of BILU0 and CPR 2021-12-01 11:47:45 +01:00
Tong Dong Qiu
50d0486b28 Allow a variable number of pre/post smooth steps during AMG 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
a911d5d2be Add test for solve_transposed_3x3() 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
56fb3948e5 Fill restriction matrix faster 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
411d3c6a8d Replace spmv-prolongation by specialized kernel 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
eaded9dcf7 Add prolongate_vector() kernel 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
9d611f04ee Add timers to opencl CPR preconditioner 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
f2225503c4 Combine BILU0 and CPR preconditioner 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
11d54f31f5 Reuse umfpack object 2021-12-01 11:47:29 +01:00
Tong Dong Qiu
b9a12b64d9 Rename copy sparsity pattern function 2021-12-01 11:43:40 +01:00
Tong Dong Qiu
d7204c5be7 Create separate functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
13646337f3 Reduce get_absmax() code 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
5e85c23478 Renamed move_to_coarse/fine() in CPR 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
19a0454b6f Update comments 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
ca44351c72 Add error checks for OpenclMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
de8073e689 Reuse Matrix constructor 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a71a5cd8fe Moved OpenclMatrix to new file 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a8b1d7c9dc Change header include guard name 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
1306a65104 Remove unnecessary intermediate variables 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
5385bd275e Rename get_opencl_kernel functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
adb4649277 Changed block_size template to parameter for block functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
288e548b89 Changed block_size template to variable for OpenclMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
9acffab47e Changed block_size template to variable for BlockedMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a6b6a62b27 Changes needed for FPGA 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
606143ef57 Add timer for cpr_apply 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
6465cf9cbb Add CPR preconditioner for openclSolver and
change raw pointers to vector for Matrix
2021-12-01 11:43:30 +01:00
Tor Harald Sandve
2c17b1942c Move getPerfCellPressure to wellInterface
The cell pressure is independent of well model and belongs to the interface
This should move the MSW model one step closer to supporting GasWater cases
2021-11-30 10:48:02 +00:00
goncalvesmachadoc
90380c35ad update parameters BlackoilFluidSystem
fix

update parameters BlackoilFluidSystem
2021-11-29 16:38:43 +01:00
Joakim Hove
3d02e29da1
Merge pull request #3713 from totto82/fixWTEST
Fix in WTEST
2021-11-26 13:18:01 +01:00
Tor Harald Sandve
c4b0a0d9e2 Fix in WTEST
If a well is shut due to physical or economical reason the wellstate status is shut
so we can not check the wellstate we instead check the well from the schedule to
make sure we don't test wells that are shut by the user.
2021-11-26 10:17:45 +00:00
Tor Harald Sandve
6277d12d16 fix return type for phaseIdx and compIdx 2021-11-25 14:56:27 +00:00
Tor Harald Sandve
2352d94c0e fix co2store + aqunum 2021-11-24 11:13:50 +00:00
Bård Skaflestad
842766d6d6
Merge pull request #3705 from totto82/fixSignPot
guard against negative and trivial potentials
2021-11-23 20:12:53 +01:00
Tor Harald Sandve
50ab26c330 cleanup 2021-11-23 14:01:07 +00:00
Markus Blatt
6d8223f233
Merge pull request #3602 from blattms/parallel-tracers
[feature] Adds support for computing tracers in parallel runs.
2021-11-23 12:39:48 +01:00
Tor Harald Sandve
43fd50e355 only mark negative potentials as not operable 2021-11-22 11:27:45 +00:00
Tor Harald Sandve
b5cdb1048a Mark wells with negative and trivial potentials as not operable
The simulator will try to compute potentials at every iterations to
try to reopen the well.
2021-11-22 08:44:17 +00:00
Markus Blatt
50867bf23c Guard include of WellContributions.cpp 2021-11-17 19:23:46 +01:00
Markus Blatt
d2caf41037 Fix incomplete type ‘Opm::WellContributions’ compiler error (g++-8)
Fixes
```
In file included from opm-simulators/opm/simulators/flow/BlackoilModelEbos.hpp:53,
                 from opm-simulators/opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp:26,
                 from opm-simulators/flow/flow_ebos_gaswater.cpp:28:
opm-simulators/opm/simulators/linalg/ISTLSolverEbos.hpp: In member function ‘bool Opm::ISTLSolverEbos<TypeTag>::solve(Opm::ISTLSolverEbos<TypeTag>::Vector&)’:
opm-simulators/opm/simulators/linalg/ISTLSolverEbos.hpp:265:56: error: incomplete type ‘Opm::WellContributions’ used in nested name specifier
                 auto wellContribs = WellContributions::create(accelerator_mode, useWellConn_);
                                                        ^~~~~~
```
2021-11-17 17:30:01 +01:00
Markus Blatt
9a80d806c0 Setup parallel solvers for tracers. 2021-11-17 16:02:16 +01:00
Bård Skaflestad
d163bebcdc
Merge pull request #3699 from blattms/man-page-spelling
Adds manpage and fixes several spelling issue found by lintian
2021-11-17 09:59:50 +01:00
Kai Bao
c2e18fd077
Merge pull request #3573 from totto82/crossFlowEcon
remove assert and handle opposite rates in wecon related fractions.
2021-11-15 15:31:05 +01:00
Joakim Hove
4d1fb8c797
Merge pull request #3700 from blattms/gcc-11
Include limits header where needed for g++-11
2021-11-15 13:13:07 +01:00
Markus Blatt
b0792db164 Include limits header where needed for g++-11
Without this compilation fails on Debian unstable.
2021-11-15 12:11:25 +01:00
Markus Blatt
a2246d331b Spelling fixes
Gbp-Pq: Name 0005-Spelling-fixes.patch
2021-11-15 12:06:05 +01:00
Markus Blatt
afc5ed751f
Merge pull request #3691 from akva2/bda_wellcontrib_refactor
Refactor BDA well contributions
2021-11-15 10:26:44 +01:00
Markus Blatt
ec56782288
Merge pull request #3690 from akva2/wellcontrib_cleanups
Some simple cleanup in BDA WellContributions
2021-11-15 10:18:12 +01:00
Tor Harald Sandve
ae5a1df29c
Merge pull request #3638 from blattms/exclude-pv-aquifer-cnv
Exclude pv of numerical aquifer cells in ratio of cells violating CNV
2021-11-12 13:27:58 +01:00
Arne Morten Kvarving
e25caba8ed changed: refactor BDA well contributions
split in API specific classes for Cuda/OpenCL

this to
1) it's cleaner
2) it avoids pulling in openCL code in cuda classes which leads
to clashes between nvidia headers and opencl.hpp

there is still too much API specific things in interface between the
bda components to work through a virtual interface so we still have to cast
to the relevant implementation in various places.
2021-11-11 14:49:33 +01:00
Arne Morten Kvarving
352d31a1e9 BdaBridge: avoid FPGA include in header
already includ in the cpp file where it is required.
2021-11-11 13:39:46 +01:00
Arne Morten Kvarving
7fb39f8308 BdaBridge: avoid includes in header 2021-11-11 13:39:25 +01:00
Arne Morten Kvarving
be6c857b16 bda: use forwarding for WellContributions 2021-11-11 13:29:12 +01:00
Arne Morten Kvarving
4a1fb0b86a use std::vector for val_pointers 2021-11-11 13:15:29 +01:00
Arne Morten Kvarving
2b0508af8b changed: use unique_ptr for MultisegmentWellContributions
less manual pointer management is always good
2021-11-11 13:15:29 +01:00
Tor Harald Sandve
ef439cd6d6
Merge pull request #3678 from totto82/fixGasliftX2
Fix gasslift reduction when under LRAT, GRAT or WRAT
2021-11-11 13:11:31 +01:00
Arne Morten Kvarving
5bfac05827
Merge pull request #3688 from blattms/fix-wellcontrib-without-opencl
Fixes compilation of WellContributions with deactivated OpenCL.
2021-11-11 11:59:45 +01:00
Markus Blatt
c54e85a8eb Fixes compilation of WellContributions with deactivated OpenCL.
OpenCL header was included and OpenclKernels used unconditionally
in WellContributions.cpp. As this file is compiled if CUDA is found,
too it lead to undefined references for e.g. cl::CommandQueue if
opencl headers were there and compile error if not.
2021-11-10 19:41:59 +01:00
Arne Morten Kvarving
dc136746df cosmetics: do not indent for namespace
also avoid an unnecessary close/open for namespace Opm
2021-11-10 14:24:51 +01:00
Tor Harald Sandve
cd9e742ad5 remove assert and handle opposite rates in wecon 2021-11-10 13:14:22 +01:00
Bård Skaflestad
2bd5b30cda
Merge pull request #3681 from akva2/vexcl_no_auto_func_param
fixed: auto function parameters requires the concept-ts
2021-11-10 11:19:30 +01:00
Bård Skaflestad
fd743de749
Merge pull request #3680 from akva2/use_runstatic
Use Main::runStatic in PyBlackoilSimulator
2021-11-10 11:14:05 +01:00
Arne Morten Kvarving
24e252f46d fix serial build after PR #3675
annoyingly, dune has a casting operator for mpicollectivecommunication
-> MPIComm but for some reason does not have a casting operator for
the dummy collectivecommunication -> No_Comm
2021-11-10 10:41:24 +01:00
Arne Morten Kvarving
f27931c2e2 fixed: auto function parameters requires the concept-ts
use a regular template parameter instead
2021-11-10 10:25:27 +01:00
Bård Skaflestad
6f0b06715e
Merge pull request #3676 from akva2/use_single_sum_call
GasLiftGroupInfo: use a array to allow for one sum call
2021-11-10 10:16:39 +01:00
Arne Morten Kvarving
7f7fbab2f4 remove FLOW_BLACKOIL_ONLY hack from Main.hpp
now that the python simulator uses runStatic, the
runDynamic template is never instanced, and thus there
are no linker issues.
2021-11-10 10:07:11 +01:00
Arne Morten Kvarving
7bce64cde9 use multi-var broadcast for rates 2021-11-10 08:56:04 +01:00
Arne Morten Kvarving
09f61e0e6f WellGroupHelpers: use an array to allow for one sum call 2021-11-10 08:50:39 +01:00
Arne Morten Kvarving
04ed31f800 GasLiftGroupInfo: use an array to allow for one sum call 2021-11-10 08:48:33 +01:00
Arne Morten Kvarving
e67bae5453 fix: serial build after PR #3671 2021-11-09 15:57:24 +01:00
Bård Skaflestad
676cdb8307
Merge pull request #3674 from akva2/broadcast_variadic
added: utility to broadcast multiple variables in one operation
2021-11-09 14:51:23 +01:00
Joakim Hove
c97447892e
Merge pull request #3671 from joakim-hove/broadcast-mult-update
Broadcast mult update
2021-11-09 14:50:11 +01:00
Joakim Hove
06e71f1345 Broadcast updated transmissibility after runtime updates of MULT? 2021-11-09 14:22:19 +01:00
Joakim Hove
5f4efbde73 broadcast<T> with Schedule and TransMult specialization 2021-11-09 14:22:19 +01:00
Tor Harald Sandve
a765ab213b fix WRAT GRAT reduction 2021-11-09 13:40:55 +01:00
Bård Skaflestad
c563f14aff
Merge pull request #3673 from totto82/fixGasliftX
Add check for group production control for LRAT and WRAT in the gasslift code
2021-11-09 13:32:02 +01:00
Arne Morten Kvarving
2120cbf043 added: utility to broadcast multiple variables in one operation 2021-11-09 13:02:05 +01:00
Tor Harald Sandve
7728df33bb Fix LRAT reduction 2021-11-09 10:45:10 +01:00
Tor Harald Sandve
d2fd5505ca Check group production LRAT and WRAT targets 2021-11-09 08:24:57 +01:00
Tor Harald Sandve
23225d24e5 Fix bug in runOptimize1_ 2021-11-09 08:21:42 +01:00
Markus Blatt
ad44564f27
Merge pull request #3619 from Tongdongq/opencl-refactor
Opencl refactor
2021-11-08 16:45:57 +01:00
Bård Skaflestad
40fdb9e1d6 Mark GRAVITY Keyword as Supported in the Simulator
The input layer now converts this input to DENSITY data.
2021-11-07 22:34:31 +01:00
Atgeirr Flø Rasmussen
84392a25b4
Merge pull request #3648 from joakim-hove/phase-usage-constructor
Create PhaseUsage constructor
2021-11-05 15:35:50 +01:00
Joakim Hove
34260544eb
Merge pull request #3647 from joakim-hove/update-rates-after-actionx
Update rates after actionx
2021-11-05 12:01:22 +01:00
Joakim Hove
fd5640774b Call SingleWellState::update_targets for ACTIONX affected wells 2021-11-05 09:48:27 +01:00
Bård Skaflestad
07d6de3bbc Switch to Passing VFP Wrapper Tables as References
We don't need to copy those mapping tables on each call.
2021-11-04 21:28:55 +01:00
Tong Dong Qiu
803a2ac2f4 Allow CMake to set CHOW_PATEL variables 2021-11-04 15:47:33 +01:00
Tong Dong Qiu
920eeee426 Rename namespace bda to Opm::Accelerator 2021-11-04 15:47:33 +01:00
Tong Dong Qiu
b945502a82 Minor improvements 2021-11-04 15:45:33 +01:00
Tong Dong Qiu
78b1714481 Move apply_stdwells kernels to OpenclKernels 2021-11-04 14:25:39 +01:00
Tong Dong Qiu
1583292bf4 Move opencl kernels to static class 2021-11-04 14:25:22 +01:00
Tong Dong Qiu
b8587daaa7 Move ChowPatel decomposition to appropriate file 2021-11-04 13:58:06 +01:00
Bård Skaflestad
869de90b56
Merge pull request #3663 from blattms/remove-warn-opencl
Fixes warning about catching polymorphic type by value.
2021-11-03 18:30:57 +01:00
Markus Blatt
02bbe995c3 Fixes warning about catching polymorphic type by value.
Removed message in amgclbackend was:
warning: catching polymorphic type ‘class
boost::property_tree::json_parser::json_parser_error’ by value
[-Wcatch-value=]
2021-11-03 18:07:56 +01:00
Tor Harald Sandve
f755cc3be1
Merge pull request #3645 from totto82/fixNoWellReduction
Adjust reduction rate when well control is considered for GRUP
2021-11-03 15:32:18 +01:00
Bård Skaflestad
2971a3f051
Merge pull request #3659 from joakim-hove/refactor-wellstate-init
Refactor wellstate init
2021-11-03 13:16:34 +01:00
Joakim Hove
44ad5ab190 Remove superfluos is injector or producer test 2021-11-03 12:35:28 +01:00
Joakim Hove
05317e1d72 Extract functionality to update target rates to SingleWellState 2021-11-03 12:30:40 +01:00
Joakim Hove
5a986ee430 Move updateStatus functionality to SingleWellState 2021-11-03 12:30:40 +01:00
Joakim Hove
53dba36513 Move resetConnectionFactor to SingleWellState 2021-11-03 12:30:40 +01:00
Tor Harald Sandve
a57374fae9 Adjust reduction rate when well control is considered for GRUP
The reduction rate is computed differently for cases without wells under GRUP
For a well to check whether to switch to GRUP it needed to use the reduction rate
that would have been computed if this particular well was under GRUP control
and thus recompute the reduction rate without entering the no-grup path
2021-11-03 11:42:18 +01:00
Bård Skaflestad
1e34d714bf Report Well Level Production Guide Rates if Group Controlled
This commit extends the guide rate reporting to always extracting
and reporting pertinent production guide rates at the well level
(i.e., WxPGR) if at least one of the groups in the well's upline has
an entry in GCONPROD.  This is for increased compatibility with
ECLIPSE.
2021-11-02 16:19:56 +01:00
Bård Skaflestad
0c70eac490 Report Well Level Injection Guide Rates if Group Controlled
This commit uses the new GroupTreeWalker helper class to ensure that
we always extract and report pertinent injection guide rates at the
well level (i.e., WxIGR) if at least one of the groups in the well's
upline has an entry for the corresponding phase in GCONINJE.  This
is for increased compatibility with ECLIPSE.

Prior to this change we would report zero-valued WWIGR vectors on a
real field case which made analysing simulation results needlessly
difficult.
2021-11-02 16:19:56 +01:00
Bård Skaflestad
2b0aa379f5 Extract Group Tree Walk to Helper Class
This commit extracts a helper class, GroupTreeWalker, from the
current implementation of 'calculateAllGroupGuiderates()'.  This is
in preparation of adding a similar approach to extracting WxIGR for
all wells for which at least one group in the upline has an entry in
GCONINJE.

The user can add visitor operations for wells and groups, typically
with side effects, and then choose whether to run a pre-order walk
(visit groups before their children) or a post-order walk (visit
children-i.e., wells, before their parents).
2021-11-02 16:19:56 +01:00
Atgeirr Flø Rasmussen
5503e6ca06 Remove ISTLSolverEbosFlexible and flow_blackoil_dunecpr.
The class ISTLSolverEbos has all features of the removed class, and
is not much more complex. The flow_blackoil_dunecpr is the only
program using it, and is redundant.
2021-11-02 15:02:48 +01:00
Markus Blatt
932ddcd32d
Merge pull request #3652 from akva2/use_opencl_hpp
changed: probe for cl/opencl.hpp and use if found
2021-11-02 09:31:05 +01:00
Arne Morten Kvarving
7de50b94c7 changed: probe for cl/opencl.hpp and use if found
this to avoid a spam of warnings
2021-11-01 19:41:05 +01:00
Joakim Hove
101b277bfe
Merge pull request #3642 from joakim-hove/remove-groupstate-dump
Remove debugging aid GroupState::dump
2021-11-01 17:51:32 +01:00
Joakim Hove
5336822242 Remove unused utility class PhasePresence 2021-11-01 17:06:50 +01:00
Joakim Hove
bcdc974585 Create PhaseUsage constructor 2021-11-01 17:04:42 +01:00
Joakim Hove
ec780676e2 Split initSinglewell for producer and injector 2021-11-01 16:02:34 +01:00
Joakim Hove
d213bc9d78 Initialize static perforation data in SingleWellState constructor 2021-11-01 16:02:34 +01:00
Joakim Hove
6c16b5dbb8 Move variable to local scope 2021-11-01 16:02:34 +01:00
Joakim Hove
93218b05c2 Use multiple returns in init single well 2021-11-01 16:02:34 +01:00
Joakim Hove
2527970d11 Replace two assert() with one throw 2021-11-01 16:02:34 +01:00
Joakim Hove
029d1794f8 Remove local variable 2021-11-01 16:02:34 +01:00
Joakim Hove
807ac101d8 Add name member to SingleWellState 2021-11-01 16:02:34 +01:00
Joakim Hove
03cf7b0327 Move updateStatus functionality to SingleWellState 2021-11-01 16:02:31 +01:00
Atgeirr Flø Rasmussen
624d8b1343
Merge pull request #3651 from akva2/remove_gcc7_compat
use std::filesystem directly
2021-11-01 15:30:03 +01:00
Joakim Hove
129288b2bd Add operator[] to WellState 2021-11-01 13:47:40 +01:00
Joakim Hove
ab63d14bcd Remove debugging aid GroupState::dump 2021-11-01 13:47:36 +01:00
Joakim Hove
d150f400fe Move code from WellState to SingleWellState 2021-11-01 13:23:17 +01:00
Atgeirr Flø Rasmussen
5f81b77d14
Merge pull request #3639 from blattms/dune-fem-master
Fixes compilation with dune-fem 2.8
2021-11-01 13:10:17 +01:00
Arne Morten Kvarving
06bd25575f use std::filesystem directly 2021-11-01 12:31:58 +01:00
Atgeirr Flø Rasmussen
fa3b619ec9
Merge pull request #3644 from blattms/use-cl2.hpp
[enhancement][opencl} Use cl2.hpp instead of cl.hpp (missing on bullseye)
2021-11-01 10:10:30 +01:00
Bård Skaflestad
767b5ca58b Switch Guide Rate Accumulation to Post-Order Traversal
This guarantees, under the assumption that the group tree does not
have cycles, that we do not accumulate group-level guide rate values
until all of its children are fully evaluated.  We use an iterative
depth-first post-order tree traversal with an explicit stack instead
of a recursive implementation.

The previous implementation, which tried to do the same kind of
child-to-parent accumulation, might visit a parent group multiple
times which in turn might lead to losing updates.  This is a more
formalised approach to the value accumulation than was originally
employed.
2021-10-29 21:21:49 +02:00
Bård Skaflestad
f212c946c7 Separate MICP Case Out to Helper Function
In keeping with the other simulation cases.
2021-10-29 16:15:44 +02:00
Atgeirr Flø Rasmussen
fe8df97266
Merge pull request #3637 from akva2/fix_mpiabort_no_input_case
changed: special case no input deck given handling
2021-10-29 15:35:35 +02:00
Atgeirr Flø Rasmussen
2a7a9d46ce
Merge pull request #3640 from totto82/inj_comm
communicate inj_resv/surface_rates
2021-10-29 15:35:24 +02:00
Atgeirr Flø Rasmussen
b4fe98b739
Merge pull request #3636 from joakim-hove/mark-as-supported-diffuse-diffc-gpmaint
Mark keywords DIFFC, DIFFUSE and GPMAINT as supported
2021-10-29 12:25:00 +02:00
Arne Morten Kvarving
a056aa858a changed: special case no input deck given handling
we do not want to invoke MPI_Abort in this case
2021-10-29 12:16:01 +02:00
Markus Blatt
9197ee3e20 Prevent deprecation warning about cl2.hpp: __CL_ENABLE_EXCEPTIONS. 2021-10-28 17:09:22 +02:00
Markus Blatt
4de52a8d30 Use OpenCl's CL/cl2.hpp instead of CL/cl.hpp
We still request Standard version 1.2 only.
We need to use KernelFunctor instead of make_kernel.
In addition cl::Sources now works on std::string and
does not support std::pair<const char*, in> anymore.
2021-10-28 16:42:43 +02:00
Tor Harald Sandve
b9f16018ac remove unused inj_potentials 2021-10-28 14:17:33 +02:00
Tor Harald Sandve
93c7ba6b92 communicate inj_surface_rates 2021-10-28 08:55:50 +02:00
Joakim Hove
5a54bb0728
Merge pull request #3634 from alfbr/error-message
Do not print confusing message to terminal.
2021-10-27 11:21:09 +02:00
Markus Blatt
a1e90be2aa Use grid view from simulator for element mapper.
With dune-fem the type of the grid view is
Dune::Fem::AdaptiveLeafGridPart and not the LeafGridView
of the grid. The old approach therefore did not compile
as we passed the wrong view.
2021-10-26 21:55:04 +02:00
Markus Blatt
85b5a60270 [bugfix] Exclude pv of numerical aquifer cells for CNV violation.
In some models there will be only a few cells with rather high pore volume representing the numerical aquifer. Including them (as non-violated cells) in the ratio will make the ratio lower than without the aquifer there and might lead to accepting vectors as converged when they should not.
2021-10-26 12:01:46 +02:00
Joakim Hove
a79fd67104 Mark keywords DIFFC, DIFFUSE and GPMAINT as supported 2021-10-26 07:42:14 +02:00
Bård Skaflestad
3cfec109db
Merge pull request #3620 from blattms/removeSetupCart-rebased
[refactor] Remove cartesianToCompressed Mapping from well model
2021-10-25 16:43:08 +02:00
Alf Birger Rustad
a10387fcec Do not print confusing message to terminal. 2021-10-25 15:35:30 +02:00
Markus Blatt
fa9e93529b Only consider perforation in the interior of the local grid.
This is needed for distributed wells to save most of the code
from checking whether a perforation is in the interior.

We add new methods compressedIndexForInterior that return -1
for non-interior cells and use that for the wells. This restores
the old behaviour before 1cfe3e0aad
2021-10-19 16:50:42 +02:00
Bård Skaflestad
67f4cf62f1 Report Group Level Injection Guide Rates if Present
We used to tie reporting these quantities to whether or not a group
had any guide rates for production (GuideRate::has()), but this is
clearly insufficient for injection guide rates.
2021-10-19 14:15:36 +02:00
Bård Skaflestad
a7c6203a73 Initialise Guide Rate Object From Restart File
This commit adds an overload set named

    loadRestartGuideRates

which, collectively, initialises the contained GuideRate object
using guide rate values from the restart file.  This is necessary,
but not quite sufficient, to restart models in prediction mode with
group-level constraints.
2021-10-19 13:22:31 +02:00