changed: remove SET_TYPE_PROP macro usage

This commit is contained in:
Arne Morten Kvarving 2020-08-27 11:38:38 +02:00
parent 93a3ebf8f7
commit 3b21a8a481
8 changed files with 105 additions and 26 deletions

View File

@ -50,7 +50,10 @@ struct EbosTypeTag {
}
// Set the problem class
SET_TYPE_PROP(EbosTypeTag, Problem, Opm::EbosProblem<TypeTag>);
template<class TypeTag>
struct Problem<TypeTag, TTag::EbosTypeTag> {
using type = Opm::EbosProblem<TypeTag>;
};
// Enable experimental features for ebos: ebos is the research simulator of the OPM
// project. If you're looking for a more stable "production quality" simulator, consider
@ -61,7 +64,10 @@ struct EnableExperiments<TypeTag, TTag::EbosTypeTag> {
};
// use flow's well model for now
SET_TYPE_PROP(EbosTypeTag, EclWellModel, Opm::BlackoilWellModel<TypeTag>);
template<class TypeTag>
struct EclWellModel<TypeTag, TTag::EbosTypeTag> {
using type = Opm::BlackoilWellModel<TypeTag>;
};
// currently, ebos uses the non-multisegment well model by default to avoid
// regressions. the --use-multisegment-well=true|false command line parameter is still
@ -95,7 +101,10 @@ struct UseVolumetricResidual<TypeTag, TTag::EbosTypeTag> {
};
// by default use flow's aquifer model for now
SET_TYPE_PROP(EbosTypeTag, EclAquiferModel, Opm::BlackoilAquiferModel<TypeTag>);
template<class TypeTag>
struct EclAquiferModel<TypeTag, TTag::EbosTypeTag> {
using type = Opm::BlackoilAquiferModel<TypeTag>;
};
// use flow's linear solver backend for now
SET_TAG_PROP(EbosTypeTag, LinearSolverSplice, FlowIstlSolver);

View File

@ -49,9 +49,18 @@ struct EclAluGridVanguard {
}
// declare the properties
SET_TYPE_PROP(EclAluGridVanguard, Vanguard, Opm::EclAluGridVanguard<TypeTag>);
SET_TYPE_PROP(EclAluGridVanguard, Grid, Dune::ALUGrid<3, 3, Dune::cube, Dune::nonconforming>);
SET_TYPE_PROP(EclAluGridVanguard, EquilGrid, Dune::CpGrid);
template<class TypeTag>
struct Vanguard<TypeTag, TTag::EclAluGridVanguard> {
using type = Opm::EclAluGridVanguard<TypeTag>;
};
template<class TypeTag>
struct Grid<TypeTag, TTag::EclAluGridVanguard> {
using type = Dune::ALUGrid<3, 3, Dune::cube, Dune::nonconforming>;
};
template<class TypeTag>
struct EquilGrid<TypeTag, TTag::EclAluGridVanguard> {
using type = Dune::CpGrid;
};
} // namespace Opm::Properties

View File

@ -56,9 +56,18 @@ struct EclCpGridVanguard {
}
// declare the properties
SET_TYPE_PROP(EclCpGridVanguard, Vanguard, Opm::EclCpGridVanguard<TypeTag>);
SET_TYPE_PROP(EclCpGridVanguard, Grid, Dune::CpGrid);
SET_TYPE_PROP(EclCpGridVanguard, EquilGrid, GetPropType<TypeTag, Properties::Grid>);
template<class TypeTag>
struct Vanguard<TypeTag, TTag::EclCpGridVanguard> {
using type = Opm::EclCpGridVanguard<TypeTag>;
};
template<class TypeTag>
struct Grid<TypeTag, TTag::EclCpGridVanguard> {
using type = Dune::CpGrid;
};
template<class TypeTag>
struct EquilGrid<TypeTag, TTag::EclCpGridVanguard> {
using type = GetPropType<TypeTag, Properties::Grid>;
};
} // namespace Opm::Properties

View File

@ -46,9 +46,18 @@ struct EclPolyhedralGridVanguard {
}
// declare the properties
SET_TYPE_PROP(EclPolyhedralGridVanguard, Vanguard, Opm::EclPolyhedralGridVanguard<TypeTag>);
SET_TYPE_PROP(EclPolyhedralGridVanguard, Grid, Dune::PolyhedralGrid<3, 3>);
SET_TYPE_PROP(EclPolyhedralGridVanguard, EquilGrid, GetPropType<TypeTag, Properties::Grid>);
template<class TypeTag>
struct Vanguard<TypeTag, TTag::EclPolyhedralGridVanguard> {
using type = Opm::EclPolyhedralGridVanguard<TypeTag>;
};
template<class TypeTag>
struct Grid<TypeTag, TTag::EclPolyhedralGridVanguard> {
using type = Dune::PolyhedralGrid<3, 3>;
};
template<class TypeTag>
struct EquilGrid<TypeTag, TTag::EclPolyhedralGridVanguard> {
using type = GetPropType<TypeTag, Properties::Grid>;
};
} // namespace Opm::Properties

View File

@ -213,7 +213,10 @@ struct OutputMode {
};
// Set the problem property
SET_TYPE_PROP(EclBaseProblem, Problem, Opm::EclProblem<TypeTag>);
template<class TypeTag>
struct Problem<TypeTag, TTag::EclBaseProblem> {
using type = Opm::EclProblem<TypeTag>;
};
// Select the element centered finite volume method as spatial discretization
SET_TAG_PROP(EclBaseProblem, SpatialDiscretizationSplice, EcfvDiscretization);
@ -285,10 +288,16 @@ public:
};
// by default use the dummy aquifer "model"
SET_TYPE_PROP(EclBaseProblem, EclAquiferModel, Opm::EclBaseAquiferModel<TypeTag>);
template<class TypeTag>
struct EclAquiferModel<TypeTag, TTag::EclBaseProblem> {
using type = Opm::EclBaseAquiferModel<TypeTag>;
};
// use the built-in proof of concept well model by default
SET_TYPE_PROP(EclBaseProblem, EclWellModel, EclWellManager<TypeTag>);
template<class TypeTag>
struct EclWellModel<TypeTag, TTag::EclBaseProblem> {
using type = EclWellManager<TypeTag>;
};
// Enable aquifers by default in experimental mode
template<class TypeTag>
@ -452,14 +461,23 @@ struct EnableStorageCache<TypeTag, TTag::EclBaseProblem> {
};
// Use the "velocity module" which uses the Eclipse "NEWTRAN" transmissibilities
SET_TYPE_PROP(EclBaseProblem, FluxModule, Opm::EclTransFluxModule<TypeTag>);
template<class TypeTag>
struct FluxModule<TypeTag, TTag::EclBaseProblem> {
using type = Opm::EclTransFluxModule<TypeTag>;
};
// Use the dummy gradient calculator in order not to do unnecessary work.
SET_TYPE_PROP(EclBaseProblem, GradientCalculator, Opm::EclDummyGradientCalculator<TypeTag>);
template<class TypeTag>
struct GradientCalculator<TypeTag, TTag::EclBaseProblem> {
using type = Opm::EclDummyGradientCalculator<TypeTag>;
};
// Use a custom Newton-Raphson method class for ebos in order to attain more
// sophisticated update and error computation mechanisms
SET_TYPE_PROP(EclBaseProblem, NewtonMethod, Opm::EclNewtonMethod<TypeTag>);
template<class TypeTag>
struct NewtonMethod<TypeTag, TTag::EclBaseProblem> {
using type = Opm::EclNewtonMethod<TypeTag>;
};
// The frequency of writing restart (*.ers) files. This is the number of time steps
// between writing restart files

View File

@ -97,13 +97,29 @@ namespace Opm {
// using InheritsFrom = std::tuple<EclBaseProblem, BlackOilModel>;
// };
// }
SET_TYPE_PROP(EclFlowProblemSimple, IntensiveQuantities, Opm::BlackOilIntensiveQuantities<TypeTag>);
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbos<TypeTag>);
template<class TypeTag>
struct IntensiveQuantities<TypeTag, TTag::EclFlowProblemSimple> {
using type = Opm::BlackOilIntensiveQuantities<TypeTag>;
};
// template<class TypeTag>
// struct LinearSolverBackend<TypeTag, TTag::EclFlowProblemSimple> {
// using type = Opm::ISTLSolverEbos<TypeTag>;
// };
//SET_TAG_PROP(EclFlowProblemSimple, LinearSolverSplice, ParallelBiCGStabLinearSolver);
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::Linear::ParallelBiCGStabSolverBackend<TypeTag>);//not work
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::Linear::SuperLUBackend<TypeTag>)//not work
// template<class TypeTag>
// struct LinearSolverBackend<TypeTag, TTag::EclFlowProblemSimple> {
// using type = Opm::Linear::ParallelBiCGStabSolverBackend<TypeTag>; // not work
// };
// template<class TypeTag>
// struct LinearSolverBackend<TypeTag, TTag::EclFlowProblemSimple> {
// using type = Opm::Linear::SuperLUBackend<TypeTag>; // not work
// };
//SET_TAG_PROP(EclFlowProblem, FluidState, Opm::BlackOilFluidState);
SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbosFlexible<TypeTag>);
template<class TypeTag>
struct LinearSolverBackend<TypeTag, TTag::EclFlowProblemSimple> {
using type = Opm::ISTLSolverEbosFlexible<TypeTag>;
};
template<class TypeTag>
struct EnableStorageCache<TypeTag, TTag::EclFlowProblemSimple> {
static constexpr bool value = true;

View File

@ -95,7 +95,10 @@ struct UseVolumetricResidual<TypeTag, TTag::EclFlowProblem> {
static constexpr bool value = false;
};
SET_TYPE_PROP(EclFlowProblem, EclAquiferModel, Opm::BlackoilAquiferModel<TypeTag>);
template<class TypeTag>
struct EclAquiferModel<TypeTag, TTag::EclFlowProblem> {
using type = Opm::BlackoilAquiferModel<TypeTag>;
};
// disable all extensions supported by black oil model. this should not really be
// necessary but it makes things a bit more explicit
@ -124,7 +127,10 @@ struct EnableBrine<TypeTag, TTag::EclFlowProblem> {
static constexpr bool value = false;
};
SET_TYPE_PROP(EclFlowProblem, EclWellModel, Opm::BlackoilWellModel<TypeTag>);
template<class TypeTag>
struct EclWellModel<TypeTag, TTag::EclFlowProblem> {
using type = Opm::BlackoilWellModel<TypeTag>;
};
SET_TAG_PROP(EclFlowProblem, LinearSolverSplice, FlowIstlSolver);
} // namespace Opm::Properties

View File

@ -212,7 +212,10 @@ template<class TypeTag>
struct UseCpr<TypeTag, TTag::FlowIstlSolverParams> {
static constexpr bool value = false;
};
SET_TYPE_PROP(FlowIstlSolverParams, LinearSolverBackend, Opm::ISTLSolverEbos<TypeTag>);
template<class TypeTag>
struct LinearSolverBackend<TypeTag, TTag::FlowIstlSolverParams> {
using type = Opm::ISTLSolverEbos<TypeTag>;
};
template<class TypeTag>
struct PreconditionerAddWellContributions<TypeTag, TTag::FlowIstlSolverParams> {
static constexpr bool value = false;