mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Rebased to current master. TODO: pvSplit with energy
This commit is contained in:
parent
3a5d527417
commit
33b72a9722
@ -1009,6 +1009,7 @@ namespace Opm {
|
|||||||
|
|
||||||
const auto tol_cnv = use_relaxed_cnv ? param_.tolerance_cnv_relaxed_ : param_.tolerance_cnv_;
|
const auto tol_cnv = use_relaxed_cnv ? param_.tolerance_cnv_relaxed_ : param_.tolerance_cnv_;
|
||||||
const auto tol_mb = use_relaxed_mb ? param_.tolerance_mb_relaxed_ : param_.tolerance_mb_;
|
const auto tol_mb = use_relaxed_mb ? param_.tolerance_mb_relaxed_ : param_.tolerance_mb_;
|
||||||
|
const auto tol_cnv_energy = use_relaxed_cnv ? param_.tolerance_cnv_energy_relaxed_ : param_.tolerance_cnv_energy_;
|
||||||
|
|
||||||
// Finish computation
|
// Finish computation
|
||||||
std::vector<Scalar> CNV(numComp);
|
std::vector<Scalar> CNV(numComp);
|
||||||
@ -1031,7 +1032,9 @@ namespace Opm {
|
|||||||
CR::ReservoirFailure::Type::Cnv,
|
CR::ReservoirFailure::Type::Cnv,
|
||||||
};
|
};
|
||||||
|
|
||||||
const Scalar tol[2] = { tol_mb, tol_cnv, };
|
Scalar tol[2] = { tol_mb, tol_cnv, };
|
||||||
|
if (has_energy_ && compIdx == contiEnergyEqIdx)
|
||||||
|
tol[1] = tol_cnv_energy;
|
||||||
|
|
||||||
for (int ii : {0, 1}) {
|
for (int ii : {0, 1}) {
|
||||||
if (std::isnan(res[ii])) {
|
if (std::isnan(res[ii])) {
|
||||||
|
@ -40,6 +40,8 @@ BlackoilModelParameters<Scalar>::BlackoilModelParameters()
|
|||||||
tolerance_mb_relaxed_ = std::max(tolerance_mb_, Parameters::Get<Parameters::ToleranceMbRelaxed<Scalar>>());
|
tolerance_mb_relaxed_ = std::max(tolerance_mb_, Parameters::Get<Parameters::ToleranceMbRelaxed<Scalar>>());
|
||||||
tolerance_cnv_ = Parameters::Get<Parameters::ToleranceCnv<Scalar>>();
|
tolerance_cnv_ = Parameters::Get<Parameters::ToleranceCnv<Scalar>>();
|
||||||
tolerance_cnv_relaxed_ = std::max(tolerance_cnv_, Parameters::Get<Parameters::ToleranceCnvRelaxed<Scalar>>());
|
tolerance_cnv_relaxed_ = std::max(tolerance_cnv_, Parameters::Get<Parameters::ToleranceCnvRelaxed<Scalar>>());
|
||||||
|
tolerance_cnv_energy_ = Parameters::Get<Parameters::ToleranceCnvEnergy<Scalar>>();
|
||||||
|
tolerance_cnv_energy_relaxed_ = std::max(tolerance_cnv_energy_, Parameters::Get<Parameters::ToleranceCnvEnergyRelaxed<Scalar>>());
|
||||||
tolerance_wells_ = Parameters::Get<Parameters::ToleranceWells<Scalar>>();
|
tolerance_wells_ = Parameters::Get<Parameters::ToleranceWells<Scalar>>();
|
||||||
tolerance_well_control_ = Parameters::Get<Parameters::ToleranceWellControl<Scalar>>();
|
tolerance_well_control_ = Parameters::Get<Parameters::ToleranceWellControl<Scalar>>();
|
||||||
max_welleq_iter_ = Parameters::Get<Parameters::MaxWelleqIter>();
|
max_welleq_iter_ = Parameters::Get<Parameters::MaxWelleqIter>();
|
||||||
@ -115,6 +117,11 @@ void BlackoilModelParameters<Scalar>::registerParameters()
|
|||||||
Parameters::Register<Parameters::ToleranceCnvRelaxed<Scalar>>
|
Parameters::Register<Parameters::ToleranceCnvRelaxed<Scalar>>
|
||||||
("Relaxed local convergence tolerance that applies for iterations "
|
("Relaxed local convergence tolerance that applies for iterations "
|
||||||
"after the iterations with the strict tolerance");
|
"after the iterations with the strict tolerance");
|
||||||
|
Parameters::Register<Parameters::ToleranceCnvEnergy<Scalar>>
|
||||||
|
("Local energy convergence tolerance (Maximum of local energy errors)");
|
||||||
|
Parameters::Register<Parameters::ToleranceCnvEnergyRelaxed<Scalar>>
|
||||||
|
("Relaxed local energy convergence tolerance that applies for iterations "
|
||||||
|
"after the iterations with the strict tolerance");
|
||||||
Parameters::Register<Parameters::ToleranceWells<Scalar>>
|
Parameters::Register<Parameters::ToleranceWells<Scalar>>
|
||||||
("Well convergence tolerance");
|
("Well convergence tolerance");
|
||||||
Parameters::Register<Parameters::ToleranceWellControl<Scalar>>
|
Parameters::Register<Parameters::ToleranceWellControl<Scalar>>
|
||||||
|
@ -52,6 +52,12 @@ struct ToleranceCnv { static constexpr Scalar value = 1e-2; };
|
|||||||
template<class Scalar>
|
template<class Scalar>
|
||||||
struct ToleranceCnvRelaxed { static constexpr Scalar value = 1.0; };
|
struct ToleranceCnvRelaxed { static constexpr Scalar value = 1.0; };
|
||||||
|
|
||||||
|
template<class Scalar>
|
||||||
|
struct ToleranceCnvEnergy { static constexpr Scalar value = 1e-4; };
|
||||||
|
|
||||||
|
template<class Scalar>
|
||||||
|
struct ToleranceCnvEnergyRelaxed { static constexpr Scalar value = 2.0e-4; };
|
||||||
|
|
||||||
template<class Scalar>
|
template<class Scalar>
|
||||||
struct ToleranceWells { static constexpr Scalar value = 1e-4; };
|
struct ToleranceWells { static constexpr Scalar value = 1e-4; };
|
||||||
|
|
||||||
@ -151,6 +157,10 @@ public:
|
|||||||
Scalar tolerance_cnv_;
|
Scalar tolerance_cnv_;
|
||||||
/// Relaxed local convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViolatedPV < relaxed_max_pv_fraction_).
|
/// Relaxed local convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViolatedPV < relaxed_max_pv_fraction_).
|
||||||
Scalar tolerance_cnv_relaxed_;
|
Scalar tolerance_cnv_relaxed_;
|
||||||
|
/// Local energy convergence tolerance (max of local energy errors).
|
||||||
|
Scalar tolerance_cnv_energy_;
|
||||||
|
/// Relaxed local energy convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViolatedPV < relaxed_max_pv_fraction_).
|
||||||
|
Scalar tolerance_cnv_energy_relaxed_;
|
||||||
/// Well convergence tolerance.
|
/// Well convergence tolerance.
|
||||||
Scalar tolerance_wells_;
|
Scalar tolerance_wells_;
|
||||||
/// Tolerance for the well control equations
|
/// Tolerance for the well control equations
|
||||||
|
Loading…
Reference in New Issue
Block a user