mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use the same relative threshold for drs and drv update
The drs_max_rel param is renamed to dr_max_rel and used to restrict both drs and drv.
This commit is contained in:
@@ -60,7 +60,7 @@ namespace Opm {
|
|||||||
{
|
{
|
||||||
double dp_max_rel_;
|
double dp_max_rel_;
|
||||||
double ds_max_;
|
double ds_max_;
|
||||||
double drs_max_rel_;
|
double dr_max_rel_;
|
||||||
enum RelaxType relax_type_;
|
enum RelaxType relax_type_;
|
||||||
double relax_max_;
|
double relax_max_;
|
||||||
double relax_increment_;
|
double relax_increment_;
|
||||||
@@ -338,7 +338,7 @@ namespace Opm {
|
|||||||
|
|
||||||
double dpMaxRel() const { return param_.dp_max_rel_; }
|
double dpMaxRel() const { return param_.dp_max_rel_; }
|
||||||
double dsMax() const { return param_.ds_max_; }
|
double dsMax() const { return param_.ds_max_; }
|
||||||
double drsMaxRel() const { return param_.drs_max_rel_; }
|
double drMaxRel() const { return param_.dr_max_rel_; }
|
||||||
enum RelaxType relaxType() const { return param_.relax_type_; }
|
enum RelaxType relaxType() const { return param_.relax_type_; }
|
||||||
double relaxMax() const { return param_.relax_max_; };
|
double relaxMax() const { return param_.relax_max_; };
|
||||||
double relaxIncrement() const { return param_.relax_increment_; };
|
double relaxIncrement() const { return param_.relax_increment_; };
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ namespace {
|
|||||||
// default values for the solver parameters
|
// default values for the solver parameters
|
||||||
dp_max_rel_ = 1.0e9;
|
dp_max_rel_ = 1.0e9;
|
||||||
ds_max_ = 0.2;
|
ds_max_ = 0.2;
|
||||||
drs_max_rel_ = 1.0e9;
|
dr_max_rel_ = 1.0e9;
|
||||||
relax_type_ = DAMPEN;
|
relax_type_ = DAMPEN;
|
||||||
relax_max_ = 0.5;
|
relax_max_ = 0.5;
|
||||||
relax_increment_ = 0.1;
|
relax_increment_ = 0.1;
|
||||||
@@ -189,7 +189,7 @@ namespace {
|
|||||||
// overload with given parameters
|
// overload with given parameters
|
||||||
dp_max_rel_ = param.getDefault("dp_max_rel", dp_max_rel_);
|
dp_max_rel_ = param.getDefault("dp_max_rel", dp_max_rel_);
|
||||||
ds_max_ = param.getDefault("ds_max", ds_max_);
|
ds_max_ = param.getDefault("ds_max", ds_max_);
|
||||||
drs_max_rel_ = param.getDefault("drs_max_rel", drs_max_rel_);
|
dr_max_rel_ = param.getDefault("dr_max_rel", dr_max_rel_);
|
||||||
relax_max_ = param.getDefault("relax_max", relax_max_);
|
relax_max_ = param.getDefault("relax_max", relax_max_);
|
||||||
max_iter_ = param.getDefault("max_iter", max_iter_);
|
max_iter_ = param.getDefault("max_iter", max_iter_);
|
||||||
|
|
||||||
@@ -1403,20 +1403,19 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update rs and rv
|
// Update rs and rv
|
||||||
const double drsmaxrel = drsMaxRel();
|
const double drmaxrel = drMaxRel();
|
||||||
const double drvmax = 1e9;//% same as in Mrst
|
|
||||||
V rs;
|
V rs;
|
||||||
if (has_disgas_) {
|
if (has_disgas_) {
|
||||||
const V rs_old = Eigen::Map<const V>(&state.gasoilratio()[0], nc);
|
const V rs_old = Eigen::Map<const V>(&state.gasoilratio()[0], nc);
|
||||||
const V drs = isRs * dxvar;
|
const V drs = isRs * dxvar;
|
||||||
const V drs_limited = sign(drs) * drs.abs().min(rs_old.abs()*drsmaxrel);
|
const V drs_limited = sign(drs) * drs.abs().min(rs_old.abs()*drmaxrel);
|
||||||
rs = rs_old - drs_limited;
|
rs = rs_old - drs_limited;
|
||||||
}
|
}
|
||||||
V rv;
|
V rv;
|
||||||
if (has_vapoil_) {
|
if (has_vapoil_) {
|
||||||
const V rv_old = Eigen::Map<const V>(&state.rv()[0], nc);
|
const V rv_old = Eigen::Map<const V>(&state.rv()[0], nc);
|
||||||
const V drv = isRv * dxvar;
|
const V drv = isRv * dxvar;
|
||||||
const V drv_limited = sign(drv) * drv.abs().min(drvmax);
|
const V drv_limited = sign(drv) * drv.abs().min(rv_old.abs()*drmaxrel);
|
||||||
rv = rv_old - drv_limited;
|
rv = rv_old - drv_limited;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user