mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
WellState will internalize PhaseUsage member
This commit is contained in:
parent
e258e69802
commit
a68589eb9a
@ -329,7 +329,7 @@ namespace Opm {
|
|||||||
|
|
||||||
Opm::data::Wells wellData() const
|
Opm::data::Wells wellData() const
|
||||||
{
|
{
|
||||||
auto wsrpt = this->wellState().report(phase_usage_, Opm::UgGridHelpers::globalCell(grid()),
|
auto wsrpt = this->wellState().report(Opm::UgGridHelpers::globalCell(grid()),
|
||||||
[this](const int well_ndex) -> bool
|
[this](const int well_ndex) -> bool
|
||||||
{
|
{
|
||||||
return this->wasDynamicallyShutThisTimeStep(well_ndex);
|
return this->wasDynamicallyShutThisTimeStep(well_ndex);
|
||||||
@ -632,6 +632,7 @@ namespace Opm {
|
|||||||
|
|
||||||
void computeWellTemperature();
|
void computeWellTemperature();
|
||||||
private:
|
private:
|
||||||
|
BlackoilWellModel(Simulator& ebosSimulator, const PhaseUsage& pu);
|
||||||
/*
|
/*
|
||||||
The various wellState members should be accessed and modified
|
The various wellState members should be accessed and modified
|
||||||
through the accessor functions wellState(), prevWellState(),
|
through the accessor functions wellState(), prevWellState(),
|
||||||
|
@ -32,12 +32,12 @@
|
|||||||
namespace Opm {
|
namespace Opm {
|
||||||
template<typename TypeTag>
|
template<typename TypeTag>
|
||||||
BlackoilWellModel<TypeTag>::
|
BlackoilWellModel<TypeTag>::
|
||||||
BlackoilWellModel(Simulator& ebosSimulator)
|
BlackoilWellModel(Simulator& ebosSimulator, const PhaseUsage& phase_usage)
|
||||||
: ebosSimulator_(ebosSimulator),
|
: ebosSimulator_(ebosSimulator),
|
||||||
phase_usage_(phaseUsageFromDeck(ebosSimulator_.vanguard().eclState())),
|
phase_usage_(phase_usage),
|
||||||
active_well_state_(phase_usage_.num_phases),
|
active_well_state_(phase_usage),
|
||||||
last_valid_well_state_(phase_usage_.num_phases),
|
last_valid_well_state_(phase_usage),
|
||||||
nupcol_well_state_(phase_usage_.num_phases)
|
nupcol_well_state_(phase_usage)
|
||||||
{
|
{
|
||||||
terminal_output_ = false;
|
terminal_output_ = false;
|
||||||
if (ebosSimulator.gridView().comm().rank() == 0)
|
if (ebosSimulator.gridView().comm().rank() == 0)
|
||||||
@ -74,6 +74,13 @@ namespace Opm {
|
|||||||
alternative_well_rate_init_ = EWOMS_GET_PARAM(TypeTag, bool, AlternativeWellRateInit);
|
alternative_well_rate_init_ = EWOMS_GET_PARAM(TypeTag, bool, AlternativeWellRateInit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename TypeTag>
|
||||||
|
BlackoilWellModel<TypeTag>::
|
||||||
|
BlackoilWellModel(Simulator& ebosSimulator) :
|
||||||
|
BlackoilWellModel(ebosSimulator, phaseUsageFromDeck(ebosSimulator.vanguard().eclState()))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
template<typename TypeTag>
|
template<typename TypeTag>
|
||||||
void
|
void
|
||||||
BlackoilWellModel<TypeTag>::
|
BlackoilWellModel<TypeTag>::
|
||||||
@ -268,7 +275,7 @@ namespace Opm {
|
|||||||
|
|
||||||
// handling MS well related
|
// handling MS well related
|
||||||
if (param_.use_multisegment_well_&& anyMSWellOpenLocal()) { // if we use MultisegmentWell model
|
if (param_.use_multisegment_well_&& anyMSWellOpenLocal()) { // if we use MultisegmentWell model
|
||||||
this->wellState().initWellStateMSWell(wells_ecl_, phase_usage_, &this->prevWellState());
|
this->wellState().initWellStateMSWell(wells_ecl_, &this->prevWellState());
|
||||||
}
|
}
|
||||||
|
|
||||||
const Group& fieldGroup = schedule().getGroup("FIELD", timeStepIdx);
|
const Group& fieldGroup = schedule().getGroup("FIELD", timeStepIdx);
|
||||||
@ -630,7 +637,7 @@ namespace Opm {
|
|||||||
const auto phaseUsage = phaseUsageFromDeck(eclState());
|
const auto phaseUsage = phaseUsageFromDeck(eclState());
|
||||||
const size_t numCells = Opm::UgGridHelpers::numCells(grid());
|
const size_t numCells = Opm::UgGridHelpers::numCells(grid());
|
||||||
const bool handle_ms_well = (param_.use_multisegment_well_ && anyMSWellOpenLocal());
|
const bool handle_ms_well = (param_.use_multisegment_well_ && anyMSWellOpenLocal());
|
||||||
this->wellState().resize(wells_ecl_, local_parallel_well_info_, schedule(), handle_ms_well, numCells, phaseUsage, well_perf_data_, summaryState, globalNumWells); // Resize for restart step
|
this->wellState().resize(wells_ecl_, local_parallel_well_info_, schedule(), handle_ms_well, numCells, well_perf_data_, summaryState, globalNumWells); // Resize for restart step
|
||||||
loadRestartData(restartValues.wells, restartValues.grp_nwrk, phaseUsage, handle_ms_well, this->wellState());
|
loadRestartData(restartValues.wells, restartValues.grp_nwrk, phaseUsage, handle_ms_well, this->wellState());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -758,7 +765,7 @@ namespace Opm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->wellState().init(cellPressures, schedule(), wells_ecl_, local_parallel_well_info_, timeStepIdx,
|
this->wellState().init(cellPressures, schedule(), wells_ecl_, local_parallel_well_info_, timeStepIdx,
|
||||||
&this->prevWellState(), phase_usage_, well_perf_data_,
|
&this->prevWellState(), well_perf_data_,
|
||||||
summaryState, globalNumWells);
|
summaryState, globalNumWells);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,8 +48,8 @@ namespace Opm
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
explicit WellState(int num_phases) :
|
explicit WellState(const PhaseUsage& pu) :
|
||||||
np_(num_phases)
|
phase_usage_(pu)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -61,7 +61,6 @@ namespace Opm
|
|||||||
void init(const std::vector<double>& cellPressures,
|
void init(const std::vector<double>& cellPressures,
|
||||||
const std::vector<Well>& wells_ecl,
|
const std::vector<Well>& wells_ecl,
|
||||||
const std::vector<ParallelWellInfo*>& parallel_well_info,
|
const std::vector<ParallelWellInfo*>& parallel_well_info,
|
||||||
const PhaseUsage& pu,
|
|
||||||
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
||||||
const SummaryState& summary_state)
|
const SummaryState& summary_state)
|
||||||
{
|
{
|
||||||
@ -74,9 +73,8 @@ namespace Opm
|
|||||||
{
|
{
|
||||||
// const int nw = wells->number_of_wells;
|
// const int nw = wells->number_of_wells;
|
||||||
const int nw = wells_ecl.size();
|
const int nw = wells_ecl.size();
|
||||||
|
const int np = this->phase_usage_.num_phases;
|
||||||
// const int np = wells->number_of_phases;
|
// const int np = wells->number_of_phases;
|
||||||
const int np = pu.num_phases;
|
|
||||||
np_ = np;
|
|
||||||
status_.assign(nw, Well::Status::OPEN);
|
status_.assign(nw, Well::Status::OPEN);
|
||||||
bhp_.resize(nw, 0.0);
|
bhp_.resize(nw, 0.0);
|
||||||
thp_.resize(nw, 0.0);
|
thp_.resize(nw, 0.0);
|
||||||
@ -87,7 +85,7 @@ namespace Opm
|
|||||||
const Well& well = wells_ecl[w];
|
const Well& well = wells_ecl[w];
|
||||||
|
|
||||||
// Initialize bhp(), thp(), wellRates(), temperature().
|
// Initialize bhp(), thp(), wellRates(), temperature().
|
||||||
initSingleWell(cellPressures, w, well, *parallel_well_info[w], pu, summary_state);
|
initSingleWell(cellPressures, w, well, *parallel_well_info[w], summary_state);
|
||||||
|
|
||||||
// Setup wellname -> well index mapping.
|
// Setup wellname -> well index mapping.
|
||||||
const int num_perf_this_well = well_perf_data[w].size();
|
const int num_perf_this_well = well_perf_data[w].size();
|
||||||
@ -235,9 +233,15 @@ namespace Opm
|
|||||||
/// The number of phases present.
|
/// The number of phases present.
|
||||||
int numPhases() const
|
int numPhases() const
|
||||||
{
|
{
|
||||||
return np_;
|
return this->phase_usage_.num_phases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const PhaseUsage& phaseUsage() const {
|
||||||
|
return this->phase_usage_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void openWell(int well_index) {
|
void openWell(int well_index) {
|
||||||
this->status_[well_index] = Well::Status::OPEN;
|
this->status_[well_index] = Well::Status::OPEN;
|
||||||
}
|
}
|
||||||
@ -273,12 +277,12 @@ namespace Opm
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual data::Wells
|
virtual data::Wells
|
||||||
report(const PhaseUsage& pu,
|
report(const int* globalCellIdxMap,
|
||||||
const int* globalCellIdxMap,
|
|
||||||
const std::function<bool(const int)>& wasDynamicallyClosed) const
|
const std::function<bool(const int)>& wasDynamicallyClosed) const
|
||||||
{
|
{
|
||||||
using rt = data::Rates::opt;
|
using rt = data::Rates::opt;
|
||||||
|
|
||||||
|
const auto& pu = this->phaseUsage();
|
||||||
data::Wells dw;
|
data::Wells dw;
|
||||||
for( const auto& itr : this->wellMap_ ) {
|
for( const auto& itr : this->wellMap_ ) {
|
||||||
const auto well_index = itr.second[ 0 ];
|
const auto well_index = itr.second[ 0 ];
|
||||||
@ -354,13 +358,13 @@ namespace Opm
|
|||||||
WellState& operator=(const WellState& rhs) = default;
|
WellState& operator=(const WellState& rhs) = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
PhaseUsage phase_usage_;
|
||||||
std::vector<double> bhp_;
|
std::vector<double> bhp_;
|
||||||
std::vector<double> thp_;
|
std::vector<double> thp_;
|
||||||
std::vector<double> temperature_;
|
std::vector<double> temperature_;
|
||||||
std::vector<double> wellrates_;
|
std::vector<double> wellrates_;
|
||||||
std::vector<double> perfrates_;
|
std::vector<double> perfrates_;
|
||||||
std::vector<double> perfpress_;
|
std::vector<double> perfpress_;
|
||||||
int np_;
|
|
||||||
protected:
|
protected:
|
||||||
std::vector<Well::Status> status_;
|
std::vector<Well::Status> status_;
|
||||||
private:
|
private:
|
||||||
@ -397,15 +401,16 @@ namespace Opm
|
|||||||
const int w,
|
const int w,
|
||||||
const Well& well,
|
const Well& well,
|
||||||
const ParallelWellInfo& well_info,
|
const ParallelWellInfo& well_info,
|
||||||
const PhaseUsage& pu,
|
|
||||||
const SummaryState& summary_state)
|
const SummaryState& summary_state)
|
||||||
{
|
{
|
||||||
assert(well.isInjector() || well.isProducer());
|
assert(well.isInjector() || well.isProducer());
|
||||||
|
|
||||||
// Set default zero initial well rates.
|
// Set default zero initial well rates.
|
||||||
// May be overwritten below.
|
// May be overwritten below.
|
||||||
for (int p = 0; p < this->np_; ++p) {
|
const auto& pu = this->phase_usage_;
|
||||||
wellrates_[this->np_*w + p] = 0.0;
|
const int np = pu.num_phases;
|
||||||
|
for (int p = 0; p < np; ++p) {
|
||||||
|
wellrates_[np*w + p] = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( well.isInjector() ) {
|
if ( well.isInjector() ) {
|
||||||
@ -471,15 +476,15 @@ namespace Opm
|
|||||||
switch (inj_controls.injector_type) {
|
switch (inj_controls.injector_type) {
|
||||||
case InjectorType::WATER:
|
case InjectorType::WATER:
|
||||||
assert(pu.phase_used[BlackoilPhases::Aqua]);
|
assert(pu.phase_used[BlackoilPhases::Aqua]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Aqua]] = inj_surf_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Aqua]] = inj_surf_rate;
|
||||||
break;
|
break;
|
||||||
case InjectorType::GAS:
|
case InjectorType::GAS:
|
||||||
assert(pu.phase_used[BlackoilPhases::Vapour]);
|
assert(pu.phase_used[BlackoilPhases::Vapour]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Vapour]] = inj_surf_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Vapour]] = inj_surf_rate;
|
||||||
break;
|
break;
|
||||||
case InjectorType::OIL:
|
case InjectorType::OIL:
|
||||||
assert(pu.phase_used[BlackoilPhases::Liquid]);
|
assert(pu.phase_used[BlackoilPhases::Liquid]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Liquid]] = inj_surf_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Liquid]] = inj_surf_rate;
|
||||||
break;
|
break;
|
||||||
case InjectorType::MULTI:
|
case InjectorType::MULTI:
|
||||||
// Not currently handled, keep zero init.
|
// Not currently handled, keep zero init.
|
||||||
@ -494,15 +499,15 @@ namespace Opm
|
|||||||
switch (prod_controls.cmode) {
|
switch (prod_controls.cmode) {
|
||||||
case Well::ProducerCMode::ORAT:
|
case Well::ProducerCMode::ORAT:
|
||||||
assert(pu.phase_used[BlackoilPhases::Liquid]);
|
assert(pu.phase_used[BlackoilPhases::Liquid]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Liquid]] = -prod_controls.oil_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Liquid]] = -prod_controls.oil_rate;
|
||||||
break;
|
break;
|
||||||
case Well::ProducerCMode::WRAT:
|
case Well::ProducerCMode::WRAT:
|
||||||
assert(pu.phase_used[BlackoilPhases::Aqua]);
|
assert(pu.phase_used[BlackoilPhases::Aqua]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Aqua]] = -prod_controls.water_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Aqua]] = -prod_controls.water_rate;
|
||||||
break;
|
break;
|
||||||
case Well::ProducerCMode::GRAT:
|
case Well::ProducerCMode::GRAT:
|
||||||
assert(pu.phase_used[BlackoilPhases::Vapour]);
|
assert(pu.phase_used[BlackoilPhases::Vapour]);
|
||||||
wellrates_[this->np_*w + pu.phase_pos[BlackoilPhases::Vapour]] = -prod_controls.gas_rate;
|
wellrates_[np*w + pu.phase_pos[BlackoilPhases::Vapour]] = -prod_controls.gas_rate;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Keep zero init.
|
// Keep zero init.
|
||||||
|
@ -69,9 +69,9 @@ namespace Opm
|
|||||||
using BaseType :: resetConnectionTransFactors;
|
using BaseType :: resetConnectionTransFactors;
|
||||||
using BaseType :: updateStatus;
|
using BaseType :: updateStatus;
|
||||||
|
|
||||||
explicit WellStateFullyImplicitBlackoil(int num_phases) :
|
explicit WellStateFullyImplicitBlackoil(const PhaseUsage& pu) :
|
||||||
WellState(num_phases),
|
WellState(pu),
|
||||||
group_state(num_phases)
|
group_state(pu.num_phases)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -84,13 +84,12 @@ namespace Opm
|
|||||||
const std::vector<ParallelWellInfo*>& parallel_well_info,
|
const std::vector<ParallelWellInfo*>& parallel_well_info,
|
||||||
const int report_step,
|
const int report_step,
|
||||||
const WellStateFullyImplicitBlackoil* prevState,
|
const WellStateFullyImplicitBlackoil* prevState,
|
||||||
const PhaseUsage& pu,
|
|
||||||
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
||||||
const SummaryState& summary_state,
|
const SummaryState& summary_state,
|
||||||
const int globalNumberOfWells)
|
const int globalNumberOfWells)
|
||||||
{
|
{
|
||||||
// call init on base class
|
// call init on base class
|
||||||
BaseType :: init(cellPressures, wells_ecl, parallel_well_info, pu, well_perf_data, summary_state);
|
BaseType :: init(cellPressures, wells_ecl, parallel_well_info, well_perf_data, summary_state);
|
||||||
|
|
||||||
for (const auto& winfo: parallel_well_info)
|
for (const auto& winfo: parallel_well_info)
|
||||||
{
|
{
|
||||||
@ -105,6 +104,7 @@ namespace Opm
|
|||||||
if( nw == 0 ) return ;
|
if( nw == 0 ) return ;
|
||||||
|
|
||||||
// Initialize perfphaserates_, which must be done here.
|
// Initialize perfphaserates_, which must be done here.
|
||||||
|
const auto& pu = this->phaseUsage();
|
||||||
const int np = pu.num_phases;
|
const int np = pu.num_phases;
|
||||||
|
|
||||||
int nperf = 0;
|
int nperf = 0;
|
||||||
@ -387,16 +387,15 @@ namespace Opm
|
|||||||
const Schedule& schedule,
|
const Schedule& schedule,
|
||||||
const bool handle_ms_well,
|
const bool handle_ms_well,
|
||||||
const size_t numCells,
|
const size_t numCells,
|
||||||
const PhaseUsage& pu,
|
|
||||||
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
const std::vector<std::vector<PerforationData>>& well_perf_data,
|
||||||
const SummaryState& summary_state,
|
const SummaryState& summary_state,
|
||||||
const int globalNumWells)
|
const int globalNumWells)
|
||||||
{
|
{
|
||||||
const std::vector<double> tmp(numCells, 0.0); // <- UGLY HACK to pass the size
|
const std::vector<double> tmp(numCells, 0.0); // <- UGLY HACK to pass the size
|
||||||
init(tmp, schedule, wells_ecl, parallel_well_info, 0, nullptr, pu, well_perf_data, summary_state, globalNumWells);
|
init(tmp, schedule, wells_ecl, parallel_well_info, 0, nullptr, well_perf_data, summary_state, globalNumWells);
|
||||||
|
|
||||||
if (handle_ms_well) {
|
if (handle_ms_well) {
|
||||||
initWellStateMSWell(wells_ecl, pu, nullptr);
|
initWellStateMSWell(wells_ecl, nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -530,18 +529,18 @@ namespace Opm
|
|||||||
}
|
}
|
||||||
|
|
||||||
data::Wells
|
data::Wells
|
||||||
report(const PhaseUsage &pu,
|
report(const int* globalCellIdxMap,
|
||||||
const int* globalCellIdxMap,
|
|
||||||
const std::function<bool(const int)>& wasDynamicallyClosed) const override
|
const std::function<bool(const int)>& wasDynamicallyClosed) const override
|
||||||
{
|
{
|
||||||
data::Wells res =
|
data::Wells res =
|
||||||
WellState::report(pu, globalCellIdxMap, wasDynamicallyClosed);
|
WellState::report(globalCellIdxMap, wasDynamicallyClosed);
|
||||||
|
|
||||||
const int nw = this->numWells();
|
const int nw = this->numWells();
|
||||||
if (nw == 0) {
|
if (nw == 0) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto& pu = this->phaseUsage();
|
||||||
const int np = pu.num_phases;
|
const int np = pu.num_phases;
|
||||||
|
|
||||||
using rt = data::Rates::opt;
|
using rt = data::Rates::opt;
|
||||||
@ -689,10 +688,12 @@ namespace Opm
|
|||||||
|
|
||||||
/// init the MS well related.
|
/// init the MS well related.
|
||||||
void initWellStateMSWell(const std::vector<Well>& wells_ecl,
|
void initWellStateMSWell(const std::vector<Well>& wells_ecl,
|
||||||
const PhaseUsage& pu, const WellStateFullyImplicitBlackoil* prev_well_state)
|
const WellStateFullyImplicitBlackoil* prev_well_state)
|
||||||
{
|
{
|
||||||
// still using the order in wells
|
// still using the order in wells
|
||||||
const int nw = wells_ecl.size();
|
const int nw = wells_ecl.size();
|
||||||
|
const auto& pu = this->phaseUsage();
|
||||||
|
const int np = pu.num_phases;
|
||||||
if (nw == 0) {
|
if (nw == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -720,7 +721,6 @@ namespace Opm
|
|||||||
nseg_ += 1;
|
nseg_ += 1;
|
||||||
seg_number_.push_back(1); // Assign single segment (top) as number 1.
|
seg_number_.push_back(1); // Assign single segment (top) as number 1.
|
||||||
seg_press_.push_back(bhp()[w]);
|
seg_press_.push_back(bhp()[w]);
|
||||||
const int np = numPhases();
|
|
||||||
for (int p = 0; p < np; ++p) {
|
for (int p = 0; p < np; ++p) {
|
||||||
seg_rates_.push_back(wellRates()[np * w + p]);
|
seg_rates_.push_back(wellRates()[np * w + p]);
|
||||||
}
|
}
|
||||||
@ -763,7 +763,6 @@ namespace Opm
|
|||||||
|
|
||||||
// for the seg_rates_, now it becomes a recursive solution procedure.
|
// for the seg_rates_, now it becomes a recursive solution procedure.
|
||||||
{
|
{
|
||||||
const int np = numPhases();
|
|
||||||
const int start_perf = connpos;
|
const int start_perf = connpos;
|
||||||
const int start_perf_next_well = connpos + num_perf_this_well;
|
const int start_perf_next_well = connpos + num_perf_this_well;
|
||||||
|
|
||||||
@ -825,7 +824,6 @@ namespace Opm
|
|||||||
|
|
||||||
if (prev_well_state && !prev_well_state->wellMap().empty()) {
|
if (prev_well_state && !prev_well_state->wellMap().empty()) {
|
||||||
const auto& end = prev_well_state->wellMap().end();
|
const auto& end = prev_well_state->wellMap().end();
|
||||||
const int np = numPhases();
|
|
||||||
for (int w = 0; w < nw; ++w) {
|
for (int w = 0; w < nw; ++w) {
|
||||||
const Well& well = wells_ecl[w];
|
const Well& well = wells_ecl[w];
|
||||||
if (well.getStatus() == Well::Status::SHUT)
|
if (well.getStatus() == Well::Status::SHUT)
|
||||||
|
@ -121,7 +121,7 @@ namespace {
|
|||||||
buildWellState(const Setup& setup, const std::size_t timeStep,
|
buildWellState(const Setup& setup, const std::size_t timeStep,
|
||||||
std::vector<Opm::ParallelWellInfo>& pinfos)
|
std::vector<Opm::ParallelWellInfo>& pinfos)
|
||||||
{
|
{
|
||||||
auto state = Opm::WellStateFullyImplicitBlackoil{setup.pu.num_phases};
|
auto state = Opm::WellStateFullyImplicitBlackoil{setup.pu};
|
||||||
|
|
||||||
const auto cpress =
|
const auto cpress =
|
||||||
std::vector<double>(setup.grid.c_grid()->number_of_cells,
|
std::vector<double>(setup.grid.c_grid()->number_of_cells,
|
||||||
@ -144,11 +144,11 @@ namespace {
|
|||||||
|
|
||||||
state.init(cpress, setup.sched,
|
state.init(cpress, setup.sched,
|
||||||
wells, ppinfos,
|
wells, ppinfos,
|
||||||
timeStep, nullptr, setup.pu, setup.well_perf_data, setup.st,
|
timeStep, nullptr, setup.well_perf_data, setup.st,
|
||||||
wells.size());
|
wells.size());
|
||||||
|
|
||||||
state.initWellStateMSWell(setup.sched.getWells(timeStep),
|
state.initWellStateMSWell(setup.sched.getWells(timeStep),
|
||||||
setup.pu, nullptr);
|
nullptr);
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ BOOST_AUTO_TEST_CASE(Pressure)
|
|||||||
|
|
||||||
setSegPress(wells, wstate);
|
setSegPress(wells, wstate);
|
||||||
|
|
||||||
const auto rpt = wstate.report(setup.pu, setup.grid.c_grid()->global_cell, [](const int){return false;});
|
const auto rpt = wstate.report(setup.grid.c_grid()->global_cell, [](const int){return false;});
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto& xw = rpt.at("INJE01");
|
const auto& xw = rpt.at("INJE01");
|
||||||
@ -321,9 +321,9 @@ BOOST_AUTO_TEST_CASE(Rates)
|
|||||||
|
|
||||||
const auto& pu = setup.pu;
|
const auto& pu = setup.pu;
|
||||||
|
|
||||||
setSegRates(wells, pu, wstate);
|
setSegRates(wells, pu, wstate);
|
||||||
|
|
||||||
const auto rpt = wstate.report(pu, setup.grid.c_grid()->global_cell, [](const int){return false;});
|
const auto rpt = wstate.report(setup.grid.c_grid()->global_cell, [](const int){return false;});
|
||||||
|
|
||||||
const auto wat = pu.phase_used[Opm::BlackoilPhases::Aqua];
|
const auto wat = pu.phase_used[Opm::BlackoilPhases::Aqua];
|
||||||
const auto oil = pu.phase_used[Opm::BlackoilPhases::Liquid];
|
const auto oil = pu.phase_used[Opm::BlackoilPhases::Liquid];
|
||||||
|
Loading…
Reference in New Issue
Block a user