mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-18 21:43:27 -06:00
Merge pull request #1041 from jokva/removal-shared_ptr-well
WellPtr and GroupPtr deprecated
This commit is contained in:
commit
f909d071d9
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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_;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user