Merge pull request #1041 from jokva/removal-shared_ptr-well

WellPtr and GroupPtr deprecated
This commit is contained in:
Joakim Hove 2016-06-20 14:57:10 +02:00 committed by GitHub
commit f909d071d9
9 changed files with 32 additions and 33 deletions

View File

@ -29,7 +29,7 @@
namespace Opm namespace Opm
{ {
void WellCollection::addField(GroupConstPtr fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage) { void WellCollection::addField(const Group* fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage) {
WellsGroupInterface* fieldNode = findNode(fieldGroup->name()); WellsGroupInterface* fieldNode = findNode(fieldGroup->name());
if (fieldNode) { if (fieldNode) {
OPM_THROW(std::runtime_error, "Trying to add FIELD node, but this already exists. Can only have one FIELD node."); OPM_THROW(std::runtime_error, "Trying to add FIELD node, but this already exists. Can only have one FIELD node.");
@ -38,7 +38,7 @@ namespace Opm
roots_.push_back(createGroupWellsGroup(fieldGroup, timeStep, phaseUsage)); roots_.push_back(createGroupWellsGroup(fieldGroup, timeStep, phaseUsage));
} }
void WellCollection::addGroup(GroupConstPtr groupChild, std::string parent_name, void WellCollection::addGroup(const Group* groupChild, std::string parent_name,
size_t timeStep, const PhaseUsage& phaseUsage) { size_t timeStep, const PhaseUsage& phaseUsage) {
WellsGroupInterface* parent = findNode(parent_name); WellsGroupInterface* parent = findNode(parent_name);
if (!parent) { if (!parent) {
@ -60,7 +60,7 @@ namespace Opm
child->setParent(parent); child->setParent(parent);
} }
void WellCollection::addWell(WellConstPtr wellChild, size_t timeStep, const PhaseUsage& phaseUsage) { void WellCollection::addWell(const Well* wellChild, size_t timeStep, const PhaseUsage& phaseUsage) {
if (wellChild->getStatus(timeStep) == WellCommon::SHUT) { if (wellChild->getStatus(timeStep) == WellCommon::SHUT) {
//SHUT wells are not added to the well collection //SHUT wells are not added to the well collection
return; return;

View File

@ -36,11 +36,11 @@ namespace Opm
{ {
public: public:
void addField(GroupConstPtr fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage); void addField(const Group* fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage);
void addWell(WellConstPtr wellChild, size_t timeStep, const PhaseUsage& phaseUsage); void addWell(const Well* wellChild, size_t timeStep, const PhaseUsage& phaseUsage);
void addGroup(GroupConstPtr groupChild, std::string parent_name, void addGroup(const Group* groupChild, std::string parent_name,
size_t timeStep, const PhaseUsage& phaseUsage); size_t timeStep, const PhaseUsage& phaseUsage);
/// Adds the child to the collection /// Adds the child to the collection

View File

@ -1064,7 +1064,7 @@ namespace Opm
} }
} // anonymous namespace } // anonymous namespace
std::shared_ptr<WellsGroupInterface> createGroupWellsGroup(GroupConstPtr group, size_t timeStep, const PhaseUsage& phase_usage ) std::shared_ptr<WellsGroupInterface> createGroupWellsGroup(const Group* group, size_t timeStep, const PhaseUsage& phase_usage )
{ {
InjectionSpecification injection_specification; InjectionSpecification injection_specification;
ProductionSpecification production_specification; ProductionSpecification production_specification;
@ -1099,7 +1099,7 @@ namespace Opm
'CMODE_UNDEFINED' - we do not carry that over the specification 'CMODE_UNDEFINED' - we do not carry that over the specification
objects here. objects here.
*/ */
std::shared_ptr<WellsGroupInterface> createWellWellsGroup(WellConstPtr well, size_t timeStep, const PhaseUsage& phase_usage ) std::shared_ptr<WellsGroupInterface> createWellWellsGroup(const Well* well, size_t timeStep, const PhaseUsage& phase_usage )
{ {
InjectionSpecification injection_specification; InjectionSpecification injection_specification;
ProductionSpecification production_specification; ProductionSpecification production_specification;

View File

@ -406,14 +406,14 @@ namespace Opm
/// \param[in] well the Well to construct object for /// \param[in] well the Well to construct object for
/// \param[in] timeStep the time step in question /// \param[in] timeStep the time step in question
/// \param[in] the phase usage /// \param[in] the phase usage
std::shared_ptr<WellsGroupInterface> createWellWellsGroup(WellConstPtr well, size_t timeStep, std::shared_ptr<WellsGroupInterface> createWellWellsGroup(const Well* well, size_t timeStep,
const PhaseUsage& phase_usage ); const PhaseUsage& phase_usage );
/// Creates the WellsGroupInterface for the given Group /// Creates the WellsGroupInterface for the given Group
/// \param[in] group the Group to construct object for /// \param[in] group the Group to construct object for
/// \param[in] timeStep the time step in question /// \param[in] timeStep the time step in question
/// \param[in] the phase usage /// \param[in] the phase usage
std::shared_ptr<WellsGroupInterface> createGroupWellsGroup(GroupConstPtr group, size_t timeStep, std::shared_ptr<WellsGroupInterface> createGroupWellsGroup(const Group* group, size_t timeStep,
const PhaseUsage& phase_usage ); const PhaseUsage& phase_usage );
} }
#endif /* OPM_WELLSGROUP_HPP */ #endif /* OPM_WELLSGROUP_HPP */

View File

@ -414,7 +414,7 @@ namespace Opm
void WellsManager::setupWellControls(std::vector<WellConstPtr>& wells, size_t timeStep, void WellsManager::setupWellControls(std::vector< const Well* >& wells, size_t timeStep,
std::vector<std::string>& well_names, const PhaseUsage& phaseUsage, std::vector<std::string>& well_names, const PhaseUsage& phaseUsage,
const std::vector<int>& wells_on_proc) { const std::vector<int>& wells_on_proc) {
int well_index = 0; int well_index = 0;
@ -427,7 +427,7 @@ namespace Opm
continue; continue;
} }
WellConstPtr well = (*wellIter); const auto* well = (*wellIter);
if (well->getStatus(timeStep) == WellCommon::STOP) { if (well->getStatus(timeStep) == WellCommon::STOP) {
// STOPed wells are kept in the well list but marked as stopped. // STOPed wells are kept in the well list but marked as stopped.
@ -728,12 +728,12 @@ namespace Opm
} }
void WellsManager::setupGuideRates(std::vector<WellConstPtr>& wells, const size_t timeStep, std::vector<WellData>& well_data, std::map<std::string, int>& well_names_to_index, void WellsManager::setupGuideRates(std::vector< const Well* >& wells, const size_t timeStep, std::vector<WellData>& well_data, std::map<std::string, int>& well_names_to_index,
const PhaseUsage& phaseUsage, const std::vector<double>& well_potentials) const PhaseUsage& phaseUsage, const std::vector<double>& well_potentials)
{ {
const int np = phaseUsage.num_phases; const int np = phaseUsage.num_phases;
for (auto wellIter = wells.begin(); wellIter != wells.end(); ++wellIter ) { for (auto wellIter = wells.begin(); wellIter != wells.end(); ++wellIter ) {
WellConstPtr well = *wellIter; const auto* well = *wellIter;
if (well->getStatus(timeStep) == WellCommon::SHUT) { if (well->getStatus(timeStep) == WellCommon::SHUT) {
//SHUT wells does not need guide rates //SHUT wells does not need guide rates

View File

@ -160,12 +160,12 @@ namespace Opm
WellsManager(const WellsManager& other); WellsManager(const WellsManager& other);
WellsManager& operator=(const WellsManager& other); WellsManager& operator=(const WellsManager& other);
static void setupCompressedToCartesian(const int* global_cell, int number_of_cells, std::map<int,int>& cartesian_to_compressed ); static void setupCompressedToCartesian(const int* global_cell, int number_of_cells, std::map<int,int>& cartesian_to_compressed );
void setupWellControls(std::vector<WellConstPtr>& wells, size_t timeStep, void setupWellControls(std::vector<const Well*>& wells, size_t timeStep,
std::vector<std::string>& well_names, const PhaseUsage& phaseUsage, std::vector<std::string>& well_names, const PhaseUsage& phaseUsage,
const std::vector<int>& wells_on_proc); const std::vector<int>& wells_on_proc);
template<class C2F, class FC, class NTG> template<class C2F, class FC, class NTG>
void createWellsFromSpecs( std::vector<WellConstPtr>& wells, size_t timeStep, void createWellsFromSpecs( std::vector<const Well*>& wells, size_t timeStep,
const C2F& cell_to_faces, const C2F& cell_to_faces,
const int* cart_dims, const int* cart_dims,
FC begin_face_centroids, FC begin_face_centroids,
@ -181,7 +181,7 @@ namespace Opm
std::vector<int>& wells_on_proc); std::vector<int>& wells_on_proc);
void addChildGroups(GroupTreeNodeConstPtr parentNode, std::shared_ptr< const Schedule > schedule, size_t timeStep, const PhaseUsage& phaseUsage); void addChildGroups(GroupTreeNodeConstPtr parentNode, std::shared_ptr< const Schedule > schedule, size_t timeStep, const PhaseUsage& phaseUsage);
void setupGuideRates(std::vector<WellConstPtr>& wells, const size_t timeStep, std::vector<WellData>& well_data, std::map<std::string, int>& well_names_to_index, void setupGuideRates(std::vector<const Well*>& wells, const size_t timeStep, std::vector<WellData>& well_data, std::map<std::string, int>& well_names_to_index,
const PhaseUsage& phaseUsage, const std::vector<double>& well_potentials); const PhaseUsage& phaseUsage, const std::vector<double>& well_potentials);
// Data // Data
Wells* w_; Wells* w_;

View File

@ -107,7 +107,7 @@ getCubeDim(const C2F& c2f,
namespace Opm namespace Opm
{ {
template<class C2F, class FC, class NTG> template<class C2F, class FC, class NTG>
void WellsManager::createWellsFromSpecs(std::vector<WellConstPtr>& wells, size_t timeStep, void WellsManager::createWellsFromSpecs(std::vector<const Well*>& wells, size_t timeStep,
const C2F& c2f, const C2F& c2f,
const int* cart_dims, const int* cart_dims,
FC begin_face_centroids, FC begin_face_centroids,
@ -138,7 +138,7 @@ void WellsManager::createWellsFromSpecs(std::vector<WellConstPtr>& wells, size_t
// the index of the well according to the eclipse state // the index of the well according to the eclipse state
int well_index_on_proc = 0; int well_index_on_proc = 0;
for (auto wellIter= wells.begin(); wellIter != wells.end(); ++wellIter) { for (auto wellIter= wells.begin(); wellIter != wells.end(); ++wellIter) {
WellConstPtr well = (*wellIter); const auto* well = (*wellIter);
if (well->getStatus(timeStep) == WellCommon::SHUT) { if (well->getStatus(timeStep) == WellCommon::SHUT) {
continue; continue;
@ -379,8 +379,8 @@ WellsManager::init(const Opm::EclipseStateConstPtr eclipseState,
std::map<std::string, int> well_names_to_index; std::map<std::string, int> well_names_to_index;
auto schedule = eclipseState->getSchedule(); auto schedule = eclipseState->getSchedule();
std::vector<WellConstPtr> wells = schedule->getWells(timeStep); auto wells = schedule->getWells(timeStep);
std::vector<int> wells_on_proc; std::vector<int> wells_on_proc;
well_names.reserve(wells.size()); well_names.reserve(wells.size());
well_data.reserve(wells.size()); well_data.reserve(wells.size());
@ -418,8 +418,7 @@ WellsManager::init(const Opm::EclipseStateConstPtr eclipseState,
GroupTreeNodeConstPtr fieldNode = GroupTreeNodeConstPtr fieldNode =
schedule->getGroupTree(timeStep)->getNode("FIELD"); schedule->getGroupTree(timeStep)->getNode("FIELD");
GroupConstPtr fieldGroup = const auto* fieldGroup = schedule->getGroup(fieldNode->name());
schedule->getGroup(fieldNode->name());
well_collection_.addField(fieldGroup, timeStep, pu); well_collection_.addField(fieldGroup, timeStep, pu);
addChildGroups(fieldNode, schedule, timeStep, pu); addChildGroups(fieldNode, schedule, timeStep, pu);

View File

@ -54,24 +54,24 @@ BOOST_AUTO_TEST_CASE(AddWellsAndGroupToCollection) {
WellCollection collection; WellCollection collection;
// Add groups to WellCollection // Add groups to WellCollection
GroupConstPtr fieldGroup = eclipseState->getSchedule()->getGroup(field->name()); const auto* fieldGroup = eclipseState->getSchedule()->getGroup(field->name());
collection.addField(fieldGroup, 2, pu); collection.addField(fieldGroup, 2, pu);
for (auto iter = field->begin(); iter != field->end(); ++iter) { for (auto iter = field->begin(); iter != field->end(); ++iter) {
GroupConstPtr childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name()); const auto* childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name());
collection.addGroup(childGroupNode, fieldGroup->name(), 2, pu); collection.addGroup(childGroupNode, fieldGroup->name(), 2, pu);
} }
GroupConstPtr g1Group = eclipseState->getSchedule()->getGroup(g1->name()); const auto* g1Group = eclipseState->getSchedule()->getGroup(g1->name());
for (auto iter = g1->begin(); iter != g1->end(); ++iter) { for (auto iter = g1->begin(); iter != g1->end(); ++iter) {
GroupConstPtr childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name()); const auto* childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name());
collection.addGroup(childGroupNode, g1Group->name(), 2, pu); collection.addGroup(childGroupNode, g1Group->name(), 2, pu);
} }
GroupConstPtr g2Group = eclipseState->getSchedule()->getGroup(g2->name()); const auto* g2Group = eclipseState->getSchedule()->getGroup(g2->name());
for (auto iter = g2->begin(); iter != g2->end(); ++iter) { for (auto iter = g2->begin(); iter != g2->end(); ++iter) {
GroupConstPtr childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name()); const auto* childGroupNode = eclipseState->getSchedule()->getGroup((*iter).second->name());
collection.addGroup(childGroupNode, g2Group->name(), 2, pu); collection.addGroup(childGroupNode, g2Group->name(), 2, pu);
} }
@ -81,7 +81,7 @@ BOOST_AUTO_TEST_CASE(AddWellsAndGroupToCollection) {
// Add wells to WellCollection // Add wells to WellCollection
WellCollection wellCollection; WellCollection wellCollection;
std::vector<WellConstPtr> wells = eclipseState->getSchedule()->getWells(); auto wells = eclipseState->getSchedule()->getWells();
for (size_t i=0; i<wells.size(); i++) { for (size_t i=0; i<wells.size(); i++) {
collection.addWell(wells[i], 2, pu); collection.addWell(wells[i], 2, pu);
} }

View File

@ -55,10 +55,10 @@ BOOST_AUTO_TEST_CASE(ConstructGroupFromWell) {
EclipseStateConstPtr eclipseState(new EclipseState(deck , parseContext)); EclipseStateConstPtr eclipseState(new EclipseState(deck , parseContext));
PhaseUsage pu = phaseUsageFromDeck(eclipseState); PhaseUsage pu = phaseUsageFromDeck(eclipseState);
std::vector<WellConstPtr> wells = eclipseState->getSchedule()->getWells(); auto wells = eclipseState->getSchedule()->getWells();
for (size_t i=0; i<wells.size(); i++) { for (size_t i=0; i<wells.size(); i++) {
WellConstPtr well = wells[i]; const auto* well = wells[i];
std::shared_ptr<WellsGroupInterface> wellsGroup = createWellWellsGroup(well, 2, pu); std::shared_ptr<WellsGroupInterface> wellsGroup = createWellWellsGroup(well, 2, pu);
BOOST_CHECK_EQUAL(well->name(), wellsGroup->name()); BOOST_CHECK_EQUAL(well->name(), wellsGroup->name());
if (well->isInjector(2)) { if (well->isInjector(2)) {
@ -91,7 +91,7 @@ BOOST_AUTO_TEST_CASE(ConstructGroupFromGroup) {
std::vector<GroupTreeNodeConstPtr> nodes = eclipseState->getSchedule()->getGroupTree(2)->getNodes(); std::vector<GroupTreeNodeConstPtr> nodes = eclipseState->getSchedule()->getGroupTree(2)->getNodes();
for (size_t i=0; i<nodes.size(); i++) { for (size_t i=0; i<nodes.size(); i++) {
GroupConstPtr group = eclipseState->getSchedule()->getGroup(nodes[i]->name()); const auto* group = eclipseState->getSchedule()->getGroup(nodes[i]->name());
std::shared_ptr<WellsGroupInterface> wellsGroup = createGroupWellsGroup(group, 2, pu); std::shared_ptr<WellsGroupInterface> wellsGroup = createGroupWellsGroup(group, 2, pu);
BOOST_CHECK_EQUAL(group->name(), wellsGroup->name()); BOOST_CHECK_EQUAL(group->name(), wellsGroup->name());
if (group->isInjectionGroup(2)) { if (group->isInjectionGroup(2)) {