mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Tidy Up FlowProblem* Classes
In preparation of enabling the new saturation function consistency checks.
This commit is contained in:
parent
585627295f
commit
92efa31c31
@ -37,8 +37,8 @@
|
|||||||
#include <opm/common/utility/TimeService.hpp>
|
#include <opm/common/utility/TimeService.hpp>
|
||||||
|
|
||||||
#include <opm/input/eclipse/EclipseState/EclipseState.hpp>
|
#include <opm/input/eclipse/EclipseState/EclipseState.hpp>
|
||||||
#include <opm/input/eclipse/Parser/ParserKeywords/E.hpp>
|
|
||||||
#include <opm/input/eclipse/Schedule/Schedule.hpp>
|
#include <opm/input/eclipse/Schedule/Schedule.hpp>
|
||||||
|
#include <opm/input/eclipse/Units/Units.hpp>
|
||||||
|
|
||||||
#include <opm/material/common/ConditionalStorage.hpp>
|
#include <opm/material/common/ConditionalStorage.hpp>
|
||||||
#include <opm/material/common/Valgrind.hpp>
|
#include <opm/material/common/Valgrind.hpp>
|
||||||
@ -72,8 +72,10 @@
|
|||||||
#include <opm/utility/CopyablePtr.hpp>
|
#include <opm/utility/CopyablePtr.hpp>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cstddef>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -224,38 +226,36 @@ public:
|
|||||||
, pffDofData_(simulator.gridView(), this->elementMapper())
|
, pffDofData_(simulator.gridView(), this->elementMapper())
|
||||||
, tracerModel_(simulator)
|
, tracerModel_(simulator)
|
||||||
{
|
{
|
||||||
const auto& vanguard = simulator.vanguard();
|
this->enableDriftCompensation_ = Parameters::Get<Parameters::EnableDriftCompensation>();
|
||||||
|
this->enableVtkOutput_ = Parameters::Get<Parameters::EnableVtkOutput>();
|
||||||
enableDriftCompensation_ = Parameters::Get<Parameters::EnableDriftCompensation>();
|
|
||||||
|
|
||||||
enableVtkOutput_ = Parameters::Get<Parameters::EnableVtkOutput>();
|
|
||||||
|
|
||||||
this->enableTuning_ = Parameters::Get<Parameters::EnableTuning>();
|
this->enableTuning_ = Parameters::Get<Parameters::EnableTuning>();
|
||||||
|
|
||||||
this->initialTimeStepSize_ = Parameters::Get<Parameters::InitialTimeStepSize<Scalar>>();
|
this->initialTimeStepSize_ = Parameters::Get<Parameters::InitialTimeStepSize<Scalar>>();
|
||||||
this->maxTimeStepAfterWellEvent_ = Parameters::Get<Parameters::TimeStepAfterEventInDays<Scalar>>() * 24 * 60 * 60;
|
this->maxTimeStepAfterWellEvent_ = unit::convert::from
|
||||||
|
(Parameters::Get<Parameters::TimeStepAfterEventInDays<Scalar>>(), unit::day);
|
||||||
|
|
||||||
// The value N for this parameter is defined in the following order of presedence:
|
// The value N for this parameter is defined in the following order of precedence:
|
||||||
|
//
|
||||||
// 1. Command line value (--num-pressure-points-equil=N)
|
// 1. Command line value (--num-pressure-points-equil=N)
|
||||||
// 2. EQLDIMS item 2
|
//
|
||||||
// Default value is defined in opm-common/src/opm/input/eclipse/share/keywords/000_Eclipse100/E/EQLDIMS
|
// 2. EQLDIMS item 2. Default value from
|
||||||
if (Parameters::IsSet<Parameters::NumPressurePointsEquil>())
|
// opm-common/opm/input/eclipse/share/keywords/000_Eclipse100/E/EQLDIMS
|
||||||
{
|
|
||||||
this->numPressurePointsEquil_ = Parameters::Get<Parameters::NumPressurePointsEquil>();
|
|
||||||
} else {
|
|
||||||
this->numPressurePointsEquil_ = simulator.vanguard().eclState().getTableManager().getEqldims().getNumDepthNodesP();
|
|
||||||
}
|
|
||||||
|
|
||||||
explicitRockCompaction_ = Parameters::Get<Parameters::ExplicitRockCompaction>();
|
this->numPressurePointsEquil_ = Parameters::IsSet<Parameters::NumPressurePointsEquil>()
|
||||||
|
? Parameters::Get<Parameters::NumPressurePointsEquil>()
|
||||||
|
: simulator.vanguard().eclState().getTableManager().getEqldims().getNumDepthNodesP();
|
||||||
|
|
||||||
|
this->explicitRockCompaction_ = Parameters::Get<Parameters::ExplicitRockCompaction>();
|
||||||
|
|
||||||
RelpermDiagnostics relpermDiagnostics;
|
RelpermDiagnostics relpermDiagnostics{};
|
||||||
relpermDiagnostics.diagnosis(vanguard.eclState(), vanguard.cartesianIndexMapper());
|
relpermDiagnostics.diagnosis(simulator.vanguard().eclState(),
|
||||||
|
simulator.vanguard().cartesianIndexMapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~FlowProblem() = default;
|
virtual ~FlowProblem() = default;
|
||||||
|
|
||||||
void prefetch(const Element& elem) const
|
void prefetch(const Element& elem) const
|
||||||
{ pffDofData_.prefetch(elem); }
|
{ this->pffDofData_.prefetch(elem); }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This method restores the complete state of the problem and its sub-objects
|
* \brief This method restores the complete state of the problem and its sub-objects
|
||||||
|
@ -43,21 +43,25 @@
|
|||||||
|
|
||||||
#include <opm/output/eclipse/EclipseIO.hpp>
|
#include <opm/output/eclipse/EclipseIO.hpp>
|
||||||
|
|
||||||
|
#include <opm/input/eclipse/Units/Units.hpp>
|
||||||
|
|
||||||
|
#include <opm/simulators/flow/ActionHandler.hpp>
|
||||||
#include <opm/simulators/flow/FlowProblem.hpp>
|
#include <opm/simulators/flow/FlowProblem.hpp>
|
||||||
#include <opm/simulators/flow/FlowProblemBlackoilProperties.hpp>
|
#include <opm/simulators/flow/FlowProblemBlackoilProperties.hpp>
|
||||||
#include <opm/simulators/flow/FlowThresholdPressure.hpp>
|
#include <opm/simulators/flow/FlowThresholdPressure.hpp>
|
||||||
|
#include <opm/simulators/flow/MixingRateControls.hpp>
|
||||||
#include <opm/simulators/flow/VtkTracerModule.hpp>
|
#include <opm/simulators/flow/VtkTracerModule.hpp>
|
||||||
|
|
||||||
#include <opm/simulators/flow/MixingRateControls.hpp>
|
|
||||||
|
|
||||||
#include <opm/simulators/flow/ActionHandler.hpp>
|
|
||||||
#if HAVE_DAMARIS
|
#if HAVE_DAMARIS
|
||||||
#include <opm/simulators/flow/DamarisWriter.hpp>
|
#include <opm/simulators/flow/DamarisWriter.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cstddef>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -209,6 +213,7 @@ public:
|
|||||||
// create the ECL writer
|
// create the ECL writer
|
||||||
eclWriter_ = std::make_unique<EclWriterType>(simulator);
|
eclWriter_ = std::make_unique<EclWriterType>(simulator);
|
||||||
enableEclOutput_ = Parameters::Get<Parameters::EnableEclOutput>();
|
enableEclOutput_ = Parameters::Get<Parameters::EnableEclOutput>();
|
||||||
|
|
||||||
#if HAVE_DAMARIS
|
#if HAVE_DAMARIS
|
||||||
// create Damaris writer
|
// create Damaris writer
|
||||||
damarisWriter_ = std::make_unique<DamarisWriterType>(simulator);
|
damarisWriter_ = std::make_unique<DamarisWriterType>(simulator);
|
||||||
@ -224,23 +229,27 @@ public:
|
|||||||
FlowProblemType::beginEpisode();
|
FlowProblemType::beginEpisode();
|
||||||
|
|
||||||
auto& simulator = this->simulator();
|
auto& simulator = this->simulator();
|
||||||
int episodeIdx = simulator.episodeIndex();
|
|
||||||
|
const int episodeIdx = simulator.episodeIndex();
|
||||||
const auto& schedule = simulator.vanguard().schedule();
|
const auto& schedule = simulator.vanguard().schedule();
|
||||||
|
|
||||||
// Evaluate UDQ assign statements to make sure the settings are
|
// Evaluate UDQ assign statements to make sure the settings are
|
||||||
// available as UDA controls for the current report step.
|
// available as UDA controls for the current report step.
|
||||||
actionHandler_.evalUDQAssignments(episodeIdx, simulator.vanguard().udqState());
|
this->actionHandler_
|
||||||
|
.evalUDQAssignments(episodeIdx, simulator.vanguard().udqState());
|
||||||
|
|
||||||
if (episodeIdx >= 0) {
|
if (episodeIdx >= 0) {
|
||||||
const auto& oilVap = schedule[episodeIdx].oilvap();
|
const auto& oilVap = schedule[episodeIdx].oilvap();
|
||||||
if (oilVap.getType() == OilVaporizationProperties::OilVaporization::VAPPARS) {
|
if (oilVap.getType() == OilVaporizationProperties::OilVaporization::VAPPARS) {
|
||||||
FluidSystem::setVapPars(oilVap.vap1(), oilVap.vap2());
|
FluidSystem::setVapPars(oilVap.vap1(), oilVap.vap2());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
FluidSystem::setVapPars(0.0, 0.0);
|
FluidSystem::setVapPars(0.0, 0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ConvectiveMixingModule::beginEpisode(simulator.vanguard().eclState(), simulator.vanguard().schedule(), episodeIdx, moduleParams_.convectiveMixingModuleParam);
|
ConvectiveMixingModule::beginEpisode(simulator.vanguard().eclState(), schedule, episodeIdx,
|
||||||
|
this->moduleParams_.convectiveMixingModuleParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -248,18 +257,21 @@ public:
|
|||||||
*/
|
*/
|
||||||
void finishInit()
|
void finishInit()
|
||||||
{
|
{
|
||||||
// TODO: there should be room to remove duplication for this function,
|
// TODO: there should be room to remove duplication for this
|
||||||
// but there is relatively complicated logic in the function calls in this function
|
// function, but there is relatively complicated logic in the
|
||||||
// some refactoring is needed for this function
|
// function calls here. Some refactoring is needed.
|
||||||
FlowProblemType::finishInit();
|
FlowProblemType::finishInit();
|
||||||
|
|
||||||
auto& simulator = this->simulator();
|
auto& simulator = this->simulator();
|
||||||
|
|
||||||
auto finishTransmissibilities = [updated = false, this]() mutable
|
auto finishTransmissibilities = [updated = false, this]() mutable
|
||||||
{
|
{
|
||||||
if (updated) { return; }
|
if (updated) { return; }
|
||||||
|
|
||||||
this->transmissibilities_.finishInit([&vg = this->simulator().vanguard()](const unsigned int it) {
|
this->transmissibilities_.finishInit([&vg = this->simulator().vanguard()](const unsigned int it) {
|
||||||
return vg.gridIdxToEquilGridIdx(it);
|
return vg.gridIdxToEquilGridIdx(it);
|
||||||
});
|
});
|
||||||
|
|
||||||
updated = true;
|
updated = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -279,7 +291,8 @@ public:
|
|||||||
std::function<unsigned int(unsigned int)> equilGridToGrid = [&simulator](unsigned int i) {
|
std::function<unsigned int(unsigned int)> equilGridToGrid = [&simulator](unsigned int i) {
|
||||||
return simulator.vanguard().gridEquilIdxToGridIdx(i);
|
return simulator.vanguard().gridEquilIdxToGridIdx(i);
|
||||||
};
|
};
|
||||||
eclWriter_->extractOutputTransAndNNC(equilGridToGrid);
|
|
||||||
|
this->eclWriter_->extractOutputTransAndNNC(equilGridToGrid);
|
||||||
}
|
}
|
||||||
simulator.vanguard().releaseGlobalTransmissibilities();
|
simulator.vanguard().releaseGlobalTransmissibilities();
|
||||||
|
|
||||||
@ -301,10 +314,12 @@ public:
|
|||||||
// disables gravity, else the standard value of the gravity constant at sea level
|
// disables gravity, else the standard value of the gravity constant at sea level
|
||||||
// on earth is used
|
// on earth is used
|
||||||
this->gravity_ = 0.0;
|
this->gravity_ = 0.0;
|
||||||
if (Parameters::Get<Parameters::EnableGravity>())
|
if (Parameters::Get<Parameters::EnableGravity>() &&
|
||||||
this->gravity_[dim - 1] = 9.80665;
|
eclState.getInitConfig().hasGravity())
|
||||||
if (!eclState.getInitConfig().hasGravity())
|
{
|
||||||
this->gravity_[dim - 1] = 0.0;
|
// unit::gravity is 9.80665 m^2/s--i.e., standard measure at Tellus equator.
|
||||||
|
this->gravity_[dim - 1] = unit::gravity;
|
||||||
|
}
|
||||||
|
|
||||||
if (this->enableTuning_) {
|
if (this->enableTuning_) {
|
||||||
// if support for the TUNING keyword is enabled, we get the initial time
|
// if support for the TUNING keyword is enabled, we get the initial time
|
||||||
@ -316,8 +331,6 @@ public:
|
|||||||
|
|
||||||
this->initFluidSystem_();
|
this->initFluidSystem_();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx) &&
|
if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx) &&
|
||||||
FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) {
|
FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) {
|
||||||
this->maxOilSaturation_.resize(this->model().numGridDof(), 0.0);
|
this->maxOilSaturation_.resize(this->model().numGridDof(), 0.0);
|
||||||
@ -333,22 +346,25 @@ public:
|
|||||||
}
|
}
|
||||||
return coords;
|
return coords;
|
||||||
});
|
});
|
||||||
|
|
||||||
this->readMaterialParameters_();
|
this->readMaterialParameters_();
|
||||||
this->readThermalParameters_();
|
this->readThermalParameters_();
|
||||||
|
|
||||||
// write the static output files (EGRID, INIT)
|
// write the static output files (EGRID, INIT)
|
||||||
if (enableEclOutput_) {
|
if (enableEclOutput_) {
|
||||||
eclWriter_->writeInit();
|
this->eclWriter_->writeInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
finishTransmissibilities();
|
finishTransmissibilities();
|
||||||
|
|
||||||
const auto& initconfig = eclState.getInitConfig();
|
const auto& initconfig = eclState.getInitConfig();
|
||||||
this->tracerModel_.init(initconfig.restartRequested());
|
this->tracerModel_.init(initconfig.restartRequested());
|
||||||
if (initconfig.restartRequested())
|
if (initconfig.restartRequested()) {
|
||||||
readEclRestartSolution_();
|
this->readEclRestartSolution_();
|
||||||
else
|
}
|
||||||
readInitialCondition_();
|
else {
|
||||||
|
this->readInitialCondition_();
|
||||||
|
}
|
||||||
|
|
||||||
this->tracerModel_.prepareTracerBatches();
|
this->tracerModel_.prepareTracerBatches();
|
||||||
|
|
||||||
@ -357,14 +373,14 @@ public:
|
|||||||
if constexpr (getPropValue<TypeTag, Properties::EnablePolymer>()) {
|
if constexpr (getPropValue<TypeTag, Properties::EnablePolymer>()) {
|
||||||
const auto& vanguard = this->simulator().vanguard();
|
const auto& vanguard = this->simulator().vanguard();
|
||||||
const auto& gridView = vanguard.gridView();
|
const auto& gridView = vanguard.gridView();
|
||||||
int numElements = gridView.size(/*codim=*/0);
|
const int numElements = gridView.size(/*codim=*/0);
|
||||||
this->polymer_.maxAdsorption.resize(numElements, 0.0);
|
this->polymer_.maxAdsorption.resize(numElements, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->readBoundaryConditions_();
|
this->readBoundaryConditions_();
|
||||||
|
|
||||||
// compute and set eq weights based on initial b values
|
// compute and set eq weights based on initial b values
|
||||||
computeAndSetEqWeights_();
|
this->computeAndSetEqWeights_();
|
||||||
|
|
||||||
if (this->enableDriftCompensation_) {
|
if (this->enableDriftCompensation_) {
|
||||||
this->drift_.resize(this->model().numGridDof());
|
this->drift_.resize(this->model().numGridDof());
|
||||||
@ -386,10 +402,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: move to the end for later refactoring of the function finishInit()
|
// TODO: move to the end for later refactoring of the function finishInit()
|
||||||
// deal with DRSDT
|
//
|
||||||
|
// deal with DRSDT
|
||||||
this->mixControls_.init(this->model().numGridDof(),
|
this->mixControls_.init(this->model().numGridDof(),
|
||||||
this->episodeIndex(),
|
this->episodeIndex(),
|
||||||
eclState.runspec().tabdims().getNumPVTTables());
|
eclState.runspec().tabdims().getNumPVTTables());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -20,10 +20,20 @@
|
|||||||
module for the precise wording of the license and the list of
|
module for the precise wording of the license and the list of
|
||||||
copyright holders.
|
copyright holders.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#define BOOST_TEST_MODULE Equil
|
#define BOOST_TEST_MODULE Equil
|
||||||
|
|
||||||
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
#if (BOOST_VERSION / 100000 == 1) && ((BOOST_VERSION / 100) % 1000 < 71)
|
||||||
|
#include <boost/test/floating_point_comparison.hpp>
|
||||||
|
#else
|
||||||
|
#include <boost/test/tools/floating_point_comparison.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <opm/grid/UnstructuredGrid.h>
|
#include <opm/grid/UnstructuredGrid.h>
|
||||||
#include <opm/grid/GridManager.hpp>
|
#include <opm/grid/GridManager.hpp>
|
||||||
#include <opm/grid/cpgrid/GridHelpers.hpp>
|
#include <opm/grid/cpgrid/GridHelpers.hpp>
|
||||||
@ -58,42 +68,37 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <boost/test/unit_test.hpp>
|
|
||||||
#include <boost/version.hpp>
|
|
||||||
#if BOOST_VERSION / 100000 == 1 && BOOST_VERSION / 100 % 1000 < 71
|
|
||||||
#include <boost/test/floating_point_comparison.hpp>
|
|
||||||
#else
|
|
||||||
#include <boost/test/tools/floating_point_comparison.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
|
|
||||||
namespace TTag {
|
namespace TTag {
|
||||||
|
|
||||||
|
|
||||||
struct TestEquilTypeTag {
|
struct TestEquilTypeTag {
|
||||||
using InheritsFrom = std::tuple<FlowBaseProblemBlackoil,
|
using InheritsFrom = std::tuple<FlowBaseProblemBlackoil,
|
||||||
BlackOilModel>;
|
BlackOilModel>;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TestEquilVapwatTypeTag {
|
struct TestEquilVapwatTypeTag {
|
||||||
using InheritsFrom = std::tuple<FlowBaseProblemBlackoil,
|
using InheritsFrom = std::tuple<FlowBaseProblemBlackoil,
|
||||||
BlackOilModel>;
|
BlackOilModel>;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
} // namespace TTag
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct WellModel<TypeTag, TTag::TestEquilTypeTag> {
|
struct WellModel<TypeTag, TTag::TestEquilTypeTag> {
|
||||||
using type = BlackoilWellModel<TypeTag>;
|
using type = BlackoilWellModel<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableVapwat<TypeTag, TTag::TestEquilTypeTag> {
|
struct EnableVapwat<TypeTag, TTag::TestEquilTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct WellModel<TypeTag, TTag::TestEquilVapwatTypeTag> {
|
struct WellModel<TypeTag, TTag::TestEquilVapwatTypeTag> {
|
||||||
using type = BlackoilWellModel<TypeTag>;
|
using type = BlackoilWellModel<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableVapwat<TypeTag, TTag::TestEquilVapwatTypeTag> {
|
struct EnableVapwat<TypeTag, TTag::TestEquilVapwatTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
@ -101,18 +106,19 @@ struct EnableVapwat<TypeTag, TTag::TestEquilVapwatTypeTag> {
|
|||||||
|
|
||||||
} // namespace Opm::Properties
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
std::unique_ptr<Opm::GetPropType<TypeTag, Opm::Properties::Simulator>>
|
std::unique_ptr<Opm::GetPropType<TypeTag, Opm::Properties::Simulator>>
|
||||||
initSimulator(const char *filename)
|
initSimulator(const char *filename)
|
||||||
{
|
{
|
||||||
using Simulator = Opm::GetPropType<TypeTag, Opm::Properties::Simulator>;
|
using Simulator = Opm::GetPropType<TypeTag, Opm::Properties::Simulator>;
|
||||||
|
|
||||||
std::string filenameArg = "--ecl-deck-file-name=";
|
const auto filenameArg = std::string {"--ecl-deck-file-name="} + filename;
|
||||||
filenameArg += filename;
|
|
||||||
|
|
||||||
const char* argv[] = {
|
const char* argv[] = {
|
||||||
"test_equil",
|
"test_equil",
|
||||||
filenameArg.c_str()
|
filenameArg.c_str(),
|
||||||
};
|
};
|
||||||
|
|
||||||
Opm::setupParameters_<TypeTag>(/*argc=*/sizeof(argv)/sizeof(argv[0]), argv, /*registerParams=*/false);
|
Opm::setupParameters_<TypeTag>(/*argc=*/sizeof(argv)/sizeof(argv[0]), argv, /*registerParams=*/false);
|
||||||
@ -123,7 +129,8 @@ initSimulator(const char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class GridView>
|
template <class GridView>
|
||||||
static std::vector<std::pair<double,double>> cellVerticalExtent(const GridView& gridView)
|
std::vector<std::pair<double,double>>
|
||||||
|
cellVerticalExtent(const GridView& gridView)
|
||||||
{
|
{
|
||||||
using ElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
|
using ElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
|
||||||
ElementMapper elemMapper(gridView, Dune::mcmgElementLayout());
|
ElementMapper elemMapper(gridView, Dune::mcmgElementLayout());
|
||||||
@ -142,7 +149,7 @@ static std::vector<std::pair<double,double>> cellVerticalExtent(const GridView&
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
static void initDefaultFluidSystem()
|
void initDefaultFluidSystem()
|
||||||
{
|
{
|
||||||
using FluidSystem = Opm::GetPropType<TypeTag, Opm::Properties::FluidSystem>;
|
using FluidSystem = Opm::GetPropType<TypeTag, Opm::Properties::FluidSystem>;
|
||||||
|
|
||||||
@ -207,11 +214,12 @@ static void initDefaultFluidSystem()
|
|||||||
FluidSystem::initEnd();
|
FluidSystem::initEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
static Opm::EquilRecord mkEquilRecord( double datd, double datp,
|
Opm::EquilRecord
|
||||||
double zwoc, double pcow_woc,
|
mkEquilRecord(const double datd, const double datp,
|
||||||
double zgoc, double pcgo_goc )
|
const double zwoc, const double pcow_woc,
|
||||||
|
const double zgoc, const double pcgo_goc)
|
||||||
{
|
{
|
||||||
return Opm::EquilRecord( datd, datp, zwoc, pcow_woc, zgoc, pcgo_goc, true, true, 0, true);
|
return { datd, datp, zwoc, pcow_woc, zgoc, pcgo_goc, true, true, 0, true};
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Simulator>
|
template <typename Simulator>
|
||||||
@ -220,8 +228,6 @@ double centerDepth(const Simulator& sim, const std::size_t cell)
|
|||||||
return Opm::UgGridHelpers::cellCenterDepth(sim.vanguard().grid(), cell);
|
return Opm::UgGridHelpers::cellCenterDepth(sim.vanguard().grid(), cell);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
struct EquilFixture {
|
struct EquilFixture {
|
||||||
EquilFixture() {
|
EquilFixture() {
|
||||||
int argc = boost::unit_test::framework::master_test_suite().argc;
|
int argc = boost::unit_test::framework::master_test_suite().argc;
|
||||||
@ -253,7 +259,7 @@ struct EquilFixture {
|
|||||||
CartesianIndexMapper>;
|
CartesianIndexMapper>;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // Anonymous namespace
|
||||||
|
|
||||||
BOOST_GLOBAL_FIXTURE(EquilFixture);
|
BOOST_GLOBAL_FIXTURE(EquilFixture);
|
||||||
|
|
||||||
@ -845,7 +851,6 @@ BOOST_AUTO_TEST_CASE(DeckWithCO2STORE)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(DeckWithWetGas)
|
BOOST_AUTO_TEST_CASE(DeckWithWetGas)
|
||||||
{
|
{
|
||||||
using TypeTag = Opm::Properties::TTag::TestEquilTypeTag;
|
using TypeTag = Opm::Properties::TTag::TestEquilTypeTag;
|
||||||
|
Loading…
Reference in New Issue
Block a user