diff --git a/opm/simulators/flow/BlackoilModelParametersEbos.hpp b/opm/simulators/flow/BlackoilModelParametersEbos.hpp index e40650376..97dfb0a40 100644 --- a/opm/simulators/flow/BlackoilModelParametersEbos.hpp +++ b/opm/simulators/flow/BlackoilModelParametersEbos.hpp @@ -182,6 +182,10 @@ template struct LocalWellSolveControlSwitching { using type = UndefinedProperty; }; +template +struct UseImplicitIpr { + using type = UndefinedProperty; +}; // Network solver parameters template struct NetworkMaxStrictIterations { @@ -386,6 +390,10 @@ template struct LocalWellSolveControlSwitching { static constexpr bool value = false; }; +template +struct UseImplicitIpr { + static constexpr bool value = false; +}; // Network solver parameters template @@ -559,6 +567,9 @@ namespace Opm /// Whether to allow control switching during local well solutions bool local_well_solver_control_switching_; + /// Whether to use implicit IPR for thp stability checks and solution search + bool use_implicit_ipr_; + /// Maximum number of iterations in the network solver before relaxing tolerance int network_max_strict_iterations_; @@ -619,6 +630,7 @@ namespace Opm max_number_of_well_switches_ = EWOMS_GET_PARAM(TypeTag, int, MaximumNumberOfWellSwitches); use_average_density_ms_wells_ = EWOMS_GET_PARAM(TypeTag, bool, UseAverageDensityMsWells); local_well_solver_control_switching_ = EWOMS_GET_PARAM(TypeTag, bool, LocalWellSolveControlSwitching); + use_implicit_ipr_ = EWOMS_GET_PARAM(TypeTag, bool, UseImplicitIpr); nonlinear_solver_ = EWOMS_GET_PARAM(TypeTag, std::string, NonlinearSolver); const auto approach = EWOMS_GET_PARAM(TypeTag, std::string, LocalSolveApproach); if (approach == "jacobi") { @@ -680,6 +692,7 @@ namespace Opm EWOMS_REGISTER_PARAM(TypeTag, int, MaximumNumberOfWellSwitches, "Maximum number of times a well can switch to the same control"); EWOMS_REGISTER_PARAM(TypeTag, bool, UseAverageDensityMsWells, "Approximate segment densitities by averaging over segment and its outlet"); EWOMS_REGISTER_PARAM(TypeTag, bool, LocalWellSolveControlSwitching, "Allow control switching during local well solutions"); + EWOMS_REGISTER_PARAM(TypeTag, bool, UseImplicitIpr, "Compute implict IPR for stability checks and stable solution search"); EWOMS_REGISTER_PARAM(TypeTag, int, NetworkMaxStrictIterations, "Maximum iterations in network solver before relaxing tolerance"); EWOMS_REGISTER_PARAM(TypeTag, int, NetworkMaxIterations, "Maximum number of iterations in the network solver before giving up"); EWOMS_REGISTER_PARAM(TypeTag, std::string, NonlinearSolver, "Choose nonlinear solver. Valid choices are newton or nldd.");