mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-23 07:53:29 -06:00
switching to scale the mobility instead of the well index
mostly to make the calculation of productivity easier.
This commit is contained in:
parent
cb74d26e85
commit
1981a3bf4d
@ -768,8 +768,6 @@ namespace Opm
|
|||||||
// Pressure drawdown (also used to determine direction of flow)
|
// Pressure drawdown (also used to determine direction of flow)
|
||||||
const Value drawdown = cell_press_at_perf - perf_press;
|
const Value drawdown = cell_press_at_perf - perf_press;
|
||||||
|
|
||||||
const double effectiveTw = this->isInjector() ? this->inj_fc_multiplier_[perf] * Tw : Tw;
|
|
||||||
|
|
||||||
// producing perforations
|
// producing perforations
|
||||||
if (drawdown > 0.0) {
|
if (drawdown > 0.0) {
|
||||||
// Do nothing if crossflow is not allowed
|
// Do nothing if crossflow is not allowed
|
||||||
@ -779,7 +777,7 @@ namespace Opm
|
|||||||
|
|
||||||
// compute component volumetric rates at standard conditions
|
// compute component volumetric rates at standard conditions
|
||||||
for (int comp_idx = 0; comp_idx < this->numComponents(); ++comp_idx) {
|
for (int comp_idx = 0; comp_idx < this->numComponents(); ++comp_idx) {
|
||||||
const Value cq_p = - effectiveTw * (mob_perfcells[comp_idx] * drawdown);
|
const Value cq_p = - Tw * (mob_perfcells[comp_idx] * drawdown);
|
||||||
cq_s[comp_idx] = b_perfcells[comp_idx] * cq_p;
|
cq_s[comp_idx] = b_perfcells[comp_idx] * cq_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,7 +802,7 @@ namespace Opm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// injection perforations total volume rates
|
// injection perforations total volume rates
|
||||||
const Value cqt_i = - effectiveTw * (total_mob * drawdown);
|
const Value cqt_i = - Tw * (total_mob * drawdown);
|
||||||
|
|
||||||
// compute volume ratio between connection and at standard conditions
|
// compute volume ratio between connection and at standard conditions
|
||||||
Value volume_ratio = 0.0;
|
Value volume_ratio = 0.0;
|
||||||
|
@ -239,7 +239,6 @@ namespace Opm
|
|||||||
if (this->isInjector()) {
|
if (this->isInjector()) {
|
||||||
drawdown += skin_pressure;
|
drawdown += skin_pressure;
|
||||||
}
|
}
|
||||||
const double effectiveTw = this->isInjector() ? this->inj_fc_multiplier_[perf] * Tw : Tw;
|
|
||||||
|
|
||||||
// producing perforations
|
// producing perforations
|
||||||
if (drawdown > 0) {
|
if (drawdown > 0) {
|
||||||
@ -250,7 +249,7 @@ namespace Opm
|
|||||||
|
|
||||||
// compute component volumetric rates at standard conditions
|
// compute component volumetric rates at standard conditions
|
||||||
for (int componentIdx = 0; componentIdx < this->numComponents(); ++componentIdx) {
|
for (int componentIdx = 0; componentIdx < this->numComponents(); ++componentIdx) {
|
||||||
const Value cq_p = - effectiveTw * (mob[componentIdx] * drawdown);
|
const Value cq_p = - Tw * (mob[componentIdx] * drawdown);
|
||||||
cq_s[componentIdx] = b_perfcells_dense[componentIdx] * cq_p;
|
cq_s[componentIdx] = b_perfcells_dense[componentIdx] * cq_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,7 +271,7 @@ namespace Opm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// injection perforations total volume rates
|
// injection perforations total volume rates
|
||||||
const Value cqt_i = - effectiveTw * (total_mob_dense * drawdown);
|
const Value cqt_i = - Tw * (total_mob_dense * drawdown);
|
||||||
|
|
||||||
// compute volume ratio between connection at standard conditions
|
// compute volume ratio between connection at standard conditions
|
||||||
Value volumeRatio = bhp * 0.0; // initialize it with the correct type
|
Value volumeRatio = bhp * 0.0; // initialize it with the correct type
|
||||||
|
@ -1267,6 +1267,17 @@ namespace Opm
|
|||||||
OPM_DEFLOG_THROW(std::runtime_error, "individual mobility for wells does not work in combination with solvent", deferred_logger);
|
OPM_DEFLOG_THROW(std::runtime_error, "individual mobility for wells does not work in combination with solvent", deferred_logger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->isInjector()) {
|
||||||
|
const auto perf_ecl_index = this->perforationData()[perf].ecl_index;
|
||||||
|
const auto& connections = this->well_ecl_.getConnections();
|
||||||
|
const auto& connection = connections[perf_ecl_index];
|
||||||
|
if (connection.filterCakeActive()) {
|
||||||
|
for (auto& val : mob) {
|
||||||
|
val *= this->inj_fc_multiplier_[perf];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user