mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-28 18:21:00 -06:00
renaming ebos for flowexp usage
This commit is contained in:
parent
d2ce814eae
commit
d381d06d7a
@ -25,8 +25,8 @@
|
|||||||
*
|
*
|
||||||
* \brief The common settings for all ebos variants.
|
* \brief The common settings for all ebos variants.
|
||||||
*/
|
*/
|
||||||
#ifndef EBOS_HH
|
#ifndef FLOW_EXP_HPP
|
||||||
#define EBOS_HH
|
#define FLOW_EXP_HPP
|
||||||
|
|
||||||
#include <opm/simulators/flow/FlowProblem.hpp>
|
#include <opm/simulators/flow/FlowProblem.hpp>
|
||||||
#include <opm/simulators/flow/FlowProblemProperties.hpp>
|
#include <opm/simulators/flow/FlowProblemProperties.hpp>
|
||||||
@ -41,39 +41,39 @@
|
|||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class EbosProblem;
|
class FlowExpProblem;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
|
|
||||||
namespace TTag {
|
namespace TTag {
|
||||||
struct EbosTypeTag {
|
struct FlowExpTypeTag {
|
||||||
using InheritsFrom = std::tuple<FlowModelParameters, FlowBaseProblem, BlackOilModel, EclTimeSteppingParameters>;
|
using InheritsFrom = std::tuple<FlowModelParameters, FlowBaseProblem, BlackOilModel, EclTimeSteppingParameters>;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the problem class
|
// Set the problem class
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Problem<TypeTag, TTag::EbosTypeTag> {
|
struct Problem<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = EbosProblem<TypeTag>;
|
using type = FlowExpProblem<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Enable experimental features for ebos: ebos is the research simulator of the OPM
|
// 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
|
// project. If you're looking for a more stable "production quality" simulator, consider
|
||||||
// using `flow`
|
// using `flow`
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableExperiments<TypeTag, TTag::EbosTypeTag> {
|
struct EnableExperiments<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
// use flow's well model for now
|
// use flow's well model for now
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct WellModel<TypeTag, TTag::EbosTypeTag> {
|
struct WellModel<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = BlackoilWellModel<TypeTag>;
|
using type = BlackoilWellModel<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct NewtonMethod<TypeTag, TTag::EbosTypeTag> {
|
struct NewtonMethod<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = FlowNewtonMethod<TypeTag>;
|
using type = FlowNewtonMethod<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,53 +81,53 @@ struct NewtonMethod<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// regressions. the --use-multisegment-well=true|false command line parameter is still
|
// regressions. the --use-multisegment-well=true|false command line parameter is still
|
||||||
// available in ebos, but hidden from view.
|
// available in ebos, but hidden from view.
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct UseMultisegmentWell<TypeTag, TTag::EbosTypeTag> {
|
struct UseMultisegmentWell<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = false;
|
static constexpr bool value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// set some properties that are only required by the well model
|
// set some properties that are only required by the well model
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct MatrixAddWellContributions<TypeTag, TTag::EbosTypeTag> {
|
struct MatrixAddWellContributions<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableTerminalOutput<TypeTag, TTag::EbosTypeTag> {
|
struct EnableTerminalOutput<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = false;
|
static constexpr bool value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// flow's well model only works with surface volumes
|
// flow's well model only works with surface volumes
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct BlackoilConserveSurfaceVolume<TypeTag, TTag::EbosTypeTag> {
|
struct BlackoilConserveSurfaceVolume<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
// the values for the residual are for the whole cell instead of for a cubic meter of the cell
|
// the values for the residual are for the whole cell instead of for a cubic meter of the cell
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct UseVolumetricResidual<TypeTag, TTag::EbosTypeTag> {
|
struct UseVolumetricResidual<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = false;
|
static constexpr bool value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// by default use flow's aquifer model for now
|
// by default use flow's aquifer model for now
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct AquiferModel<TypeTag, TTag::EbosTypeTag> {
|
struct AquiferModel<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = BlackoilAquiferModel<TypeTag>;
|
using type = BlackoilAquiferModel<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// use flow's linear solver backend for now
|
// use flow's linear solver backend for now
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverSplice<TypeTag, TTag::EbosTypeTag> {
|
struct LinearSolverSplice<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = TTag::FlowIstlSolver;
|
using type = TTag::FlowIstlSolver;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct LinearSolverBackend<TTag::EbosTypeTag, TTag::FlowIstlSolverParams> {
|
struct LinearSolverBackend<TTag::FlowExpTypeTag, TTag::FlowIstlSolverParams> {
|
||||||
using type = ISTLSolver<TTag::EbosTypeTag>;
|
using type = ISTLSolver<TTag::FlowExpTypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// the default for the allowed volumetric error for oil per second
|
// the default for the allowed volumetric error for oil per second
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct NewtonTolerance<TypeTag, TTag::EbosTypeTag> {
|
struct NewtonTolerance<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1e-1;
|
static constexpr type value = 1e-1;
|
||||||
};
|
};
|
||||||
@ -135,14 +135,14 @@ struct NewtonTolerance<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// set fraction of the pore volume where the volumetric residual may be violated during
|
// set fraction of the pore volume where the volumetric residual may be violated during
|
||||||
// strict Newton iterations
|
// strict Newton iterations
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonRelaxedVolumeFraction<TypeTag, TTag::EbosTypeTag> {
|
struct EclNewtonRelaxedVolumeFraction<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 0.05;
|
static constexpr type value = 0.05;
|
||||||
};
|
};
|
||||||
|
|
||||||
// the maximum volumetric error of a cell in the relaxed region
|
// the maximum volumetric error of a cell in the relaxed region
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonRelaxedTolerance<TypeTag, TTag::EbosTypeTag> {
|
struct EclNewtonRelaxedTolerance<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1e6*getPropValue<TypeTag, Properties::NewtonTolerance>();
|
static constexpr type value = 1e6*getPropValue<TypeTag, Properties::NewtonTolerance>();
|
||||||
};
|
};
|
||||||
@ -151,13 +151,13 @@ struct EclNewtonRelaxedTolerance<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// reservoir. this is scaled by the pore volume of the reservoir, i.e., larger reservoirs
|
// reservoir. this is scaled by the pore volume of the reservoir, i.e., larger reservoirs
|
||||||
// will tolerate larger residuals.
|
// will tolerate larger residuals.
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonSumTolerance<TypeTag, TTag::EbosTypeTag> {
|
struct EclNewtonSumTolerance<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1e-5;
|
static constexpr type value = 1e-5;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonSumToleranceExponent<TypeTag, TTag::EbosTypeTag> {
|
struct EclNewtonSumToleranceExponent<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1./3.;
|
static constexpr type value = 1./3.;
|
||||||
};
|
};
|
||||||
@ -165,14 +165,14 @@ struct EclNewtonSumToleranceExponent<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// always be upheld in the majority of the spatial domain. In this context, "majority"
|
// always be upheld in the majority of the spatial domain. In this context, "majority"
|
||||||
// means 1 - EclNewtonRelaxedVolumeFraction.
|
// means 1 - EclNewtonRelaxedVolumeFraction.
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonStrictIterations<TypeTag, TTag::EbosTypeTag> {
|
struct EclNewtonStrictIterations<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr int value = 100;
|
static constexpr int value = 100;
|
||||||
};
|
};
|
||||||
|
|
||||||
// set the maximum number of Newton iterations to 8 so that we fail quickly (albeit
|
// set the maximum number of Newton iterations to 8 so that we fail quickly (albeit
|
||||||
// relatively often)
|
// relatively often)
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct NewtonMaxIterations<TypeTag, TTag::EbosTypeTag> {
|
struct NewtonMaxIterations<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr int value = 8;
|
static constexpr int value = 8;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ struct NewtonMaxIterations<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// simulation to 2 (instead of grabbing everything that is available).
|
// simulation to 2 (instead of grabbing everything that is available).
|
||||||
#if _OPENMP
|
#if _OPENMP
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct ThreadsPerProcess<TypeTag, TTag::EbosTypeTag> {
|
struct ThreadsPerProcess<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr int value = 2;
|
static constexpr int value = 2;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@ -188,11 +188,11 @@ struct ThreadsPerProcess<TypeTag, TTag::EbosTypeTag> {
|
|||||||
// By default, ebos accepts the result of the time integration unconditionally if the
|
// By default, ebos accepts the result of the time integration unconditionally if the
|
||||||
// smallest time step size is reached.
|
// smallest time step size is reached.
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct ContinueOnConvergenceError<TypeTag, TTag::EbosTypeTag> {
|
struct ContinueOnConvergenceError<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
static constexpr bool value = true;
|
static constexpr bool value = true;
|
||||||
};
|
};
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverBackend<TypeTag, TTag::EbosTypeTag> {
|
struct LinearSolverBackend<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
using type = ISTLSolver<TypeTag>;
|
using type = ISTLSolver<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -200,7 +200,7 @@ struct LinearSolverBackend<TypeTag, TTag::EbosTypeTag> {
|
|||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class EbosProblem : public FlowProblem<TypeTag> //, public FvBaseProblem<TypeTag>
|
class FlowExpProblem : public FlowProblem<TypeTag> //, public FvBaseProblem<TypeTag>
|
||||||
{
|
{
|
||||||
typedef FlowProblem<TypeTag> ParentType;
|
typedef FlowProblem<TypeTag> ParentType;
|
||||||
using BaseType = ParentType; // GetPropType<TypeTag, Properties::BaseProblem>;
|
using BaseType = ParentType; // GetPropType<TypeTag, Properties::BaseProblem>;
|
||||||
@ -254,4 +254,4 @@ public:
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // EBOS_HH
|
#endif
|
||||||
|
@ -43,45 +43,45 @@
|
|||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
namespace TTag {
|
namespace TTag {
|
||||||
struct EclFlowProblemEbos {
|
struct FlowExpProblemBlackOil{
|
||||||
using InheritsFrom = std::tuple<EbosTypeTag>;
|
using InheritsFrom = std::tuple<FlowExpTypeTag>;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Model<TypeTag, TTag::EclFlowProblemEbos> {
|
struct Model<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = FIBlackOilModelNoCache<TypeTag>;
|
using type = FIBlackOilModelNoCache<TypeTag>;
|
||||||
};
|
};
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct IntensiveQuantities<TypeTag, TTag::EclFlowProblemEbos> {
|
struct IntensiveQuantities<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = BlackOilIntensiveQuantitiesGlobalIndex<TypeTag>;
|
using type = BlackOilIntensiveQuantitiesGlobalIndex<TypeTag>;
|
||||||
};
|
};
|
||||||
// Set the problem class
|
// Set the problem class
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Problem<TypeTag, TTag::EclFlowProblemEbos> {
|
struct Problem<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = EbosProblem<TypeTag>;
|
using type = FlowExpProblem<TypeTag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct ThreadsPerProcess<TypeTag, TTag::EclFlowProblemEbos> {
|
struct ThreadsPerProcess<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
static constexpr int value = 1;
|
static constexpr int value = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct ContinueOnConvergenceError<TypeTag, TTag::EclFlowProblemEbos> {
|
struct ContinueOnConvergenceError<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
static constexpr bool value = false;
|
static constexpr bool value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonSumTolerance<TypeTag, TTag::EclFlowProblemEbos> {
|
struct EclNewtonSumTolerance<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1e-5;
|
static constexpr type value = 1e-5;
|
||||||
};
|
};
|
||||||
|
|
||||||
// the default for the allowed volumetric error for oil per second
|
// the default for the allowed volumetric error for oil per second
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct NewtonTolerance<TypeTag, TTag::EclFlowProblemEbos> {
|
struct NewtonTolerance<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 1e-2;
|
static constexpr type value = 1e-2;
|
||||||
};
|
};
|
||||||
@ -89,43 +89,43 @@ struct NewtonTolerance<TypeTag, TTag::EclFlowProblemEbos> {
|
|||||||
// set fraction of the pore volume where the volumetric residual may be violated during
|
// set fraction of the pore volume where the volumetric residual may be violated during
|
||||||
// strict Newton iterations
|
// strict Newton iterations
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonRelaxedVolumeFraction<TypeTag, TTag::EclFlowProblemEbos> {
|
struct EclNewtonRelaxedVolumeFraction<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 0.0;
|
static constexpr type value = 0.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EclNewtonRelaxedTolerance<TypeTag, TTag::EclFlowProblemEbos> {
|
struct EclNewtonRelaxedTolerance<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = GetPropType<TypeTag, Scalar>;
|
||||||
static constexpr type value = 10*getPropValue<TypeTag, Properties::NewtonTolerance>();
|
static constexpr type value = 10*getPropValue<TypeTag, Properties::NewtonTolerance>();
|
||||||
};
|
};
|
||||||
|
|
||||||
//template<class TypeTag>
|
//template<class TypeTag>
|
||||||
//struct Linearizer<TypeTag, TTag::EclFlowProblemEbos> { using type = TpfaLinearizer<TypeTag>; };
|
//struct Linearizer<TypeTag, TTag::FlowExpProblemBlackOil> { using type = TpfaLinearizer<TypeTag>; };
|
||||||
|
|
||||||
// template<class TypeTag>
|
// template<class TypeTag>
|
||||||
// struct LocalResidual<TypeTag, TTag::EclFlowProblemEbos> { using type = BlackOilLocalResidualTPFA<TypeTag>; };
|
// struct LocalResidual<TypeTag, TTag::FlowExpProblemBlackOil> { using type = BlackOilLocalResidualTPFA<TypeTag>; };
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableDiffusion<TypeTag, TTag::EclFlowProblemEbos> { static constexpr bool value = false; };
|
struct EnableDiffusion<TypeTag, TTag::FlowExpProblemBlackOil> { static constexpr bool value = false; };
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableDisgasInWater<TypeTag, TTag::EclFlowProblemEbos> { static constexpr bool value = false; };
|
struct EnableDisgasInWater<TypeTag, TTag::FlowExpProblemBlackOil> { static constexpr bool value = false; };
|
||||||
|
|
||||||
//static constexpr bool has_disgas_in_water = getPropValue<TypeTag, Properties::EnableDisgasInWater>();
|
//static constexpr bool has_disgas_in_water = getPropValue<TypeTag, Properties::EnableDisgasInWater>();
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Simulator<TypeTag, TTag::EclFlowProblemEbos> { using type = Opm::Simulator<TypeTag>; };
|
struct Simulator<TypeTag, TTag::FlowExpProblemBlackOil> { using type = Opm::Simulator<TypeTag>; };
|
||||||
|
|
||||||
// template<class TypeTag>
|
// template<class TypeTag>
|
||||||
// struct LinearSolverBackend<TypeTag, TTag::EclFlowProblemEbos> {
|
// struct LinearSolverBackend<TypeTag, TTag::FlowExpProblemBlackOil> {
|
||||||
// using type = ISTLSolver<TypeTag>;
|
// using type = ISTLSolver<TypeTag>;
|
||||||
// };
|
// };
|
||||||
|
|
||||||
// // Set the problem class
|
// // Set the problem class
|
||||||
// template<class TypeTag>
|
// template<class TypeTag>
|
||||||
// struct Problem<TypeTag, TTag::EbosTypeTag> {
|
// struct Problem<TypeTag, TTag::FlowExpTypeTag> {
|
||||||
// using type = EbosProblem<TypeTag>;
|
// using type = FlowExpProblem<TypeTag>;
|
||||||
// };
|
// };
|
||||||
|
|
||||||
// template<class TypeTag>
|
// template<class TypeTag>
|
||||||
@ -138,7 +138,7 @@ struct Simulator<TypeTag, TTag::EclFlowProblemEbos> { using type = Opm::Simulato
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
using TypeTag = Opm::Properties::TTag::EclFlowProblemEbos;
|
using TypeTag = Opm::Properties::TTag::FlowExpProblemBlackOil;
|
||||||
Opm::registerEclTimeSteppingParameters<TypeTag>();
|
Opm::registerEclTimeSteppingParameters<TypeTag>();
|
||||||
return Opm::start<TypeTag>(argc, argv);
|
return Opm::start<TypeTag>(argc, argv);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user