mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Fixes for Dune < 2.6.
The PreconditionerFactory requires 2.6, so this is addressed by simply not using that code at all for Dune < 2.6. No FlexibleSolver etc.
This commit is contained in:
parent
38a61fa0c0
commit
72ae444566
@ -164,7 +164,6 @@ list (APPEND PUBLIC_HEADER_FILES
|
|||||||
opm/simulators/linalg/ExtractParallelGridInformationToISTL.hpp
|
opm/simulators/linalg/ExtractParallelGridInformationToISTL.hpp
|
||||||
opm/simulators/linalg/FlexibleSolver.hpp
|
opm/simulators/linalg/FlexibleSolver.hpp
|
||||||
opm/simulators/linalg/FlowLinearSolverParameters.hpp
|
opm/simulators/linalg/FlowLinearSolverParameters.hpp
|
||||||
opm/simulators/linalg/GetQuasiImpesWeights.hpp
|
|
||||||
opm/simulators/linalg/GraphColoring.hpp
|
opm/simulators/linalg/GraphColoring.hpp
|
||||||
opm/simulators/linalg/ISTLSolverEbos.hpp
|
opm/simulators/linalg/ISTLSolverEbos.hpp
|
||||||
opm/simulators/linalg/ISTLSolverEbosCpr.hpp
|
opm/simulators/linalg/ISTLSolverEbosCpr.hpp
|
||||||
@ -172,7 +171,7 @@ list (APPEND PUBLIC_HEADER_FILES
|
|||||||
opm/simulators/linalg/MatrixBlock.hpp
|
opm/simulators/linalg/MatrixBlock.hpp
|
||||||
opm/simulators/linalg/MatrixMarketUtils.hpp
|
opm/simulators/linalg/MatrixMarketUtils.hpp
|
||||||
opm/simulators/linalg/OwningBlockPreconditioner.hpp
|
opm/simulators/linalg/OwningBlockPreconditioner.hpp
|
||||||
opm/simulators/linalg/OwningTwolevelPreconditioner.hpp
|
opm/simulators/linalg/OwningTwoLevelPreconditioner.hpp
|
||||||
opm/simulators/linalg/ParallelOverlappingILU0.hpp
|
opm/simulators/linalg/ParallelOverlappingILU0.hpp
|
||||||
opm/simulators/linalg/ParallelRestrictedAdditiveSchwarz.hpp
|
opm/simulators/linalg/ParallelRestrictedAdditiveSchwarz.hpp
|
||||||
opm/simulators/linalg/ParallelIstlInformation.hpp
|
opm/simulators/linalg/ParallelIstlInformation.hpp
|
||||||
@ -180,6 +179,7 @@ list (APPEND PUBLIC_HEADER_FILES
|
|||||||
opm/simulators/linalg/PressureTransferPolicy.hpp
|
opm/simulators/linalg/PressureTransferPolicy.hpp
|
||||||
opm/simulators/linalg/PreconditionerFactory.hpp
|
opm/simulators/linalg/PreconditionerFactory.hpp
|
||||||
opm/simulators/linalg/PreconditionerWithUpdate.hpp
|
opm/simulators/linalg/PreconditionerWithUpdate.hpp
|
||||||
|
opm/simulators/linalg/getQuasiImpesWeights.hpp
|
||||||
opm/simulators/linalg/setupPropertyTree.hpp
|
opm/simulators/linalg/setupPropertyTree.hpp
|
||||||
opm/simulators/timestepping/AdaptiveSimulatorTimer.hpp
|
opm/simulators/timestepping/AdaptiveSimulatorTimer.hpp
|
||||||
opm/simulators/timestepping/AdaptiveTimeSteppingEbos.hpp
|
opm/simulators/timestepping/AdaptiveTimeSteppingEbos.hpp
|
||||||
|
@ -20,9 +20,12 @@
|
|||||||
*/
|
*/
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "flow/flow_tag.hpp"
|
#include "flow/flow_tag.hpp"
|
||||||
//#include <opm/linearsolvers/amgclsolverbackend.hh>
|
|
||||||
|
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
||||||
#include <opm/simulators/linalg/ISTLSolverEbosFlexible.hpp>
|
#include <opm/simulators/linalg/ISTLSolverEbosFlexible.hpp>
|
||||||
//#include <ewoms/linear/superlubackend.hh>
|
#else
|
||||||
|
#include <opm/simulators/linalg/ISTLSolverEbosCpr.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
BEGIN_PROPERTIES
|
BEGIN_PROPERTIES
|
||||||
NEW_TYPE_TAG(EclFlowProblemSimple, INHERITS_FROM(EclFlowProblem));
|
NEW_TYPE_TAG(EclFlowProblemSimple, INHERITS_FROM(EclFlowProblem));
|
||||||
@ -46,8 +49,8 @@ SET_PROP(EclFlowProblemSimple, FluidState)
|
|||||||
typedef Opm::BlackOilFluidState<Evaluation, FluidSystem, enableTemperature, enableEnergy, compositionSwitchEnabled, Indices::numPhases > type;
|
typedef Opm::BlackOilFluidState<Evaluation, FluidSystem, enableTemperature, enableEnergy, compositionSwitchEnabled, Indices::numPhases > type;
|
||||||
};
|
};
|
||||||
|
|
||||||
SET_BOOL_PROP(EclFlowProblemSimple,MatrixAddWellContributions,true);
|
SET_BOOL_PROP(EclFlowProblemSimple, MatrixAddWellContributions, true);
|
||||||
SET_INT_PROP(EclFlowProblemSimple,LinearSolverVerbosity,0);
|
SET_INT_PROP(EclFlowProblemSimple, LinearSolverVerbosity,0);
|
||||||
SET_SCALAR_PROP(EclFlowProblemSimple, LinearSolverReduction, 1e-2);
|
SET_SCALAR_PROP(EclFlowProblemSimple, LinearSolverReduction, 1e-2);
|
||||||
SET_INT_PROP(EclFlowProblemSimple, LinearSolverMaxIter, 100);
|
SET_INT_PROP(EclFlowProblemSimple, LinearSolverMaxIter, 100);
|
||||||
SET_BOOL_PROP(EclFlowProblemSimple, UseAmg, true);//probably not used
|
SET_BOOL_PROP(EclFlowProblemSimple, UseAmg, true);//probably not used
|
||||||
@ -79,7 +82,11 @@ namespace Ewoms {
|
|||||||
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Ewoms::Linear::ParallelBiCGStabSolverBackend<TypeTag>);//not work
|
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Ewoms::Linear::ParallelBiCGStabSolverBackend<TypeTag>);//not work
|
||||||
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Ewoms::Linear::SuperLUBackend<TypeTag>)//not work
|
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Ewoms::Linear::SuperLUBackend<TypeTag>)//not work
|
||||||
//SET_TAG_PROP(EclFlowProblem, FluidState, Opm::BlackOilFluidState);
|
//SET_TAG_PROP(EclFlowProblem, FluidState, Opm::BlackOilFluidState);
|
||||||
|
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
||||||
SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbosFlexible<TypeTag>);
|
SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbosFlexible<TypeTag>);
|
||||||
|
#else
|
||||||
|
SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbosCpr<TypeTag>);
|
||||||
|
#endif
|
||||||
SET_BOOL_PROP(EclFlowProblemSimple, EnableStorageCache, true);
|
SET_BOOL_PROP(EclFlowProblemSimple, EnableStorageCache, true);
|
||||||
SET_BOOL_PROP(EclFlowProblemSimple, EnableIntensiveQuantityCache, true);
|
SET_BOOL_PROP(EclFlowProblemSimple, EnableIntensiveQuantityCache, true);
|
||||||
|
|
||||||
|
@ -395,9 +395,9 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updatePreconditioner(typename AMGType::Operator& op)
|
void updatePreconditioner()
|
||||||
{
|
{
|
||||||
amg_->updateSolver(crit_, op, comm_);
|
amg_->updateSolver(crit_, op_, comm_);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
||||||
|
@ -50,9 +50,9 @@ namespace Dune
|
|||||||
|
|
||||||
static type* create(const M& mat, bool verbose, bool reusevector )
|
static type* create(const M& mat, bool verbose, bool reusevector )
|
||||||
{
|
{
|
||||||
create(mat, verbose, reusevector, std::integral_constant<bool, isDirectSolver>());
|
return create(mat, verbose, reusevector, std::integral_constant<bool, isDirectSolver>());
|
||||||
}
|
}
|
||||||
static type* create(const M& mat, bool verbose, bool reusevector, std::integral_constant<bool, false> )
|
static type* create(const M& /* mat */, bool /* verbose */, bool /* reusevector */, std::integral_constant<bool, false> )
|
||||||
{
|
{
|
||||||
DUNE_THROW(NotImplemented,"DirectSolver not selected");
|
DUNE_THROW(NotImplemented,"DirectSolver not selected");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -294,7 +294,7 @@ namespace Dune
|
|||||||
* @brief Update the coarse solver and the hierarchies.
|
* @brief Update the coarse solver and the hierarchies.
|
||||||
*/
|
*/
|
||||||
template<class C>
|
template<class C>
|
||||||
void updateSolver(C& criterion, Operator& /* matrix */, const PI& pinfo);
|
void updateSolver(C& criterion, const Operator& /* matrix */, const PI& pinfo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Update the coarse solver and the hierarchies.
|
* @brief Update the coarse solver and the hierarchies.
|
||||||
@ -533,7 +533,7 @@ namespace Dune
|
|||||||
|
|
||||||
template<class M, class X, class S, class PI, class A>
|
template<class M, class X, class S, class PI, class A>
|
||||||
template<class C>
|
template<class C>
|
||||||
void AMGCPR<M,X,S,PI,A>::updateSolver(C& /* criterion */, Operator& /* matrix */, const PI& /* pinfo */)
|
void AMGCPR<M,X,S,PI,A>::updateSolver(C& /* criterion */, const Operator& /* matrix */, const PI& /* pinfo */)
|
||||||
{
|
{
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
#define BOOST_TEST_MODULE OPM_test_FlexibleSolver
|
#define BOOST_TEST_MODULE OPM_test_FlexibleSolver
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
|
#include <dune/common/version.hh>
|
||||||
|
|
||||||
|
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
||||||
|
|
||||||
#include <opm/simulators/linalg/FlexibleSolver.hpp>
|
#include <opm/simulators/linalg/FlexibleSolver.hpp>
|
||||||
|
|
||||||
#include <boost/property_tree/json_parser.hpp>
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
@ -107,3 +111,13 @@ BOOST_AUTO_TEST_CASE(TestFlexibleSolver)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// Do nothing if we do not have at least Dune 2.6.
|
||||||
|
BOOST_AUTO_TEST_CASE(DummyTest)
|
||||||
|
{
|
||||||
|
BOOST_REQUIRE(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
#define BOOST_TEST_MODULE OPM_test_PreconditionerFactory
|
#define BOOST_TEST_MODULE OPM_test_PreconditionerFactory
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
|
#include <dune/common/version.hh>
|
||||||
|
|
||||||
|
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2, 6)
|
||||||
|
|
||||||
#include <opm/simulators/linalg/PreconditionerFactory.hpp>
|
#include <opm/simulators/linalg/PreconditionerFactory.hpp>
|
||||||
#include <opm/simulators/linalg/FlexibleSolver.hpp>
|
#include <opm/simulators/linalg/FlexibleSolver.hpp>
|
||||||
|
|
||||||
@ -213,3 +217,13 @@ BOOST_AUTO_TEST_CASE(TestAddingPreconditioner)
|
|||||||
// Test with 3x3 block solvers.
|
// Test with 3x3 block solvers.
|
||||||
test3(prm);
|
test3(prm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// Do nothing if we do not have at least Dune 2.6.
|
||||||
|
BOOST_AUTO_TEST_CASE(DummyTest)
|
||||||
|
{
|
||||||
|
BOOST_REQUIRE(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user