The RFTConfig object gained a new data member and constructor
argument, in addition to altering the type of the data member
well_open_rft_name from an unordered_set to an unordered_map.
Update serialization code accordingly.
This commit ensures that the previous solvent restart fix (commit
afba6c8e8, PR #2023) does not attempt to index into the data member
solventSaturation_ unless solvent is activated.
This commit calls the aquifer model's 'initFromRestart' function if
the loadParallelRestart() function happens to return any aquifer
data from the restart file. Such data is currently limited to two
items of information for analytic aquifers (from XAAQ vector), but
future extensions are likely.
This commit adds a new public member function,
EclProblem::mutableAquiferModel()
that returns a read/write reference to the contained EclAquiferModel
object. The immediate use-case is initializing analytic aquifers
from restart data.
This commit adds a new member function,
initFromRestart()
to the EclBaseAquiferModel and the BlackoilAquiferModel. The former
does nothing, the latter calls AquiferInterface::initFromRestart()
on the contained analytic aquifer objects.
This commit adds a new member function,
AquiferInterface::initFromRestart()
that consumes a vector<data::AquiferData> constructed from
information in the restart file's SAAQ and XAAQ vectors. At the
moment, we use the initial aquifer pressure, the total produced
liquid volume and the current aquifer pressure at restart.
We implement the interface's member function in terms of the virtual
function
AquiferInterface::assignRestartData()
that must be overridden in derived classes.
Implement a trivial such function for Carter-Tracy aquifers, and a
function that only stores the current aquifer pressure for the
Fetkovich aquifer model.
Additionally, record whether or not the aquifer object was
initialised from a previous solution. If so, don't reset total
produce liquid volumes or aquifer pressures to their base values
from the model input file.
This commit switches the 'test_ecl_output' unit test to using the
EclIO::ESmry class from OPM-Common. We add simple alternative
implementations of ecl_get_field_var() and ecl_get_general_var() in
terms of ESmry to avoid rewriting the test code itself.
As class ESmry does currently not support reading non-unified
(separate) summary files (.S000n), we temporarily switch the deck to
using unified output.
In particular, the .type() function is renamed to .category(), and
it no longer returns a LibECL type. Similarly, the .num() function
has been renamed to .number().
The output code has an unfriendly error mode in which we
unceremoniously crash--without writing any data--if some declared
array dimensions from RUNSPEC aren't big enough to hold all the
dynamic objects (wells, groups, connections &c).
Verify that the declared dimensions are indeed big enough for the
current simulation run before starting the simulator to ensure that we
don't waste a lot of computational effort if, for instance, the first
output is very close to the end of the simulation.
This commit extends class WellStateFullyImplictBlackoil to report
segment-related quantities as Opm::data::Segment objects (included
in Opm::data::WellRates objects). All wells have at least a top
segment in the context of WellState FIBO, so there is a meaningful
value to report for each well.
We put the extraction of segment-related quantities into a new
helper function
WellStateFullyImplicitBlackoil::reportSegmentResults()
to avoid cluttering up the body of report() more than absolutely
needed.
The primary use-case for this is assigning appropriate values to
items 8 through 11 of restart vector RSEG. In turn, this will
enable restoring these quantities from a restart file.
Forgotten in previous commit. This restores our ability to run
flow-legacy with the new WellStateFullyImplicitBlackoil::report().
Thanks to Kai Bao for alerting me to the issue.
This commit adds a new data member, seg_number_, that maps a linear
segment index (0 .. #segments - 1) to the appropriate segment number
(segment ID). This ensures that member function report() is able to
produce segment results in terms of user-assigned segment numbers
rather than linear indices internal to the simulator and its state
variables. This, in turn, decouples the well state object from the
output (summary/restart) code and makes the restart facility more
self contained.
Rewrite the unit test for WellStateFullyImplicitBlackoil to account
for the new indexing scheme when assigning the synthetic segment
results.
While here, also abide by the file's naming convention for data
members and locals.
This commit extends class WellStateFullyImplictBlackoil to report
segment-related quantities as Opm::data::Segment objects (included
in Opm::data::WellRates objects). All wells have at least a top
segment in the context of WellState FIBO, so there is a meaningful
value to report for each well.
We put the extraction of segment-related quantities into a new
helper function
WellStateFullyImplicitBlackoil::reportSegmentResults()
to avoid cluttering up the body of report() more than absolutely
needed.
The primary use-case for this is assigning appropriate values to
items 8 through 11 of restart vector RSEG. In turn, this will
enable restoring these quantities from a restart file.
Some implementations do not get a transitive definition of class
"ostringstream" in scope through the other headers and therefore
fail to compile the member function
SimulatorReport::reportStep(std::ostringstream&)