Ensure that the typetag used for initialization is correct.

Without this, properties set in the static variants of flow such as
flow_blackoil_dunecpr.cpp will be honored in the run. However, the
text for '--help' and the property printout in the .DBG file will not
reflect the true type tag, but the default.

This bug was added during the recent refactoring of all Flow variants
to use the same initialization and setup code.
This commit is contained in:
Atgeirr Flø Rasmussen 2020-05-04 08:52:49 +02:00
parent 87a7fd1962
commit f0b1ee76b8

View File

@ -144,7 +144,7 @@ namespace Opm
int runDynamic() int runDynamic()
{ {
int exitCode = EXIT_SUCCESS; int exitCode = EXIT_SUCCESS;
if (initialize_(exitCode)) { if (initialize_<TTAG(FlowEarlyBird)>(exitCode)) {
return dispatchDynamic_(); return dispatchDynamic_();
} else { } else {
return exitCode; return exitCode;
@ -155,7 +155,7 @@ namespace Opm
int runStatic() int runStatic()
{ {
int exitCode = EXIT_SUCCESS; int exitCode = EXIT_SUCCESS;
if (initialize_(exitCode)) { if (initialize_<TypeTag>(exitCode)) {
return dispatchStatic_<TypeTag>(); return dispatchStatic_<TypeTag>();
} else { } else {
return exitCode; return exitCode;
@ -256,6 +256,7 @@ namespace Opm
return Opm::flowEbosMain<TypeTag>(argc_, argv_, outputCout_, outputFiles_); return Opm::flowEbosMain<TypeTag>(argc_, argv_, outputCout_, outputFiles_);
} }
template <class TypeTagEarlyBird>
bool initialize_(int& exitCode) bool initialize_(int& exitCode)
{ {
Dune::Timer externalSetupTimer; Dune::Timer externalSetupTimer;
@ -285,8 +286,8 @@ namespace Opm
// use a type tag just for parsing the parameters before we instantiate the actual // use a type tag just for parsing the parameters before we instantiate the actual
// simulator object. (Which parses the parameters again, but since this is done in an // simulator object. (Which parses the parameters again, but since this is done in an
// identical manner it does not matter.) // identical manner it does not matter.)
typedef TTAG(FlowEarlyBird) PreTypeTag; typedef TypeTagEarlyBird PreTypeTag;
typedef GET_PROP_TYPE(PreTypeTag, Problem) PreProblem; typedef typename GET_PROP_TYPE(PreTypeTag, Problem) PreProblem;
PreProblem::setBriefDescription("Flow, an advanced reservoir simulator for ECL-decks provided by the Open Porous Media project."); PreProblem::setBriefDescription("Flow, an advanced reservoir simulator for ECL-decks provided by the Open Porous Media project.");
int status = Opm::FlowMainEbos<PreTypeTag>::setupParameters_(argc_, argv_); int status = Opm::FlowMainEbos<PreTypeTag>::setupParameters_(argc_, argv_);