This commit replaces the existing system for writing summary and
specification (SMSPEC) files with a new implementation based on
class EclOutput. We package the evaluators of individual parameters
in a set of classes determined by the parameter's category which
each implement a virtual 'update()' function. This update function
ultimately writes new values into a SummaryState object.
Add a factory-like system for instantiating the appropriate class
depending on a SummaryNode's 'category()'. Also, add a helper class
for managing the parameters that a configured in a simulation
model's SUMMARY section in order to distinguish these from those
parameters that are merely needed for restart purposes. The summary
class's 'eval()' function then becomes a loop over the evaluators
for parameters in SUMMARY followed by a loop over the evaluators for
restart vectors.
We reimplement the 'internal_store()' function in terms of an
std::vector of a helper structure 'MiniStep' which holds a ministep
ID (contiguous counter started at zero), a report step ID, and all
the evaluated parameters of this ministep. The final write function
then consists of outputting those ministep structures that have
accumulated since the previous call to write(). If a simulation
does not call write at all, then this will accumulate all parameters
for all ministeps throughout the simulation history.
We create the SMSPEC file at most once, and write to it at most each
report step. We create the summary file once (if unified) or at
each report step (if separate).
Needed to ensure we create the same summary/specification files as
the existing system. We will revert this change once the new system
is in place and we can afford to update the reference solutions.
Flow's saturation function finalizers don't currently handle models
with fewer than three active phases. Don't attempt to fill in
scaled endpoint vectors in this case, but issue a warning that we're
ignoring FILLEPS here.
The summary file must have DAYS (&c) for its TIME vector unit. This
is a step towards enabling new summary writer functionality.
Update the RFT writer accordingly.
This commit adds a single function, createSummaryFile, that opens an
EclOutput object on a file named as an ECLIPSE summary file
(formatted vs. unformatted, unified vs. separate) and returns a
unique_ptr to this.
This is a step towards enabling new summary writer functionality.
This commit extends Flow's support for separate restart files to
more than 10,000 report steps (not necessarily restart steps). In
particular, add support for generating separate restart files named
CASE.X000n, CASE.Y000n, CASE.Z000n (unformatted)
CASE.F000n, CASE.G000n, CASE.H000n (formatted)
This is mostly for completeness. We do not really expect to run
simulation models with more than 10,000 (or 20,000) report steps.
This commit pulls the 'well_efficiency_factor' function into
Summary.cpp's private/anonymous namespace. In addition to being a
step towards enabling new writer code for Flow's summary file, this
also fixes a "no previous declaration" warning on GCC.
This commit pulls the table of evaluation functions out of the Opm
namespace and into the existing anonymous namespace of Summary.cpp.
This is an intermediate step towards enabling new writer code for
Flow's summary files.