Commit Graph

59 Commits

Author SHA1 Message Date
Atgeirr Flø Rasmussen
061e1bcbd7 Merge pull request #324 from andlaus/implement_temperature_dependent_density
Implement temperature dependent density
2015-03-26 15:10:28 +01:00
Andreas Lauser
f0c3a6f892 add glue code needed for thermal gas PVT 2015-03-17 13:34:29 +01:00
Andreas Lauser
924818f445 add glue code needed for thermal oil PVT 2015-03-17 13:34:29 +01:00
Andreas Lauser
debb8a1a04 add glue code needed for thermal water PVT 2015-03-17 13:34:29 +01:00
Atgeirr Flø Rasmussen
04b255a03f Make more use of move semantics in AD code.
This makes some API changes to AutoDiffBlock.
 - Add overload for the constant() constructor taking rvalue ref.
 - Add overload for the variable() constructor taking rvalue ref.
 - Make the function() constructor *require* rvalue refs.
 - Add a swap() function.

The remaining changes in this commit are follow-ups especially
to the third change (adding std::move in many places), and
some removal of unnecessary block pattern arguments from calls to
the constant() static method.
2015-03-16 14:22:32 +01:00
Atgeirr Flø Rasmussen
818b653c15 Removed extra overload of relperm(). 2015-03-09 09:40:30 +01:00
Atgeirr Flø Rasmussen
a347e35304 Removing extra overloads of rsSat() and rvSat().
Also a few minor fixes to docs and indentation while in the area.
2015-03-09 09:40:30 +01:00
Atgeirr Flø Rasmussen
fbf06c06e7 Remove extra overloads of bWat(), bOil() and bGas().
Remaining method is the one taking AD objects. This modification
required changes to a few more places than anticipated:
  - RateConverter
  - FullyImplicitBlackoilSolver::computeWellConnectionPressures()
In these places, the call now is a little more complex and there
might be a very minor performance loss, until we optimize the
bX() functions to check for the no-derivatives case.
2015-03-03 14:33:19 +01:00
Atgeirr Flø Rasmussen
1195ced57a Remove obsolete comment. 2015-03-03 13:19:42 +01:00
Atgeirr Flø Rasmussen
1d68f7e846 Remove extra overloads of muGas() and muWat().
This change has been made in both BlackoilPropsAdInterface
and BlackoilPropsAdFromDeck. Only remaining overloads are
those using AD objects and passing the PhasePresence for
each data point.
2015-03-03 13:14:31 +01:00
Atgeirr Flø Rasmussen
965be0471f Remove non-AD overload of muWat().
The AD version is made a little smarter, detecting the
case of input with no derivatives. Existing use of the
non-AD rewritten.
2015-03-03 12:56:30 +01:00
Atgeirr Flø Rasmussen
22d0d7cd27 Remove extra call to extractPvtTableIndex(). 2015-02-27 12:26:12 +01:00
Atgeirr Flø Rasmussen
635fea1cad Remove pvtTableIdx_ from BlackoilPropsAdFromDeck.
It was not used by the properties, this commit also fixes the bug that
pvtTableIdx_ was initialized instead of cellPvtRegionIdx_.
2015-02-27 10:20:30 +01:00
Atgeirr Flø Rasmussen
ba86dc191c Fix handling of multiple pvt-regions in BlackoilPropsAdFromDeck. 2015-02-27 10:20:30 +01:00
Tor Harald Sandve
44e9d2a34e Fix PR comments
1) swatinit() is changed to setSwatInitScaling() to make it obvious that
we are modifying the props.
2) the descriptions of saturation and pc now makes more sense
3) the method is removed from the sibling class and the interface and
the type of new_props is changed from BlackoilPropsAdInterface to
BlackoilPropsAdFromDeck
5) The same modification is added to sim_fibo_ad_cp
2015-02-19 08:34:55 +01:00
Tor Harald Sandve
013d1d3499 Apply the swatinit scaling to new_props
The capillary pressure function in new_props is scaled to match the
capillary pressure function in props.

This is a temporary workaround while the simulator uses two different
property object.
2015-02-19 08:18:39 +01:00
Atgeirr Flø Rasmussen
355bfb0e70 Suppress signed/unsigned warning.
Also fix formatting.
2015-02-17 13:41:31 +01:00
Markus Blatt
01ea7bacba Adds data redistribution capabilities and makes sim_fibo_ad_cp parallel.
With this commit we add the possibility to start with a global representation
of a simulator that is read on each process and afterwards this presentation
is redistributed among the processors together with the properties and
state data needed to initialize the simulation.

There still is no parallel well handling and no parallel output. But with the
equilibrium example of @dr-robertk and deactivated output we can already
perform parallel runs.
2015-02-12 21:33:41 +01:00
Markus Blatt
fc137afcd5 Adds a constructor to BlackoilPropsAdFromDeck that allows copy the grid independant part.
In the parallel simulator we will have to be able adress only poperties on
some part of the global grid. To create thos properties we need to be able
to copy the grid independant data of the properties object and resize the rest.
This commit adds a construct taking a properties object for reading and a
new number of cells to accomplish this.
2015-02-12 21:33:41 +01:00
Andreas Lauser
ff09e87787 add the glue code required for temperature dependent viscosity 2015-02-03 15:27:38 +01:00
Tor Harald Sandve
b57ddf1b2d Include derivatives of vappars
The derivatives of the vappars are included in the Jacobian.
To avoid inf derivatives for vap<1, the oil saturation is restricted
from below by sqrt(epsilon).
2015-01-29 13:08:52 +01:00
Markus Blatt
cb43fc5e94 Unifies the phase indices with the ones in opm-core.
The initial definition of the phase indices seems to be in
opm/core/props/BlackoilPhases.hpp. Nevertheless there were
several redefinitions of the same or similar enums (either
Aqua, Liquid, and Vapor, or Water, Oil, and Gas). Surprisingly
most often these definitions did not use the original values.
This is bound to break if there is a change upstream.

This patch limits the definition to one place in opm-autodiff,
namely opm/autodiff/BlackoilPropsAdInterface.hpp. To avoid
downstream confusion we define both the Water and Aqua triplets.
In addition we define the maximum number of phases to use at compile
time.
2015-01-19 20:18:14 +01:00
Atgeirr Flø Rasmussen
5b6765f9d8 Use fastSparseProduct() in place of Eigen's product. 2014-12-05 13:09:46 +01:00
Andreas Lauser
4e3a69cc90 PVT properties: allow them to be temperature dependent
Note that this patch does not introduce any real temperature
dependence but only changes the APIs for the viscosity and for the
density related methods. Note that I also don't like the fact that
this requires so many changes to so many files, but with the current
design of the property classes I cannot see a way to avoid this...
2014-12-01 20:06:02 +01:00
Atgeirr Flø Rasmussen
fe7e408e46 Merge pull request #204 from bska/fix-oob-pix
Fix out-of-bounds indexing into PVT function table
2014-09-20 08:45:26 +02:00
Andreas Lauser
0f436e12c9 adapt the the table related API changes of opm-parser 2014-09-18 16:49:29 +02:00
Bård Skaflestad
a0567cc887 Fix out-of-bounds indexing into PVT function table
The 'props_' table of PVT functions has one entry for each active
phase.  Fix four instances of indexing into the table using the
canonical rather than active phase indices.

This is necessary, but not sufficient, to run two-phase problems
without a "dummy" third phase.
2014-09-18 00:19:35 +02:00
osae
98afdc7fc2 Provide eclipse state to saturation property init. 2014-08-22 15:30:05 +02:00
osae
8e679382dd Fixing some syntax. 2014-08-12 19:48:48 +02:00
osae
ca046987a7 Guard against "too small" max saturation.
This parameter might well be user configurable ...
2014-08-12 19:42:30 +02:00
osae
4ce61b7c7c Support for kw VAPPARS.
When this kw is active, BlackoilPropsAdFromDeck now modifies rvSat
and rsSat curves cell-wise by a power of (sat_oil_cell /
sat_oil_cell_historical_max).   Currently, the associated jacobians do
not reflect terms of type d/d_sat_oil, but code for doing this is given
as comments to BlackoilPropsAdFromDeck::applyVap(ADB& r, ...).
2014-08-08 13:17:33 +02:00
Tor Harald Sandve
8a600747fa Read DISGAS and VAPOIL from deck and pass them to the simulator 2014-06-13 14:29:52 +02:00
Andreas Lauser
0219f83563 glue in support for property modifiers
i.e. reading the grid properties from EclipseState instead of from the
raw deck. This requires that all deck files exhibit a GRID and a
SCHEDULE section or else EclipseState will throw in the constructor.
2014-06-09 12:36:46 +02:00
Andreas Lauser
756de358c0 implement multi-region PVT
this requires the multi-region PVT patch for opm-core
2014-05-13 13:39:26 +02:00
Andreas Lauser
dbb19403fc completely remove the EclipseGridParser from the module 2014-05-02 15:47:52 +02:00
Bård Skaflestad
03218f5470 Merge pull request #100 from blattms/master-refactor-for-cpgrid-support
Adds fully implicite black oil solver working with CpGrid
2014-04-15 00:03:16 +02:00
Andreas Lauser
e92cac6d0c fix typo: it's PVCDO, not PVDCO 2014-04-11 11:54:56 +02:00
Markus Blatt
5112b8af26 Removes the dependency of FullyImpliciteBlackoilSolver onto UnstructuredGrid.
With these changes it will be possible to use CpGrid with FIBOS except for the
output routines.
2014-03-13 16:33:36 +01:00
Atgeirr Flø Rasmussen
3de050b19f Merge pull request #87 from osae/hysteresis
Hysteresis.
2014-03-04 10:30:07 +01:00
Atgeirr Flø Rasmussen
3627d9ec02 Make spline interpolation possible.
This restores the logic for choosing monotone splines for dead oil/gas pvt
tables, but the option is inactive (samples set to zero at top).
2014-03-03 10:31:21 +01:00
Atgeirr Flø Rasmussen
2cc5f0b421 Bugfix: PVDCO->PVCDO. 2014-03-03 10:30:39 +01:00
Atgeirr Flø Rasmussen
b4fe41249a Fix error output. Also very minor whitespace issues. 2014-03-03 10:29:13 +01:00
osae
305512cc21 Hysteresis.
SimulatorFullyImplicitBlackoil reports saturation values at each
completed time-step, allowing detection of hysteris behavior.
2014-02-18 14:50:29 +01:00
Andreas Lauser
f7541aa27a BlackoilPropsAdFromDeck: Add support for PVTO 2014-02-14 17:56:20 +01:00
Andreas Lauser
198f805c2a switch to the new parser's table utility classes 2014-02-14 17:56:08 +01:00
Andreas Lauser
2deeeef4e4 really use the new parser
in the previous commit this was #if 0'ed...
2014-02-14 17:56:08 +01:00
Andreas Lauser
7f485626a2 use the new parser to read the PVT and grid data from the deck
the old code has not yet been removed, but in the long term, this is
probably the way to go.
2014-02-14 17:56:07 +01:00
Andreas Lauser
627b1f3906 make the deck from opm-parser available to the black-oil PVT property classes 2014-02-14 17:56:07 +01:00
Tor Harald Sandve
19f0a81db1 Fixed from bitwise to logical operator
The && is used instead of &
2014-01-24 13:15:29 +01:00
Tor Harald Sandve
ed02b4a91f Implementation of live gas
The simulator now handles live gas as well as live oil.
The primary variables are Po,Sw and Rs,Rv or Sg depending on fluid
condition
State 1 Gas only (Undersaturated gas): Po, Sw and Rv
State 2 Gas and oil: Po, Sw and Sg
State 3 Oil only (Undersaturated oil): Po, Sw and Rs

This commit includes:
1. New interfaces for the vapor oil/gas ratios (Rv)
2. Modifications in the equations to handle rvs
3. New definition of ADI variable to handle changing primary variables
4. Modifications in the solution updates to handle changing primary
variable
5. Some changes in the appleyard process to sync with Mrsts livegas
implementation.

NOTE:
The implementation is tested on the liveoil cases SPE1 and a simplified
SPE9 and produces the same results as the old code.
The simulator is not yet able to converge on SPE3 with livegas present.
For SPE3 to converge a more robust well implementation is needed. The
current simulator reproduce the results of Mrst when a similar well
model is used in Mrst as is currently implemented OPM.
2014-01-10 16:07:32 +01:00