From 82822160af017a84ad629f303cce5c5c512f9e15 Mon Sep 17 00:00:00 2001 From: Markus Blatt Date: Mon, 12 Sep 2016 12:03:39 +0200 Subject: [PATCH] Use an unordered_set of string to identify defunct wells. We do not rely on the order of the set and hope that the lookup might be faster as it prevents string comparisons. --- opm/core/wells/WellsManager.cpp | 2 +- opm/core/wells/WellsManager.hpp | 7 ++++--- opm/core/wells/WellsManager_impl.hpp | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/opm/core/wells/WellsManager.cpp b/opm/core/wells/WellsManager.cpp index 67dbf29e..897d5301 100644 --- a/opm/core/wells/WellsManager.cpp +++ b/opm/core/wells/WellsManager.cpp @@ -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()); + std::unordered_set()); } diff --git a/opm/core/wells/WellsManager.hpp b/opm/core/wells/WellsManager.hpp index 5eb42dcb..56e2526a 100644 --- a/opm/core/wells/WellsManager.hpp +++ b/opm/core/wells/WellsManager.hpp @@ -20,6 +20,7 @@ #ifndef OPM_WELLSMANAGER_HEADER_INCLUDED #define OPM_WELLSMANAGER_HEADER_INCLUDED +#include #include @@ -94,7 +95,7 @@ namespace Opm const DynamicListEconLimited& list_econ_limited, bool is_parallel_run=false, const std::vector& well_potentials={}, - const std::set& deactivated_wells = {}); + const std::unordered_set& deactivated_wells = {}); WellsManager(const Opm::EclipseStateConstPtr eclipseState, const size_t timeStep, @@ -164,7 +165,7 @@ namespace Opm const double* permeability, const DynamicListEconLimited& list_econ_limited, const std::vector& well_potentials, - const std::set& deactivated_wells); + const std::unordered_set& deactivated_wells); // Disable copying and assignment. WellsManager(const WellsManager& other); WellsManager& operator=(const WellsManager& other); @@ -189,7 +190,7 @@ namespace Opm const double* permeability, const NTG& ntg, std::vector& wells_on_proc, - const std::set& deactivated_wells, + const std::unordered_set& deactivated_wells, const DynamicListEconLimited& list_econ_limited); void addChildGroups(GroupTreeNodeConstPtr parentNode, std::shared_ptr< const Schedule > schedule, size_t timeStep, const PhaseUsage& phaseUsage); diff --git a/opm/core/wells/WellsManager_impl.hpp b/opm/core/wells/WellsManager_impl.hpp index c19a885e..48196744 100644 --- a/opm/core/wells/WellsManager_impl.hpp +++ b/opm/core/wells/WellsManager_impl.hpp @@ -121,7 +121,7 @@ void WellsManager::createWellsFromSpecs(std::vector& wells, size_t const double* permeability, const NTG& ntg, std::vector& wells_on_proc, - const std::set& ignored_wells, + const std::unordered_set& ignored_wells, const DynamicListEconLimited& list_econ_limited) { if (dimensions != 3) { @@ -317,7 +317,7 @@ WellsManager(const Opm::EclipseStateConstPtr eclipseState, const DynamicListEconLimited& list_econ_limited, bool is_parallel_run, const std::vector& well_potentials, - const std::set& deactivated_wells) + const std::unordered_set& deactivated_wells) : w_(0), is_parallel_run_(is_parallel_run) { init(eclipseState, timeStep, number_of_cells, global_cell, @@ -339,7 +339,7 @@ WellsManager::init(const Opm::EclipseStateConstPtr eclipseState, const double* permeability, const DynamicListEconLimited& list_econ_limited, const std::vector& well_potentials, - const std::set& deactivated_wells) + const std::unordered_set& deactivated_wells) { if (dimensions != 3) { OPM_THROW(std::runtime_error,