Revert "Use index according to eclipse schedule to identify deactivated wells."

This reverts commit 09205dfa074af24b381595d02c15e799523ddb2b.

We cannot use the index as it might change for a well between different
report steps. Unfortunately the only persistent way to identify wells
over all report steps in the schedule seems to be the well name.
This commit is contained in:
Markus Blatt 2016-09-12 09:44:43 +02:00
parent 05add1884f
commit c4f0539534
3 changed files with 10 additions and 15 deletions

View File

@ -341,7 +341,7 @@ namespace Opm
UgGridHelpers::dimensions(grid),
UgGridHelpers::cell2Faces(grid), UgGridHelpers::beginFaceCentroids(grid),
permeability, dummy_list_econ_limited, dummy_well_potentials,
std::set<int>());
std::set<std::string>());
}

View File

@ -78,8 +78,7 @@ namespace Opm
/// well productivity indices, otherwise it must be given in
/// order to approximate these by the Peaceman formula.
///
/// \param deactivated_wells The indices (according to the
/// eclipse schedule) of wells that should be treated
/// \param deactivated_wells A set of wells that should be treated
/// like shut wells. E.g. in a a parallel run these would be
/// the wells handeled by another process. Defaults to empty set.
template<class F2C, class FC>
@ -95,7 +94,7 @@ namespace Opm
const DynamicListEconLimited& list_econ_limited,
bool is_parallel_run=false,
const std::vector<double>& well_potentials={},
const std::set<int>& deactivated_wells = {});
const std::set<std::string>& deactivated_wells = {});
WellsManager(const Opm::EclipseStateConstPtr eclipseState,
const size_t timeStep,
@ -165,7 +164,7 @@ namespace Opm
const double* permeability,
const DynamicListEconLimited& list_econ_limited,
const std::vector<double>& well_potentials,
const std::set<int>& deactivated_wells);
const std::set<std::string>& deactivated_wells);
// Disable copying and assignment.
WellsManager(const WellsManager& other);
WellsManager& operator=(const WellsManager& other);
@ -190,7 +189,7 @@ namespace Opm
const double* permeability,
const NTG& ntg,
std::vector<int>& wells_on_proc,
const std::set<int>& deactivated_wells,
const std::set<std::string>& deactivated_wells,
const DynamicListEconLimited& list_econ_limited);
void addChildGroups(GroupTreeNodeConstPtr parentNode, std::shared_ptr< const Schedule > schedule, size_t timeStep, const PhaseUsage& phaseUsage);

View File

@ -121,7 +121,7 @@ void WellsManager::createWellsFromSpecs(std::vector<const Well*>& wells, size_t
const double* permeability,
const NTG& ntg,
std::vector<int>& wells_on_proc,
const std::set<int>& ignored_wells,
const std::set<std::string>& ignored_wells,
const DynamicListEconLimited& list_econ_limited)
{
if (dimensions != 3) {
@ -134,8 +134,6 @@ void WellsManager::createWellsFromSpecs(std::vector<const Well*>& wells, size_t
wellperf_data.resize(wells.size());
wells_on_proc.resize(wells.size(), 1);
auto ignored_well = ignored_wells.begin();
// The well index on the current process.
// Note that some wells are deactivated as they live on the interior
// domain of another proccess. Therefore this might different from
@ -143,11 +141,9 @@ void WellsManager::createWellsFromSpecs(std::vector<const Well*>& wells, size_t
int active_well_index = 0;
for (auto wellIter= wells.begin(); wellIter != wells.end(); ++wellIter) {
const auto* well = (*wellIter);
const int well_index = wellIter - wells.begin();
if ( ignored_well != ignored_wells.end() && *ignored_well == well_index ) {
wells_on_proc[ well_index ] = 0;
++ignored_well;
if ( ignored_wells.find(well->name()) != ignored_wells.end() ) {
wells_on_proc[ wellIter - wells.begin() ] = 0;
continue;
}
@ -321,7 +317,7 @@ WellsManager(const Opm::EclipseStateConstPtr eclipseState,
const DynamicListEconLimited& list_econ_limited,
bool is_parallel_run,
const std::vector<double>& well_potentials,
const std::set<int>& deactivated_wells)
const std::set<std::string>& deactivated_wells)
: w_(0), is_parallel_run_(is_parallel_run)
{
init(eclipseState, timeStep, number_of_cells, global_cell,
@ -343,7 +339,7 @@ WellsManager::init(const Opm::EclipseStateConstPtr eclipseState,
const double* permeability,
const DynamicListEconLimited& list_econ_limited,
const std::vector<double>& well_potentials,
const std::set<int>& deactivated_wells)
const std::set<std::string>& deactivated_wells)
{
if (dimensions != 3) {
OPM_THROW(std::runtime_error,