Commit Graph

352 Commits

Author SHA1 Message Date
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
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
7931e6e00a removing unused function solveEqAndUpdateWellState
from MultisegmentWell and WellInterface .
2023-03-27 13:26:00 +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
Vegard Kippe
f527267593 Fixing MSW connection pressure output 2023-02-17 12:17:41 +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
1bf36dfc08 MultisegmentWell: move code using WellSegments to compile unit 2023-01-12 14:37:32 +01:00
Arne Morten Kvarving
ff0f9c05f0 MultisegmentWell: avoid use of sstream 2023-01-02 15:24:35 +01:00
Arne Morten Kvarving
4c3d933835 MultisegmentWell: 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
c1e05fae18 MultisegmentWellSegments: make members private
and add various read-only accessors
2022-12-19 16:03:54 +01:00
Arne Morten Kvarving
12b15b5038 move updateUpwindingSegments to MultisegmentWellSegments 2022-12-19 16:03:54 +01:00
Arne Morten Kvarving
ef7b2aca4e move computeSegmentFluidProperties to MultisegmentWellSegments 2022-12-19 16:03:54 +01:00
Arne Morten Kvarving
4a9cedf452 move getSegmentSurfaceVolume to MultisegmentWellSegments 2022-12-19 16:03:53 +01:00
Arne Morten Kvarving
5755c94256 move segment_inlets_ to MultisegmentWellSegments 2022-12-19 16:03:27 +01:00
Arne Morten Kvarving
2766427df0 move segment_perforations_ and perforation_segment_depth_diffs_ to MultisegmentWellSegments 2022-12-19 16:03:26 +01:00
Arne Morten Kvarving
aa684a10b8 added: MultisegmentWellSegments
this is a container class for per-segment properties in MultisegmentWell
2022-12-19 15:55:20 +01:00
Arne Morten Kvarving
654c252bb8 MultisegmentWellAssemble: simplify assembleControlEq
by passing primary variables
2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
e1cd54b267 MultisegmentWell: move updateUpwindingSegments to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
37607c570a MultisegmentWell: move updateWellStateFromPrimaryVariables to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
dbdcb2d5ce MultisegmentWell: move getWQTotal to MultisegmentWellPrimaryVariables
also drop otherwise unused getSegmentWQTotal
2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
6b47f9bf1a MultisegmentWell: move getQs to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
99020fe33b MultisegmentWell: move getBhp to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
bb377c0a47 MultisegmentWell: move getSegmentPressure to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
f99ecd15ac MultisegmentWell: move getSegmentRateUpwinding to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
8e9b004cfc MultisegmentWell: move surfaceVolumeFraction to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
b112a793c5 MultisegmentWell: move updatePrimaryVariablesNewton to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
5212e9c100 MultisegmentWell: move updatePrimaryVariables to MultisegmentWellPrimaryVariables 2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
e1fccd47dc added: MultisegmentWellPrimaryVariables
this is a container class for the primary variables in
multisegment well
2022-12-19 13:05:39 +01:00
Arne Morten Kvarving
10a671e88c MultisegmentWell: make updateWellState non-const
this will obviously update state
2022-12-16 15:05:06 +01:00
Arne Morten Kvarving
f17a90170d use exception classes from opm-common 2022-12-13 12:56:13 +01:00
Arne Morten Kvarving
6011a42246 added: MultisegmentWellAssemble::assemblePerforationEq
extracted from MultisegmentWell::assembleWellEqWithoutIteration
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
b1d1e47e28 added: MultisegmentWellAssemble::assembleInflowTerm
extracted from MultisegmentWell::assembleWellEqWithoutIteration
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
d5bbccde65 added: MultisegmentWellAssemble::assembleOutflowTerm
extracted from MultisegmentWell::assembleWellEqWithoutIteration
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
517dd49771 added: MultisegmentWellAssemble::assembleAccumulationTerm
extracted from MultisegmentWell::assembleWellEqWithoutIteration
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
d64508f3b8 added: MultisegmentWellAssemble::assemblePressureLoss
extracted from MultisegmentWellEval::handleAccelerationPressureLoss
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
4ebde4e003 added: MultisegmentWellAssemble
this handles assembly of the equation system for multisegment well.
start by moving assembleControlEq into the new class
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
97e1cdb662 added: MultisegmentWellEquations::extractCPRPressureMatrix()
this adds the cpr pressure matrix to a matrix.
this is the core of MultisegmentWell::addWellPressureEquations
use the new method in the implementation.
2022-12-05 10:13:55 +01:00
Arne Morten Kvarving
de8eedb9a6 added: MultisegmentWellEquations::extract(SparseMatrixAdapter)
this adds the well matrices to a sparse matrix adapter.
this is the core of MultisegmentWell::addWellContributions.
use the new method in the implementation.
2022-12-05 10:13:55 +01:00
Arne Morten Kvarving
d50aaf8ed4 added: MultisegmentWellEquations::recoverSolutionWell()
this recovers the well solution from a solution vector.
use the new method in the well implementation.
2022-12-05 10:13:55 +01:00
Arne Morten Kvarving
bc312d1117 added: MultisegmentWellEquations::solve()
this applies the inverted D matrix to the residual vector.
use the new method in the well implementation.
2022-12-05 10:13:55 +01:00
Arne Morten Kvarving
a7cb444328 MSWellHelpers: simplify interfaces
- avoid passing the matrix, only pass the solver. possible
  since setting up the solver is not done in here any more.
- avoid passing shared_ptr's
2022-12-05 10:13:55 +01:00
Arne Morten Kvarving
e67e58d0c8 added: MultisegmentWellEquations::createSolver
this applies compute the LU decomposition of the D matrix
2022-12-05 10:13:53 +01:00
Arne Morten Kvarving
abf5f94561 added: MultisegmentWellEquations::apply(r)
this applies the equation system to a vector.
use the new method in the well implementation.
2022-12-01 10:36:40 +01:00