mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
changed: move the EnableStorageCache parameter to Opm::Parameters
This commit is contained in:
@@ -225,10 +225,6 @@ struct InitialTimeStepSize<TypeTag, TTag::LensBaseProblem>
|
|||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct VtkWriteIntrinsicPermeabilities<TypeTag, TTag::LensBaseProblem> { static constexpr bool value = true; };
|
struct VtkWriteIntrinsicPermeabilities<TypeTag, TTag::LensBaseProblem> { static constexpr bool value = true; };
|
||||||
|
|
||||||
// enable the storage cache by default for this problem
|
|
||||||
template<class TypeTag>
|
|
||||||
struct EnableStorageCache<TypeTag, TTag::LensBaseProblem> { static constexpr bool value = true; };
|
|
||||||
|
|
||||||
} // namespace Opm::Properties
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
namespace Opm::Parameters {
|
namespace Opm::Parameters {
|
||||||
@@ -238,6 +234,11 @@ template<class TypeTag>
|
|||||||
struct EnableIntensiveQuantityCache<TypeTag, Properties::TTag::LensBaseProblem>
|
struct EnableIntensiveQuantityCache<TypeTag, Properties::TTag::LensBaseProblem>
|
||||||
{ static constexpr bool value = true; };
|
{ static constexpr bool value = true; };
|
||||||
|
|
||||||
|
// enable the storage cache by default for this problem
|
||||||
|
template<class TypeTag>
|
||||||
|
struct EnableStorageCache<TypeTag, Properties::TTag::LensBaseProblem>
|
||||||
|
{ static constexpr bool value = true; };
|
||||||
|
|
||||||
} // namespace Opm::Parameters
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|||||||
@@ -46,11 +46,6 @@ struct ReservoirNcpVcfvProblem { using InheritsFrom = std::tuple<ReservoirBasePr
|
|||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirNcpVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirNcpVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||||
|
|
||||||
// enable the storage cache for this problem so that the storage cache receives wider
|
|
||||||
// testing
|
|
||||||
template<class TypeTag>
|
|
||||||
struct EnableStorageCache<TypeTag, TTag::ReservoirNcpVcfvProblem> { static constexpr bool value = true; };
|
|
||||||
|
|
||||||
// reduce the base epsilon for the finite difference method to 10^-11. for some reason
|
// reduce the base epsilon for the finite difference method to 10^-11. for some reason
|
||||||
// the simulator converges better with this. (TODO: use automatic differentiation?)
|
// the simulator converges better with this. (TODO: use automatic differentiation?)
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
@@ -60,9 +55,18 @@ struct BaseEpsilon<TypeTag, TTag::ReservoirNcpVcfvProblem>
|
|||||||
static constexpr type value = 1e-11;
|
static constexpr type value = 1e-11;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace Opm::Properties
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
|
namespace Opm::Parameters {
|
||||||
|
|
||||||
|
// enable the storage cache for this problem so that the storage cache receives wider
|
||||||
|
// testing
|
||||||
|
template<class TypeTag>
|
||||||
|
struct EnableStorageCache<TypeTag, Properties::TTag::ReservoirNcpVcfvProblem>
|
||||||
|
{ static constexpr bool value = true; };
|
||||||
|
|
||||||
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
using ProblemTypeTag = Opm::Properties::TTag::ReservoirNcpVcfvProblem;
|
using ProblemTypeTag = Opm::Properties::TTag::ReservoirNcpVcfvProblem;
|
||||||
|
|||||||
@@ -213,10 +213,6 @@ struct Linearizer<TypeTag, TTag::FvBaseDiscretization> { using type = FvBaseLine
|
|||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct VtkOutputFormat<TypeTag, TTag::FvBaseDiscretization> { static constexpr int value = Dune::VTK::ascii; };
|
struct VtkOutputFormat<TypeTag, TTag::FvBaseDiscretization> { static constexpr int value = Dune::VTK::ascii; };
|
||||||
|
|
||||||
// disable caching the storage term by default
|
|
||||||
template<class TypeTag>
|
|
||||||
struct EnableStorageCache<TypeTag, TTag::FvBaseDiscretization> { static constexpr bool value = false; };
|
|
||||||
|
|
||||||
// disable constraints by default
|
// disable constraints by default
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableConstraints<TypeTag, TTag::FvBaseDiscretization> { static constexpr bool value = false; };
|
struct EnableConstraints<TypeTag, TTag::FvBaseDiscretization> { static constexpr bool value = false; };
|
||||||
@@ -347,6 +343,11 @@ template<class TypeTag>
|
|||||||
struct EnableIntensiveQuantityCache<TypeTag, Properties::TTag::FvBaseDiscretization>
|
struct EnableIntensiveQuantityCache<TypeTag, Properties::TTag::FvBaseDiscretization>
|
||||||
{ static constexpr bool value = false; };
|
{ static constexpr bool value = false; };
|
||||||
|
|
||||||
|
// disable caching the storage term by default
|
||||||
|
template<class TypeTag>
|
||||||
|
struct EnableStorageCache<TypeTag, Properties::TTag::FvBaseDiscretization>
|
||||||
|
{ static constexpr bool value = false; };
|
||||||
|
|
||||||
} // namespace Opm::Parameters
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
@@ -467,7 +468,7 @@ public:
|
|||||||
, linearizer_(new Linearizer())
|
, linearizer_(new Linearizer())
|
||||||
, enableGridAdaptation_(Parameters::get<TypeTag, Parameters::EnableGridAdaptation>() )
|
, enableGridAdaptation_(Parameters::get<TypeTag, Parameters::EnableGridAdaptation>() )
|
||||||
, enableIntensiveQuantityCache_(Parameters::get<TypeTag, Parameters::EnableIntensiveQuantityCache>())
|
, enableIntensiveQuantityCache_(Parameters::get<TypeTag, Parameters::EnableIntensiveQuantityCache>())
|
||||||
, enableStorageCache_(Parameters::get<TypeTag, Properties::EnableStorageCache>())
|
, enableStorageCache_(Parameters::get<TypeTag, Parameters::EnableStorageCache>())
|
||||||
, enableThermodynamicHints_(Parameters::get<TypeTag, Properties::EnableThermodynamicHints>())
|
, enableThermodynamicHints_(Parameters::get<TypeTag, Properties::EnableThermodynamicHints>())
|
||||||
{
|
{
|
||||||
bool isEcfv = std::is_same<Discretization, EcfvDiscretization<TypeTag> >::value;
|
bool isEcfv = std::is_same<Discretization, EcfvDiscretization<TypeTag> >::value;
|
||||||
@@ -476,7 +477,7 @@ public:
|
|||||||
"element-centered finite volume discretization (is: "
|
"element-centered finite volume discretization (is: "
|
||||||
+Dune::className<Discretization>()+")");
|
+Dune::className<Discretization>()+")");
|
||||||
|
|
||||||
enableStorageCache_ = Parameters::get<TypeTag, Properties::EnableStorageCache>();
|
enableStorageCache_ = Parameters::get<TypeTag, Parameters::EnableStorageCache>();
|
||||||
|
|
||||||
PrimaryVariables::init();
|
PrimaryVariables::init();
|
||||||
size_t numDof = asImp_().numGridDof();
|
size_t numDof = asImp_().numGridDof();
|
||||||
@@ -530,7 +531,7 @@ public:
|
|||||||
("Enable thermodynamic hints");
|
("Enable thermodynamic hints");
|
||||||
Parameters::registerParam<TypeTag, Parameters::EnableIntensiveQuantityCache>
|
Parameters::registerParam<TypeTag, Parameters::EnableIntensiveQuantityCache>
|
||||||
("Turn on caching of intensive quantities");
|
("Turn on caching of intensive quantities");
|
||||||
Parameters::registerParam<TypeTag, Properties::EnableStorageCache>
|
Parameters::registerParam<TypeTag, Parameters::EnableStorageCache>
|
||||||
("Store previous storage terms and avoid re-calculating them.");
|
("Store previous storage terms and avoid re-calculating them.");
|
||||||
Parameters::registerParam<TypeTag, Parameters::OutputDir>
|
Parameters::registerParam<TypeTag, Parameters::OutputDir>
|
||||||
("The directory to which result files are written");
|
("The directory to which result files are written");
|
||||||
|
|||||||
@@ -30,11 +30,13 @@
|
|||||||
|
|
||||||
#include "fvbaseproperties.hh"
|
#include "fvbaseproperties.hh"
|
||||||
|
|
||||||
#include <opm/models/discretization/common/linearizationtype.hh>
|
|
||||||
#include <opm/models/utils/alignedallocator.hh>
|
|
||||||
|
|
||||||
#include <dune/common/fvector.hh>
|
#include <dune/common/fvector.hh>
|
||||||
|
|
||||||
|
#include <opm/models/discretization/common/fvbaseparameters.hh>
|
||||||
|
#include <opm/models/discretization/common/linearizationtype.hh>
|
||||||
|
|
||||||
|
#include <opm/models/utils/alignedallocator.hh>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
@@ -95,7 +97,7 @@ public:
|
|||||||
{
|
{
|
||||||
// remember the simulator object
|
// remember the simulator object
|
||||||
simulatorPtr_ = &simulator;
|
simulatorPtr_ = &simulator;
|
||||||
enableStorageCache_ = Parameters::get<TypeTag, Properties::EnableStorageCache>();
|
enableStorageCache_ = Parameters::get<TypeTag, Parameters::EnableStorageCache>();
|
||||||
stashedDofIdx_ = -1;
|
stashedDofIdx_ = -1;
|
||||||
focusDofIdx_ = -1;
|
focusDofIdx_ = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,15 @@ struct ContinueOnConvergenceError { using type = Properties::UndefinedProperty;
|
|||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct EnableIntensiveQuantityCache { using type = Properties::UndefinedProperty; };
|
struct EnableIntensiveQuantityCache { using type = Properties::UndefinedProperty; };
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Specify whether the storage terms for previous solutions should be cached.
|
||||||
|
*
|
||||||
|
* This potentially reduces the CPU time, but comes at the cost of higher memory
|
||||||
|
* consumption.
|
||||||
|
*/
|
||||||
|
template<class TypeTag, class MyTypeTag>
|
||||||
|
struct EnableStorageCache { using type = Properties::UndefinedProperty; };
|
||||||
|
|
||||||
} // namespace Opm::Parameters
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -215,15 +215,6 @@ struct VtkOutputFormat { using type = UndefinedProperty; };
|
|||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct EnableConstraints { using type = UndefinedProperty; };
|
struct EnableConstraints { using type = UndefinedProperty; };
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Specify whether the storage terms for previous solutions should be cached.
|
|
||||||
*
|
|
||||||
* This potentially reduces the CPU time, but comes at the cost of higher memory
|
|
||||||
* consumption.
|
|
||||||
*/
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct EnableStorageCache { using type = UndefinedProperty; };
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Specify whether to use the already calculated solutions as
|
* \brief Specify whether to use the already calculated solutions as
|
||||||
* starting values of the intensive quantities.
|
* starting values of the intensive quantities.
|
||||||
|
|||||||
Reference in New Issue
Block a user