mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
updating the primary variables before calculating accumulation term
This commit is contained in:
@@ -817,9 +817,11 @@ namespace Opm
|
|||||||
void
|
void
|
||||||
MultisegmentWell<TypeTag>::
|
MultisegmentWell<TypeTag>::
|
||||||
calculateExplicitQuantities(const Simulator& ebosSimulator,
|
calculateExplicitQuantities(const Simulator& ebosSimulator,
|
||||||
const WellState& /* well_state */,
|
const WellState& well_state,
|
||||||
Opm::DeferredLogger& deferred_logger)
|
Opm::DeferredLogger& deferred_logger)
|
||||||
{
|
{
|
||||||
|
updatePrimaryVariables(well_state);
|
||||||
|
initPrimaryVariablesEvaluation();
|
||||||
computePerfCellPressDiffs(ebosSimulator);
|
computePerfCellPressDiffs(ebosSimulator);
|
||||||
computeInitialSegmentFluids(ebosSimulator);
|
computeInitialSegmentFluids(ebosSimulator);
|
||||||
}
|
}
|
||||||
@@ -1024,8 +1026,7 @@ namespace Opm
|
|||||||
if ( drawdown > 0.0) {
|
if ( drawdown > 0.0) {
|
||||||
// Do nothing is crossflow is not allowed
|
// Do nothing is crossflow is not allowed
|
||||||
if (!allow_cf && well_type_ == INJECTOR) {
|
if (!allow_cf && well_type_ == INJECTOR) {
|
||||||
// TODO: actaully, we did not have a case to test if it is the same case for injectors
|
return;
|
||||||
drawdown = -mini_drawdown;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute component volumetric rates at standard conditions
|
// compute component volumetric rates at standard conditions
|
||||||
@@ -1045,7 +1046,7 @@ namespace Opm
|
|||||||
} else { // injecting perforations
|
} else { // injecting perforations
|
||||||
// Do nothing if crossflow is not allowed
|
// Do nothing if crossflow is not allowed
|
||||||
if (!allow_cf && well_type_ == PRODUCER) {
|
if (!allow_cf && well_type_ == PRODUCER) {
|
||||||
drawdown = mini_drawdown;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for injecting perforations, we use total mobility
|
// for injecting perforations, we use total mobility
|
||||||
@@ -1836,8 +1837,9 @@ namespace Opm
|
|||||||
const EvalWell segment_surface_volume = getSegmentSurfaceVolume(ebosSimulator, seg);
|
const EvalWell segment_surface_volume = getSegmentSurfaceVolume(ebosSimulator, seg);
|
||||||
// for each component
|
// for each component
|
||||||
for (int comp_idx = 0; comp_idx < num_components_; ++comp_idx) {
|
for (int comp_idx = 0; comp_idx < num_components_; ++comp_idx) {
|
||||||
EvalWell accumulation_term = (segment_surface_volume * surfaceVolumeFraction(seg, comp_idx)
|
const EvalWell accumulation_term = (segment_fluid_initial_[seg][comp_idx]
|
||||||
- segment_fluid_initial_[seg][comp_idx]) / dt + getSegmentRate(seg, comp_idx);
|
- segment_surface_volume * surfaceVolumeFraction(seg, comp_idx) ) / dt
|
||||||
|
+ getSegmentRate(seg, comp_idx);
|
||||||
|
|
||||||
resWell_[seg][comp_idx] += accumulation_term.value();
|
resWell_[seg][comp_idx] += accumulation_term.value();
|
||||||
for (int pv_idx = 0; pv_idx < numWellEq; ++pv_idx) {
|
for (int pv_idx = 0; pv_idx < numWellEq; ++pv_idx) {
|
||||||
|
|||||||
Reference in New Issue
Block a user