mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-01-02 12:36:54 -06:00
f9d47b7c68
Make Opm::FlowMainEbos capture the variables argc, argv, outputCout, and outputFiles. Passing the variables to the constructor and saving them as class variables in Opm::FlowMainEbos makes the implementation of the Python interface simpler. For example, the step_init() method does not need to ask Opm::Main about the values of the variables when it needs to run execute() in FlowMainEbos. Another advantage of this refactoring could be that less variables needs to be passed around from Opm::Main, to flow_ebos_xxx.cpp, and then again to FlowMainEbos.
72 lines
2.3 KiB
C++
72 lines
2.3 KiB
C++
/*
|
|
This file is part of the Open Porous Media project (OPM).
|
|
|
|
OPM is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
OPM is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#include "config.h"
|
|
|
|
#include <flow/flow_ebos_brine.hpp>
|
|
|
|
#include <opm/material/common/ResetLocale.hpp>
|
|
#include <opm/grid/CpGrid.hpp>
|
|
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
|
|
#include <opm/simulators/flow/FlowMainEbos.hpp>
|
|
|
|
#if HAVE_DUNE_FEM
|
|
#include <dune/fem/misc/mpimanager.hh>
|
|
#else
|
|
#include <dune/common/parallel/mpihelper.hh>
|
|
#endif
|
|
|
|
namespace Opm {
|
|
namespace Properties {
|
|
NEW_TYPE_TAG(EclFlowBrineProblem, INHERITS_FROM(EclFlowProblem));
|
|
SET_BOOL_PROP(EclFlowBrineProblem, EnableBrine, true);
|
|
}}
|
|
|
|
namespace Opm {
|
|
void flowEbosBrineSetDeck(double setupTime, Deck *deck, EclipseState& eclState, Schedule& schedule, SummaryConfig& summaryConfig)
|
|
{
|
|
typedef TTAG(EclFlowBrineProblem) TypeTag;
|
|
typedef GET_PROP_TYPE(TypeTag, Vanguard) Vanguard;
|
|
|
|
Vanguard::setExternalSetupTime(setupTime);
|
|
Vanguard::setExternalDeck(deck);
|
|
Vanguard::setExternalEclState(&eclState);
|
|
Vanguard::setExternalSchedule(&schedule);
|
|
Vanguard::setExternalSummaryConfig(&summaryConfig);
|
|
}
|
|
|
|
|
|
// ----------------- Main program -----------------
|
|
int flowEbosBrineMain(int argc, char** argv, bool outputCout, bool outputFiles)
|
|
{
|
|
// we always want to use the default locale, and thus spare us the trouble
|
|
// with incorrect locale settings.
|
|
Opm::resetLocale();
|
|
|
|
// initialize MPI, finalize is done automatically on exit
|
|
#if HAVE_DUNE_FEM
|
|
Dune::Fem::MPIManager::initialize(argc, argv);
|
|
#else
|
|
Dune::MPIHelper::instance(argc, argv).rank();
|
|
#endif
|
|
|
|
Opm::FlowMainEbos<TTAG(EclFlowBrineProblem)>
|
|
mainfunc {argc, argv, outputCout, outputFiles};
|
|
return mainfunc.execute();
|
|
}
|
|
|
|
}
|