Commit Graph

1332 Commits

Author SHA1 Message Date
Atgeirr Flø Rasmussen
43c00773db Add partialCopy() method for transferring well states.
Also add numWells() and numPhases() helpers.
2014-08-13 15:55:50 +02:00
Bård Skaflestad
6fccb4b446 Merge pull request #179 from atgeirr/restructure-sim
Restructure fully implicit blackoil simulators
2014-08-13 10:23:41 +02:00
Atgeirr Flø Rasmussen
ebac36ddfc Merge branch 'master' into restructure-sim
Conflicts:
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp
2014-08-13 00:02:42 +02:00
Atgeirr Flø Rasmussen
087971383c Merge pull request #163 from osae/vappars
kw VAPPARS etc
2014-08-12 23:29:09 +02:00
osae
6eea5e22a1 Update of hysteresis model is now performed prior
to each time step, thus also capturing the initial state.
2014-08-12 19:53:38 +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
64231809f5 Bugfix, correcting incomplete merge. 2014-08-12 19:36:25 +02:00
Atgeirr Flø Rasmussen
1b7e748431 Update sim_fibo_ad_cp to use refactored simulator class.
Also add some other features that have been added to sim_fibo_ad
but not to sim_fibo_ad_cp:
 - (Un)Strict parsing parameter.
 - EQUIL init (currently throws, since initEquil not yet made generic).
2014-08-12 12:54:55 +02:00
Atgeirr Flø Rasmussen
80b0921ce3 Use generic WellsManager constructor.
Also fix minor whitespace issues.
2014-08-12 12:54:16 +02:00
Atgeirr Flø Rasmussen
bb118a9a39 Remove superfluous output and use const. 2014-08-12 12:53:11 +02:00
Atgeirr Flø Rasmussen
2aff3e3750 Fix template argument of solver class. 2014-08-12 12:26:26 +02:00
Atgeirr Flø Rasmussen
b85ba1bcc0 Clean up files and streams for timing output.
Total time will be written to walltime.txt, and single step times to
step_timing.txt (changed suffix from param to txt). This did not work
properly before this fix (step_timing file was overwritten each step).
2014-08-12 09:28:28 +02:00
Atgeirr Flø Rasmussen
120e9d02d4 Remove unused pore volume calculations. 2014-08-11 15:06:45 +02:00
Atgeirr Flø Rasmussen
d170de43cb Merge remote-tracking branch 'GitPaean/New_BLACKOIL_SIMULATOR' into restructure-sim
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp
2014-08-11 14:01:54 +02:00
osae
3ff807edc4 Revert "Re-introduced tempoary fix for singular matrix."
Seems not to be needed any more ...
This reverts commit bb12bdd1fd.
2014-08-08 16:10:03 +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
osae
bb12bdd1fd Re-introduced tempoary fix for singular matrix. 2014-08-08 12:44:55 +02:00
Bård Skaflestad
a3bc595a91 Aesthetics: Turn if-else into switch()
This commit replaces an if-else-based query of the primaryVariable_
with the equivalent switch() statement for uniformity with the rest
of the implementation.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
0f663dfe9f Implement RESV control mode for producers
This commit introduces support for the RESV control mode of
prediction (WCONPROD) and history-matching (WCONHIST) alike.  The
implementation uses class SurfaceToReservoirVoidage<> to compute
coefficients that convert component rates at surface conditions
(i.e., the primary degrees of freedom in the well residual) to phase
rates at reservoir condition.  The resulting coefficients can be
entered directly into system matrix of the linearised residual.

Note: We abuse the "distr" mechanism of struct WellControls to store
the conversion coefficients.  This may require refactorisation and
clarification at a later stage.  In the meantime, it allows for
transparent assembly of well equations--irrespective of surface- or
reservoir (voidage) rates.

Note: We do not yet support injectors controlled by total reservoir
voidage rate--either in history-matching (WCONINJH) or
prediction-scenario capacity.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
23520be41a RESV: Prepare for dynamic rate distribution calculation
This commit changes the API of class SimulatorFullyImplicitBlackoil<>
in order to support wells controlled by (total) reservoir voidage
volume rates.  Specifically, we switch to holding a mutable Wells
object (backed by a std::shared_ptr<>) in class Impl rather than a
reference to a WellsManager.  This allows dynamically updating rate
distributions and targets of individual well controls.  That, in
turn, is a prerequisite to supporting ECL-style "RESV" control
modes--be it in prediction or history matching capacity.

While in the process of API changes, also prepare for the second
stage of "WCONHIST/RESV" support: Accept a ScheduleConstPtr that
holds the input deck's notion of the history matching vs. prediction
controls.  We need to distinguish the two in order to support the
exact semantics of "WCONHIST/RESV".

Update SimFIBO<> clients accordingly.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
91567a9857 Remove long-disabled parameter setup code
This was copy-pasted into the class at its inception (a94f1921) and
never used thereafter.  If we need it we can bring it back in
modified form at a later stage.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
1e7967aeb1 Prune unused header
The column-extraction feature was not used in this module.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
82fc769922 RESV: Add facility for surface-to-reservoir rate conversion
This commit adds a simple facility for converting component rates at
surface conditions to voidage rates at reservoir conditions.  It is
intentionally limited in scope and meant to be employed only in the
context of class FullyImplicitBlackoilSolver<> or something very
similar.  In particular, class SurfaceToReservoirVoidage<> assumes
that it will be used to compute conversion coefficients for
component rates to voidage rates, and that those coefficients will
typically be entered into the coefficient matrix of a linearised
residual.

Add a trivial test just to demonstrate the setup and calling
process.  This is not a feature or correctness test.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
252fdc3720 Time loop: Remove unused variable 2014-08-08 11:40:50 +02:00
Bård Skaflestad
5f7adfa341 Time loop: Remove control mode switching
The solver (class FullyImplicitBlackoilSolver<>) gained the ability
to do control mode switching/updating in commit 4a22c56 at which
point using WellsManager::conditionsMet() ceased to be useful.  This
is a preparatory step towards adding support for RESV-type control
modes.

If we need this type of behaviour in the Simulator*, we can bring it
back (in modified form) at a later time.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
88bb04c72f Fix contextual misprint: face -> phase 2014-08-08 11:40:50 +02:00
Atgeirr Flø Rasmussen
3512a7b2f0 Merge pull request #177 from osae/non-strict
Make non-strict parsing the default.
2014-08-08 09:47:43 +02:00
osae
8fa34b421a Strict parsing is now the default. 2014-08-07 19:14:36 +02:00
osae
a8d99d0443 Make non-strict parsing the default. 2014-08-07 16:39:41 +02:00
Bård Skaflestad
d6e29be24c Merge pull request #175 from atgeirr/remove-unused-grav
Remove unused grav_ member and function used to compute it.
2014-08-05 16:30:09 +02:00
Atgeirr Flø Rasmussen
cc5fa94e46 Remove unused grav_ member and function used to compute it.
This is a relic of the way we originally handled gravity. The member
remained after the change, and is now a major time-consumption sink
due to the unfortunate fact that it is computed every time step
(unnecessary), and because the gravityOperator() function (now removed)
was very unperformant after changing to use the faceCells() function.
2014-08-05 11:27:00 +02:00
Atgeirr Flø Rasmussen
fd2da708a2 Merge pull request #173 from bska/restore-gravity
Restore gravity effects
2014-08-04 11:31:02 +02:00
Bård Skaflestad
a612d2c96f Restore gravity effects
The refactorisation of class FullyImplicitBlackoilSolver<Grid> to
defer transmissibility and pore-volume calculation to the client in
order to support multipliers (net-to-gross &c) accidentally ended up
removing all effects of gravity.  This commit restores those effects.
2014-07-29 19:49:50 +02:00
Bård Skaflestad
167ed55b86 Merge pull request #172 from GitPaean/Fixing_including_iss170
Adding ErrorMacros.hpp to GeoProps.hpp
2014-07-29 12:43:00 +02:00
Kai Bao
2ac5146cfc Adding ErrorMacros.hpp to GeoProps.hpp
#include <opm/core/utility/ErrorMacros.hpp>
2014-07-29 11:40:52 +02:00
Bård Skaflestad
b98b71e401 Merge pull request #166 from andlaus/implement_multipliers
Implement pore volume and permeability multipliers
2014-07-28 14:38:56 +02:00
Andreas Lauser
faa98b4f74 add a unit test for the implementation of transmissibilty multipliers in DerivedGeology
for the legacy C-style grid the unit test is more or less complete (it
does not test FAULTMULT and NNC, etc, but these could be added with
sufficient determination), for Dune::CpGrid it currently does not
really check anything because I have not found a good way for CpGrid
to produce the "global" intersection index of an intersection...
2014-07-28 11:30:13 +02:00
Andreas Lauser
e07ef16a45 implement pore volume and transmissibility multipliers
this means that the NTG, MULTPV and MULT[XYZ]-? keywords are now
supported.

Actually FAULTS and MULTFAULT are supported too, but that's abstracted
away by opm-parser's TransMult class. (Kudos to [at]joakim-hove for
implementing this.)
2014-07-28 11:30:13 +02:00
Kai Bao
eb3445e6a1 Finishing compliation. 2014-07-27 17:31:00 +02:00
Kai Bao
1e8d5e65b7 Finishing changing. Testing Later 2014-07-25 19:13:23 +02:00
Kai Bao
013e4e452a Merge remote-tracking branch 'upstream/master' into New_BLACKOIL_SIMULATOR 2014-07-25 15:56:52 +02:00
Kai Bao
8da842d1f3 Commit for saving. 2014-07-24 17:06:43 +02:00
Andreas Lauser
63eaecf246 DerivedGeology: pass the EclipseState object to its constructor
this is required to implement pore volume and permeability multipliers
as discussed with [at]bska and [at]joakim-hove.

Note that this implies that the DerivedGeology class can't be
instantiated anymore if there is no EclipseState object. Thus all code
paths and tests that don't load a deck are removed by this patch. If
this is undesireable, there are two options: First, don't require
EclipseState for DerivedGeology which would imply to make the about 10
required multiplier functions part of the
BlackoilPropertiesAdInterface, or second, one can copy-and-paste the
DerivedGeology class as it was before this patch, derive from a newly
introduced DerivedGeologyInterface and pass DerivedGeologyInterface
objects to the simulator. IMHO, the second solution would be a bit
better but it would involve substantial overhead to implement and to
maintain it.

Anyway, in the mean time simulators cannot be instantiated without
decks.
2014-07-24 16:37:38 +02:00
Andreas Lauser
543d8d75b6 pass the DerivedGeology to the simulators
this was decided to be a good idea by [at]bska. (If I interpreted him
correctly, obviously.)
2014-07-24 16:37:38 +02:00
Bård Skaflestad
d2b529296f Merge pull request #169 from atgeirr/update-condition
Update phase condition vector from primary variables.

This resolves #168.
2014-07-23 18:13:30 +02:00
Atgeirr Flø Rasmussen
1faf5da05b Added test to ensure active gas phase. 2014-07-23 11:41:06 +02:00
Joakim Hove
99f1620963 Merge pull request #167 from andlaus/do_not_pass_shared_ptr_to_EclipseWriter
pass a reference to the UnstructuredGrid to EclipseWriter instead of a shared_ptr
2014-07-18 11:51:31 +02:00
Andreas Lauser
8645d2c207 pass the EclipseState and the PhaseUsage objects to EclipseWriter 2014-07-18 11:22:28 +02:00
Atgeirr Flø Rasmussen
92f20c6040 Update phase condition vector from primary variables.
This is necessary as an interim measure, since the phase condition vectors are
still used in property calculations.
2014-07-17 14:34:07 +02:00