Commit Graph

2243 Commits

Author SHA1 Message Date
Kai Bao
c8fbb0b80d clearning up some comments and debugging output 2015-12-01 00:06:45 +01:00
Kai Bao
b1fdda00af calculating the pressure difference between segments and perforations. 2015-12-01 00:06:45 +01:00
Kai Bao
31f71dd6f7 calculating the depth difference between segments and perforations 2015-12-01 00:06:45 +01:00
Kai Bao
658ad0a400 calculation of pressure difference between perofration and cells
remained to be verified.

The calculation is explicit, should be performed only once at the
begining of the time step.
2015-12-01 00:06:45 +01:00
Kai Bao
f3b885dc0d removing several member variables not useful
they are related to the presure correction caclulations.
2015-12-01 00:06:45 +01:00
Kai Bao
9f218ef1a3 adding segmentDiameter() to WellMultiSegment 2015-12-01 00:06:45 +01:00
Kai Bao
b9e5518b51 adding compPressureDrop() member function for WellMultiSegment 2015-12-01 00:06:45 +01:00
Kai Bao
5e64da6f8e calculating the viscosity of the fluid in segments 2015-12-01 00:06:45 +01:00
Kai Bao
93a86019af calculating the mass flow rate for the segments. 2015-12-01 00:06:45 +01:00
Kai Bao
3b3ac203d9 change the name of computeSegmentDensitiesAndCompVolumeDt
to computeSegmentFluidProperties to include calculation of more fluid mixture in the segments.
2015-12-01 00:06:45 +01:00
Kai Bao
8bde14d7ce applying the volume effects to the well flux equation.
The effects on the result are really tiny, which makes the real
verfication not easy. It did not bring anything bad for the current
working case though.
2015-12-01 00:06:45 +01:00
Atgeirr Flø Rasmussen
9dea3c6b57 Fix typo in variable name. 2015-12-01 00:06:45 +01:00
Atgeirr Flø Rasmussen
81e9c25b10 Made methods const in multi-segment model as well. 2015-12-01 00:06:45 +01:00
Kai Bao
95eb44e530 calculating the surface volume of component in segment
For convinience, we calculate and store the surface volume by dt
instead.
2015-12-01 00:06:45 +01:00
Atgeirr Flø Rasmussen
e82828527c Make some methods const.
The methods are: computeWellFlux(), updatePerfPhaseRatesAndPressures()
and extractWellPerfProperties().
2015-12-01 00:06:45 +01:00
Kai Bao
847ae2ef8c adding segment volume / dt to BlackoilMultiSegmentModel
to handle the wellbore volume effects.
2015-12-01 00:06:45 +01:00
Kai Bao
d5f917d1ac computing the density of segment mixture and pressure drop earlier
the density of segmetn mixture will be used in the well flux
calculation.
2015-12-01 00:06:45 +01:00
Atgeirr Flø Rasmussen
ba7b3e728c Minor improvements in computeSegmentDensities().
Mainly improving comments, deleting unused code and moving some variable
definitions closer to where they are used.
2015-12-01 00:06:45 +01:00
Kai Bao
6190d002dd adding the hydrostatic drop effects in segment pressure equation.
Verified with current working case.
2015-12-01 00:06:45 +01:00
Kai Bao
92c5927f30 fixing a typo bug in addWellControlEq
verified with a case with a simple horizontal multi-segment well.
2015-12-01 00:06:45 +01:00
Kai Bao
50938effc4 output the well equation residual. 2015-12-01 00:06:45 +01:00
Kai Bao
a44de6bb1d changing p2s_gather to p2s mappling in well flux equation. 2015-12-01 00:06:45 +01:00
Kai Bao
19caace288 unifying the well flux equaions for multi-segment and non-segment wells
verified with non-segment wells.
2015-12-01 00:06:45 +01:00
Kai Bao
7d11b49732 re-organizing the output.
no functional change.
2015-12-01 00:06:44 +01:00
Kai Bao
885dfedc91 adding the pressure drop between segments
remains to be verfied and apply to the pressure equations for segments
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
702cd3170a Remove unused code and fix a few warnings. 2015-12-01 00:06:44 +01:00
Kai Bao
b7b5672c86 deleting the old unused computeSegmentDensities()
which is a first version, whose implementation should not be used
anymore.
2015-12-01 00:06:44 +01:00
Kai Bao
617e4c1786 fixing one bug in computeSegmentDensities()
the flux rate for the producing well are negtive. NotEqualZero should
used for selector instead of GreaterZero.
2015-12-01 00:06:44 +01:00
Kai Bao
f3ce4dc530 finishing computeSegmentDensities()
the results remain to be verified.
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
4dd8536afa Make multi-segment model use Base::addWellContribution...() method.
Also make assemble() more similar to base version, using the
extractWellPerfProperties() member from Base.

To do this it was necessary to change the well_cells member of the
WellOps to be correct for the multi-segment wells (since they may
have different perforation order for some wells).
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
44f36c45cf Add well_cells to WellOps to avoid recreating. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
b2787e24e7 Use value() in argument to make Selector constructor compile. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
920eeed3b2 Improve assemble() with new method extractWellPerfProperties(). 2015-12-01 00:06:44 +01:00
Kai Bao
d79536b0dd adding the function computeSegmentDensities()
Not verified yet.
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
653e55d7db Make assemble() more similar to base version. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
e6a81fca83 Make convergence methods work for multi-segment wells.
The convergenceReduction() method no longer takes a number-of-wells argument,
instead it infers the number of well fluxes to check from the size of the
well_flux_eq member of the residual.

After this, a custom getConvergence() method is no longer required for the
multi-segment well model.
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
1c4f4c646d Add asImpl() to some method calls.
This enables those methods (mostly well related) to be used polymorphically.
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
ae512d5c83 Update location of ErrorMacros.hpp header in includes. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
9e664abe6e Add a TODO comment to updateWellControls(). 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
fce7247da5 Update the SolutionState's qs and bhp members.
This way they can be used instead of repeatedly extracting the top segment data,
which also could make it possible to use more of the existing implementation.
2015-12-01 00:06:44 +01:00
Kai Bao
433d76cd86 adding the related grid cell for each segment.
This concept can be removed in the future.
2015-12-01 00:06:44 +01:00
Kai Bao
98fe7f19c5 not trying to find outlet segment for top segment 2015-12-01 00:06:44 +01:00
Kai Bao
4854bae4cd using s2s_outlet mapping in the pressure equation. 2015-12-01 00:06:44 +01:00
Kai Bao
1b6453c6ba introducing new mapping s2s_outlet
from a segment to its outlet segment
2015-12-01 00:06:44 +01:00
Kai Bao
317cbb0af8 changing the mapping s2s_outlet to s2s_inlets
to better refect the real meaning of the mapping.
2015-12-01 00:06:44 +01:00
Kai Bao
cb3f54b618 the pressure fluctuation only apply for non-segmented well.
to recover previous residual history when running with only
non-segmented wells.
2015-12-01 00:06:44 +01:00
Kai Bao
be293962b6 changing the perforation pressure initialization
to make it slightly different from the pressure of the perforation cell
to avoid NaN for cqt_is.

anotehr way can be initialized them related to the bhp of the well.
some tests will be performed in the future.
2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
9c1c87a040 Remember to initialize the data members. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
f2c812fb3a Made WellStateMultiSegment use inheritance properly.
Use base class' data members (via public methods),
also change method names to match existing ones.
2015-12-01 00:06:44 +01:00
Kai Bao
cc2d40a1a8 handling aliveWells when adding control equations
to recover the SPE9 running.
2015-12-01 00:06:44 +01:00