This is in preparation of making the match set for ACTIONX more
general. Having a fully private WELPI framework means we can change
the types more freely without having to rebuild all users of
ActionHandler.
While here, also add Doxygen-style documentation to the ActionHandler.
we do the compostional related in GenericOutputBlackoilModule to minimize the code change.
there needs to be refatoring for GenericOutputBlackoilModule to split
the black oil and compostional related.
currently, it looks the value for ZMF is based on XMF and YMF.
ideally, the ZMF is part of the primary varialbes, it does not need to
be calculated based on XMF and YMF.
there is some refactoring that we can do here.
so the FlowProblemComp can output ecl style output.
it duplicates the OutputBlackoilModule and GenericOutputBlackoilModule
for compositional related output for now.
The new parameter CheckSatfuncConsistency, command line option
--check-satfunc-consistency, allows users to opt into running the
checks. The option currently defaults to 'false' to reflect the
somewhat experimental nature of the new facility.
The new parameter --num-satfunc-consistency-sample-points allows the
user to select the maximum number of reported failures for each
individual consistency check. By default, the simulator will report
at most five failures for each check.
We check the unscaled curves if the run does not activate the
end-point scaling option and the scaled curves otherwise. At
present we're limited to reversible and non-directional saturation
functions for the drainage process, but those restrictions will be
lifted in due time.
The 'globalIdx' generated by localIdxToGlobalIdx() is in the range
zero to number of active cells in global model, not zero to number
of active cells on rank. Using 'globalIdx' as an argument to
set*TracerConcentration() therefore ends up indexing out-of-bounds
for the internal arrays in the tracer model object in parallel
restarted simulation runs.
The problem has been present since the restart support for tracers
was added in commit e9c45f4ca (PR #3708).
This commit switches to using the 'elemIdx' instead, as we already
do when calling the output module's setRestart() member function.
Following this, we are able to restart the standard Norne benchmark
case (NORNE_ATW2013.DATA) in parallel. The numerical results for
the tracer concentrations are, however, a little questionable and
will warrant further investigation. Nevertheless, the tracer values
are now the same in a parallel restarted run as in a sequential
restarted run.
Commit 6ba9dc086 (PR #5626) moved the balance sheet report output
logic ahead of the timestep. As a consequence, the output module's
'inplace_' and 'initialInplace_' data members must be fully
initialised the first time we call 'writeReports()' if the run
requests balance sheet output.
This commit initialises those objects by calling calc_inplace() from
EclWriter<>::endRestart(). Doing so restores the behaviour from
before PR #5626. Note, however, that using this value for
'initialInplace_' is incorrect as the simulator then, in a restarted
run, will calculate recovery factors based on the fluid distribution
at the restart time instead of at the start of the base run.
Nevertheless this is, as alluded to earlier, how the simulator has
always performed. The behaviour is just a little more explicit now.
In particular,
- Split some long lines
- Mark objects 'const' where possible
- Reduce scope of objects
- Add braces to single statement control structures
- Prefer pre-increment
- Prefer type deduction for induction variables