Commit Graph

465 Commits

Author SHA1 Message Date
Arne Morten Kvarving
7b33cc6d62 move computeConnLevel(Inj|Prod)Ind to WellInterface
now code is shared between STW and MSW
2023-06-22 09:58:58 +02:00
Arne Morten Kvarving
c234d4faa5 StandardWell: use scalar mobilities in computeConnLevel(Inj|Prod)Ind
unifies code with MultisegmentWell
2023-06-22 09:56:48 +02:00
Bård Skaflestad
b5517c8600
Merge pull request #4652 from akva2/update_ws_thp_prod_shared
move updateWellStateWithTHPTargetProd to WellInterface
2023-06-22 09:54:35 +02:00
Arne Morten Kvarving
01c4aa1927 move updateWellStateWithTHPTargetProd to WellInterface
to share implementation between STW and MSW
2023-06-22 09:10:38 +02:00
Arne Morten Kvarving
58bed1e30a changed: unify StandardWell::computePerfRate(Eval|Scalar) 2023-06-22 08:46:06 +02:00
Atgeirr Flø Rasmussen
bc9cfc8cd5 Add methods for getting and setting primary variables.
These can be used to manage state in the well models, and will
be used in the NLDD solver option. Also added the setupDomains()
method, as the getters and setters are working on a domain basis.
2023-06-13 15:31:30 +02:00
Håkon Hægland
64c041d08f Account for pressure loss also in thp 2023-06-02 09:25:34 +02:00
Arne Morten Kvarving
127ddd44a2 supress unused capture warning with clang
a bug in clang causes it to emit unused lambda captures
here due to the if constexpr usage. use standard (void)
trick to suppress it
2023-05-31 09:35:16 +02:00
Tor Harald Sandve
1592ef8bd2 solvent + foam simulator 2023-05-24 16:03:09 +02:00
Tor Harald Sandve
cf169167d0
Merge pull request #4591 from totto82/fix_rswrvw_well
Fixes related to rsw/rvw handling in standard well
2023-05-24 08:27:06 +02:00
Arne Morten Kvarving
0406a033a2 introduce getMobility in WellInterface
we now share implementation between StandardWell and MultisegmentWell
2023-05-15 21:39:59 +02:00
Arne Morten Kvarving
e406d2f0a1 StandardWell::getMobility: use if constexpr 2023-05-15 21:38:39 +02:00
Arne Morten Kvarving
c0bc0abc73 StandardWell::getMobility: use Scalar relperms when possible 2023-05-15 21:38:39 +02:00
Arne Morten Kvarving
35c56e4ce4 changed: unify StandardWell::getMobility(Eval|Scalar) 2023-05-15 21:38:37 +02:00
Arne Morten Kvarving
1b073185a1 fixed: copy the mobility values into the temporary Eval vector 2023-05-12 15:13:34 +02:00
Tor Harald Sandve
23e9bf599d Fixes related to rsw/rvw handling in standard well 2023-05-12 09:44:11 +02:00
Arne Morten Kvarving
c18fb6a577 changed: store rates in an array in SingleWellState
introduce an enum for indexing into the array. this again
allows us to coalesce 4 parallel reductions into one.
2023-05-09 12:26:18 +02:00
Arne Morten Kvarving
e4c15531a8
Merge pull request #4626 from akva2/simplify_wellconnection_pressures
Simplify WellconnectionPressures properties signatures
2023-05-08 10:22:44 +02:00
Arne Morten Kvarving
59c9a139cc changed: simplify WellConnectionPressure calculation by passing a struct 2023-05-04 14:30:55 +02:00
Arne Morten Kvarving
fafca7b382 changed: introduce a struct StandardWellConnections::Properties
this holds the various properties for a connection
2023-05-04 14:30:33 +02:00
Arne Morten Kvarving
f06cc1f626 changed: simplify computePerfRate signatures
pass a PerforationRates ref instead of multiple references
to doubles
2023-05-04 13:33:45 +02:00
Arne Morten Kvarving
9bfe835652 changed: introduce a struct PerforationRates
this holds various rates for a perforation that used to be
kept as separate variables
2023-05-04 13:33:45 +02:00
Kai Bao
ceba5c468b
Merge pull request #4572 from GitPaean/tightenging_tolerance_for_zero_rate_wells
stricter tolerance for wells with zero rate target
2023-04-14 11:19:35 +02:00
Kai Bao
ed4aa75721 checking Producer or Injector when comparing bhp against BHP constraint
during well operability check.
2023-04-11 14:34:47 +02:00
Kai Bao
7c06ec38a3 stricter tolerance for wells with zero rate target
for StandardWell only at this moment.
2023-03-30 15:49:27 +02:00
Kai Bao
9304542dbe combining wellIsStopped and wellUnderZeroRateTaget
for better readability.
2023-03-29 14:40:50 +02:00
Kai Bao
b6eecf5c55 not updating the THP for zero rate controlled wells 2023-03-29 13:48:34 +02:00
Kai Bao
f4e0a996b9 wells under zero injection target are also treated as stopped well
when formulating the well control equations
2023-03-29 13:48:34 +02:00
Kai Bao
2c5a4398c9 make sure zero production rates are obtained for the following wells
1. stopped production wells
2. production wells under zero rate control

We guarantee the objective through enforce zero values for the WQTotal
primary variable during the initialization and update process during the
Newton solution.
2023-03-27 13:24:08 +02:00
hnil
aa40d2f0f3 -- prepared for possibliy of not using cached intentensive quantities 2023-03-24 19:57:31 +01:00
Kai Bao
2152ac6465 make sure computeWellRatesWithBhpIterations honor bhp limit
for StandardWell
2023-03-02 23:53:56 +01:00
Kai Bao
57bf959efd update well state when switching to THP control for producers
hopefully, it begins at a reasonably good initial point. When the Newton
iteration begins with certian solution region, the nonlinear solution
might fail.
2023-02-07 14:50:07 +01:00
Arne Morten Kvarving
3745a4c02d clean up Units.hpp includes
include it where required instead of relying on other
headers to pull it in
2023-01-16 12:21:29 +01:00
Arne Morten Kvarving
d011bb29ae StandardWell: move code using WellPolymerProperties to compile unit 2023-01-13 13:02:37 +01:00
Tor Harald Sandve
6c60bad193 fix combination of vapwat and disgas 2023-01-02 12:16:35 +01:00
Arne Morten Kvarving
a82b5aa474 StandardWell: pull fmt in impl file
it is not used in the interface.
no real change to the code as such, but it better reflects the use.
2022-12-23 09:39:29 +01:00
Arne Morten Kvarving
2dbfeb6038 StandardWell: use {fmt} to format error messages 2022-12-23 09:39:29 +01:00
Tor Harald Sandve
5854b8a7a1 Support gas dissolution in water (Rsw)
- adapt to interface change in waterPvt()
- add gas + water + disgasw simulator

Note
- MSW is not supported
- EQUIL initialization is not supported
2022-12-21 13:13:52 +01:00
Arne Morten Kvarving
f17a90170d use exception classes from opm-common 2022-12-13 12:56:13 +01:00
Kai Bao
6102249466
Merge pull request #4289 from akva2/fix_thp_regression
fix regression in wells
2022-11-28 10:46:35 +01:00
Bård Skaflestad
fe7da56268
Merge pull request #4293 from akva2/stdwell_conn
added: StandardWellConnections
2022-11-25 15:31:53 +01:00
Arne Morten Kvarving
13af642fe4 StandardWell: make updatePrimaryVariablesNewton non-const
this will obviously modify well state
2022-11-25 13:09:29 +01:00
Arne Morten Kvarving
64112f76b3 StandardWell: make updateWellState non-const
this will obviously modify well state
2022-11-25 13:09:29 +01:00
Arne Morten Kvarving
c9856b9b2a WellInterface: make updatePrimaryVariables non-const
this will obviously modify well state
2022-11-25 13:09:29 +01:00
Arne Morten Kvarving
fba6249dd8 WellInterface: make recoverWellSolutionAndUpdateWellState non-const
this will obviously modify well state
2022-11-25 13:09:29 +01:00
Arne Morten Kvarving
147f0eb2bd WellInterface: make initPrimaryVariablesEvaluation non-const
this will obviously modify well state
2022-11-25 13:09:29 +01:00
Arne Morten Kvarving
dfd68266e9 rename computeWellConnectionDensitesPressures to computeProperties
make computePressureDelta and computeDensities private
2022-11-25 12:56:49 +01:00
Arne Morten Kvarving
86bf452059 move computeWellConnectionDensitesPressures to StandardWellConnections 2022-11-25 12:56:47 +01:00
Arne Morten Kvarving
dcc333dac3 make member variables private in StandardWellConnections 2022-11-25 12:56:23 +01:00
Arne Morten Kvarving
1d058a4edf rename StandardWellConnections::getRho() to just rho() 2022-11-25 12:56:23 +01:00
Arne Morten Kvarving
9aeb48887c rename computePropertiesForWellConnectionPressure to computePropertiesForPressure
that it applies to connections are now implied by class
2022-11-25 12:56:23 +01:00
Arne Morten Kvarving
d1c1aecac7 move implementation of computePropertiesForWellConnectionPressure to StandardWellConnections 2022-11-25 12:56:20 +01:00
Arne Morten Kvarving
100a7b0582 rename computeConnectionDensities to computeDensities
that it applies to connections are now implied by class
2022-11-25 12:55:39 +01:00
Arne Morten Kvarving
5d1b5d9426 rename computeConnectionPressureDelta to computePressureDelta
that it applies to connections are now implied by class
2022-11-25 12:55:39 +01:00
Arne Morten Kvarving
0d72bba326 move computeConnectionDensities to StandardWellConnections
this necessitates expanding the template parameter list
2022-11-25 12:55:36 +01:00
Arne Morten Kvarving
7cadeb5206 changed: move StandardWellConnections out of inheritance hierarchy
instead hold a member in StandardWellEval
2022-11-25 12:54:56 +01:00
Bård Skaflestad
e524acd5b2
Merge pull request #4283 from akva2/stdwellass_simplify
StandardWellAssemble: simplify by using primary variables class
2022-11-23 23:29:42 +01:00
Arne Morten Kvarving
4f6665076c StandardWellAssemble: simplify by using primary variables class
- pass primary variables as parameter
- use the evaluation type
2022-11-23 21:19:06 +01:00
Arne Morten Kvarving
2da1322697 fix regression in wells
we need to call WellInterface::getTHPConstraint,
not WellBhpThpCalculator::getTHPConstraint
2022-11-23 15:37:04 +01:00
Bård Skaflestad
fa1ea7f997
Merge pull request #4282 from totto82/fixInjTemp2
remove derivative in thermal flux for injectors
2022-11-22 17:29:24 +01:00
Arne Morten Kvarving
8e3121113c drop unnecessary wrapper StandardWell::updateExtraPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
f64628f72d StandardWellPrimaryVariables: make data members private
and add generic read-only accessors
2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
4bbcdf0646 add checkFinite to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
999d4c6be9 add StandardWellPrimaryVariables::updateNewtonPolyMW
extracted from StandardWell::updatePrimaryVariablesNewton
2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
23a8aed4e8 move getWQTotal to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
fbf99889b2 move getBhp to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
ff26a9e001 remove StandardWell::updatePrimaryVariables
no need for the wrapper any longer as the implementation
is now in StandardWellPrimaryVariables.
2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
3f6c4922b0 move updatePrimaryVariablesNewton to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
435bd67732 move getQs to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
1aa74a9830 move wellSurfaceVolumeFraction to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
412e561cd8 move updateWellStateFromPrimaryVariablesPolyMW to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
f964169914 move updatePrimaryVariablesPolyMW to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
15d49e745e added: StandardWellPrimaryVariables
this is a container class for the primary variables in
standard well
2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
68bc90b3be added: StandardWellAssemble::assembleSourceEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
5bbf205619 added: StandardWellAssemble::asembleZFracEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
f720cc6dde added: StandardWellAssemble::assemblePerforationEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
57ecd2a5e9 added: StandardWellAssemble::assembleInjectivityEq
extracted from StandardWell::handleInjectivityEquations
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
10e967653b added: StandardWellAssemble
this handles assembly of the equation system for standardwell.
start by moving assembleControlEq into the new class
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
d2c028fb74 StandardWell_impl.hpp: remove some unused headers 2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
4b4898d6ec added: StandardWellEquations::sumDistributed
this sums up the global equation system for distributed wells
2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
e9ed80d644 added: StandardWellEquations::extractCPRPressureMatrix()
this adds the cpr pressure matrix to a matrix.
this is the core of StandardWellEval::addWellPressureEquations
use the new method in the implementation.
2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
f2d8a073f9 added: StandardWellEquations::extract(SparseMatrixAdapter)
this adds the well matrices to a sparse matrix adapter.
this is the core of StandardWellEval::addWellContributions.
use the new method in the implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
40640e9da6 added: StandardWellEquations::recoverSolutionWell()
this recovers the well solution from a solution vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
daf0f90fe5 added: StandardWellEquations::solve()
this applies the inverted D matrix to the residual vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
83c41e3f9c added: StandardWellEquations::invert()
this inverts the D matrix.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
033718f027 added: StandardWellEquations::apply(r)
this applies the equation system to a vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
21bb4dc955 added: StandardWellEquations::apply(x,Ax)
this applies the equation system to a vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
d05081417e added: StandardWellEquations::clear
this zeros the equation system.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
a8c912ccfa add: StandardWellEquations
this is a container for the standard well equation system
2022-11-22 10:36:54 +01:00
Tor Harald Sandve
f9ab7e6b07 remove derivative in thermal flux for injectors 2022-11-22 09:40:39 +01:00
Bård Skaflestad
eeae2442a8
Revert "remove derivative in thermal flux for injectors" 2022-11-21 15:20:45 +01:00
Tor Harald Sandve
7553e22726 remove derivative in thermal flux for injectors 2022-11-10 12:57:21 +01:00
Arne Morten Kvarving
e8152a1b65 changed: tidy up computeBhpAtThpLimitProdWithAlq interface
put deferred_logger at the end of the parameter list.
similar to the rest of this family of methods
2022-10-31 13:16:16 +01:00
Arne Morten Kvarving
db05f1d73f changed: drop wrapper StandardWellGeneric::computeBhpAtThpLimitProdWithAlq 2022-10-31 13:16:15 +01:00
Arne Morten Kvarving
f214ccc138 changed: move computeBhpFromThpLimitInj to WellBhpThpCalculator 2022-10-31 13:15:56 +01:00
Arne Morten Kvarving
4fcb1e9d37 changed: move calculateThpFromBhp to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
f7f4352b68 changed: move mostStrictBhpFromBhpLimits to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
5d4c7f49a2 move checkConvergencePolyMW into WellConvergence 2022-10-28 19:47:59 +02:00
Tor Harald Sandve
74eb0d048f Improve convergence for newly opened wells with thp control 2022-10-17 15:32:27 +02:00
Markus Blatt
a4360b4961
Merge pull request #4028 from akva2/reduce_dup
changed: get rid of duplicate MatrixBlock headers/classes
2022-09-09 15:30:30 +02:00