Commit Graph
1189 Commits
Author SHA1 Message Date
Atgeirr Flø Rasmussen f84162bc39 Add initStateEquil() function.
It is not quite complete yet for the following reasons:
  - it does not compute state.surfacevol(),
  - the InitialStateComputer class does not compute Rs or Rv,
  - it has not been verified.
2014-02-27 10:40:14 +01:00
Atgeirr Flø Rasmussen 4aaeff0078 Added Rv field to InitialStateComputer.
It is currently not computed, as for Rs.
2014-02-27 10:39:18 +01:00
Atgeirr Flø Rasmussen 0fbc3a1ccb Moved implementation of phaseSaturations() to _impl file. 2014-02-27 09:37:48 +01:00
Atgeirr Flø Rasmussen a1192c09dc Refactor copying of region to global data. 2014-02-27 09:31:48 +01:00
Atgeirr Flø Rasmussen a7c45d4e9f Rename PhasePressureSaturationComputer -> InitialStateComputer.
Also add (unused so far) rs_ field to class.
2014-02-27 09:08:39 +01:00
Atgeirr Flø Rasmussen 91ae9df907 Add test for live oil initialisation.
The test is not finished or verified yet.
2014-02-27 08:31:51 +01:00
Atgeirr Flø Rasmussen 27743b4a13 Enable live oil in initialisation. 2014-02-27 08:31:03 +01:00
Atgeirr Flø Rasmussen d5ffcc051c Removed redundant calcPressII() method.
Pressure is also calculated in the calcPressSat() method.
2014-02-26 14:49:06 +01:00
Atgeirr Flø Rasmussen 38c89f363d Made phase mixing functors a class hierarchy.
In summary:
 - added RsFunction (base class),
 - made NoMixing, RsVD, RsSatAtContact inherit RsFunction,
 - RS and RV are no longer template arguments for EquilReg class,
 - EquilReg constructor now takes two shared_ptr<Miscibility::RsFunction>,
 - use of constructor updated, mostly using make_shared.
2014-02-26 14:47:24 +01:00
Atgeirr Flø Rasmussen 8266c52d99 Made NoMixing a class.
For uniformity with its sibling classes.
2014-02-26 14:16:51 +01:00
Atgeirr Flø Rasmussen 74573947bb Prune includes. 2014-02-24 16:11:50 +01:00
Atgeirr Flø Rasmussen 7e0bd62205 Moved equilibration utilities to separate file. 2014-02-24 16:09:04 +01:00
Atgeirr Flø Rasmussen 64b6a40191 Capitalize nested namespace names.
equil -> Equil
miscibility -> Miscibility
2014-02-24 15:55:14 +01:00
Atgeirr Flø Rasmussen 2b0fcfe748 Move RegionMapping class to its own header, add test.
Class now resides in opm/core/utility/RegionMapping.hpp.
2014-02-24 15:19:04 +01:00
Atgeirr Flø Rasmussen c689bc757f Added class RsSatAtContact (not tested). 2014-02-24 13:47:03 +01:00
Atgeirr Flø Rasmussen 83d0487097 Add test case with overlapping transitions.
Capillary pressure functions and contact depths
have been modified to ensure a large overlap.
2014-02-21 14:50:45 +01:00
Atgeirr Flø Rasmussen 6c8babc7d2 Fix bug in saturation initialisation.
We shall only use gas-water capillary to initialise when we would get
unphysical saturations otherwise.
2014-02-21 14:47:14 +01:00
Atgeirr Flø Rasmussen 6ef6b82ab5 Merge branch 'no-spline-default' into initialisation.
Necessary since test case behaviour depends on changes in
BlackoilPropertiesFromDeck class.
2014-02-21 11:01:44 +01:00
Atgeirr Flø Rasmussen 50637e1a3b Make linear interpolation default for saturation properties.
This includes relative permeability and capillary pressure functions.
The default has been to make a monotone spline from the given table
values and use a fine, uniform sampling of that. Now the default
is to use the tables as-is. It is still possible to use the spline
approach. For example in the class BlackoilPropertiesFromDeck one
may pass nonzero values for the 'pvt_tab_size' and 'sat_tab_size'
parameters, corresponding to how fine the spline will be sampled.
2014-02-21 09:54:47 +01:00
Atgeirr Flø Rasmussen 7d63cb9204 Add test case with capillary transition region. 2014-02-21 08:55:15 +01:00
Atgeirr Flø Rasmussen b2be489e6e Add saturation computation to and rename computer class.
Opm::equil::DeckDependent::PhasePressureComputer ->
Opm::equil::DeckDependent::PhasePressureSaturationComputer
2014-02-21 08:52:25 +01:00
Atgeirr Flø Rasmussen dc6bcead91 Add test case for capillary inversion. 2014-02-21 08:32:15 +01:00
Atgeirr Flø Rasmussen 4ec65f2f8f Add another test deck for initialisation.
This deck includes capillary functions.
2014-02-20 15:39:15 +01:00
Atgeirr Flø Rasmussen e1069cf39b Fix bugs in saturation initialisation and helpers. 2014-02-20 15:24:27 +01:00
Atgeirr Flø Rasmussen b09dd7750a Add saturation init facilities.
This adds the function phaseSaturations() and some helpers:
satFromPc() and satFromSumOfPcs().
2014-02-19 13:42:07 +01:00
Atgeirr Flø Rasmussen ebb6eaf742 Complete pressure test for dead-oil deck. 2014-02-19 13:41:20 +01:00
Atgeirr Flø Rasmussen 2ebaef62a0 Modify test data. 2014-02-19 13:40:02 +01:00
Atgeirr Flø Rasmussen 82216fa24f Add (defaulted) gravity argument in some places.
This is done to facilitate testing, using gravity = 10 m/s^2 for example.
2014-02-19 13:38:21 +01:00
Atgeirr Flø Rasmussen 1f2b2eadc5 Merge branch 'master' into initialisation 2014-02-10 13:24:35 +01:00
Kristian Flikka 6632630269 Initializing do_hyst_ to false, this caused random segfaults in sim_fibo_ad 2014-02-06 21:17:36 +01:00
Atgeirr Flø Rasmussen cb99938c62 Fix initialisation warning. 2014-02-05 13:05:33 +01:00
Atgeirr Flø Rasmussen b134fe048a Still working on test_equil.cpp. 2014-02-05 11:26:29 +01:00
Atgeirr Flø Rasmussen 04eea929ba Fix contact depths in test deck. 2014-02-04 10:57:23 +01:00
Atgeirr Flø Rasmussen 45de38a019 Throw exception if datum not in oil zone.
We are not capable of handling this, and must abort.
2014-02-04 10:56:09 +01:00
Atgeirr Flø Rasmussen 634b78a9d9 Created simple data for init testing. 2014-02-04 09:38:47 +01:00
Atgeirr Flø Rasmussen 85be4b1263 Add (unfinished) test case. 2014-02-03 15:36:20 +01:00
Atgeirr Flø Rasmussen 30d65e6c32 Removed RK4IVP's inheritance from binary_function.
Three reasons:
 - class is a unary functor,
 - the typedefs obtained were not used,
 - binary_function is deprecated in C++11.
2014-02-03 11:32:46 +01:00
Atgeirr Flø Rasmussen 0061b25408 Merge remote-tracking branch 'bska/initialisation' into initialisation 2014-01-31 15:41:58 +01:00
Atgeirr Flø Rasmussen 5ce1d09370 Merge pull request #478 from osae/endscale
Saturation table scaling and hysteresis.
2014-01-31 05:48:56 -08:00
Bård Skaflestad 0fc3571488 Fix fallout from PR #474
The check introduced in PR #474 (commit ad899fc) means all decks
must supply valid depth data.  Update test decks accordingly to
restore "make test".
2014-01-31 14:24:02 +01:00
osae 64b9726692 Saturation table scaling and hysteresis.
This commit implements some additional scaling keywords.  This includes
the ISWL-family that provide hysteresis behaviour via alternative
scaling of the tables.  The old parser has been somewhat extended for
testing purposes.  The commit also includes a slight refactoring of the
SatFunc-family where a new base class has been introduced.
2014-01-28 16:36:55 +01:00
Bård Skaflestad 311ac78340 Add a layer of glue to extract data from deck
This is a work in progress.
2014-01-23 10:16:49 +01:00
Bård Skaflestad f71ba5a9f7 Install crude handling of data point outside vertical span
The initial implementation of RK4IVP<>::operator() failed to take
into account the possibility that we might need to evaluate the
function outside the vertical span for which it was initially
defined.  This situation occurs, for instance, in the not uncommon
cases of the GOC being above or the WOC being below the model.

This commit installs a crude Hermitian extrapolation procedure to
handle these cases.  Refinements are likely.
2014-01-21 17:54:47 +01:00
Bård Skaflestad 76844c9c59 Include <numeric> for std::iota()
Header was missing in earlier revision.
2014-01-21 17:54:47 +01:00
Bård Skaflestad ada48fd0b5 Document requirements of CellRange. 2014-01-21 17:54:47 +01:00
Bård Skaflestad 955cb795f3 Document public interface of phasePressures(). 2014-01-21 17:54:47 +01:00
Bård Skaflestad 6814b97698 Add reverse look-up mapping for region vectors
Class RegionMapping<> provides an easy way of extracting the cells
that belong to any identified region (e.g., as defined by EQLNUM) of
the deck.
2014-01-21 17:54:47 +01:00
Bård Skaflestad 4114da26bd Test cell subset phase pressure assignment. 2014-01-21 17:54:46 +01:00
Bård Skaflestad c582d00fb6 Compute phase pressures in subset of cells
This commit adds support for assigning the initial phase pressure
distribution to a subset of the total grid cells.  This is needed in
order to fully support equilibration regions.  The existing region
support (template parameter 'Region' in function 'phasePressures()')
was only used/needed to define PVT property (specifically, the fluid
phase density) calculator pertaining to a particular equilibration
region.
2014-01-21 17:54:46 +01:00
Bård Skaflestad 4c39a8a595 Add basic equilibration facility
This commit adds a simple facility for calculating initial phase
pressures assuming stationary conditions, a known reference pressure
in the oil zone as well as the depth and capillary pressures at the
water-oil and gas-oil contacts.

Function 'Opm::equil::phasePressures()' uses a simple ODE/IVP-based
approach, solved using the traditional RK4 method with constant step
sizes, to derive the required pressure values.  Specifically, we
solve the ODE

      dp/dz = rho(z,p) * g

with 'z' represening depth, 'p' being a phase pressure and 'rho' the
associate phase density.  Finally, 'g' is the acceleration of
gravity.  We assume that we can calculate phase densities, e.g.,
from table look-up.  This assumption holds in the case of an ECLIPSE
input deck.

Using RK4 with constant step sizes is a limitation of this
implementation.  This, basically, assumes that the phase densities
varies only smoothly with depth and pressure (at reservoir
conditions).
2014-01-21 17:54:46 +01:00