move assignGroupGuideRates into BlackoilWellModelGuideRates

This commit is contained in:
Arne Morten Kvarving
2022-10-24 09:36:05 +02:00
parent 5e157cd23b
commit d42cdd409b
4 changed files with 35 additions and 32 deletions

View File

@@ -770,34 +770,6 @@ assignGroupControl(const Group& group,
}
}
void
BlackoilWellModelGeneric::
assignGroupGuideRates(const Group& group,
const std::unordered_map<std::string, data::GroupGuideRates>& groupGuideRates,
data::GroupData& gdata) const
{
auto& prod = gdata.guideRates.production; prod.clear();
auto& inj = gdata.guideRates.injection; inj .clear();
auto xgrPos = groupGuideRates.find(group.name());
if (xgrPos == groupGuideRates.end()) {
// No guiderates defined for this group.
return;
}
const auto& xgr = xgrPos->second;
if (this->guideRate_.has(group.name())) {
prod = xgr.production;
}
if (this->guideRate_.has(group.name(), Phase::WATER) ||
this->guideRate_.has(group.name(), Phase::GAS))
{
inj = xgr.injection;
}
}
void
BlackoilWellModelGeneric::
assignGroupValues(const int reportStepIdx,
@@ -811,7 +783,7 @@ assignGroupValues(const int reportStepIdx,
auto& gdata = gvalues[gname];
this->assignGroupControl(grup, gdata);
this->assignGroupGuideRates(grup, groupGuideRates, gdata);
BlackoilWellModelGuideRates(*this).assignGroupGuideRates(grup, groupGuideRates, gdata);
}
}

View File

@@ -275,9 +275,6 @@ protected:
const int reportStepIndex) const;
void assignGroupControl(const Group& group,
data::GroupData& gdata) const;
void assignGroupGuideRates(const Group& group,
const std::unordered_map<std::string, data::GroupGuideRates>& groupGuideRates,
data::GroupData& gdata) const;
void assignGroupValues(const int reportStepIdx,
std::map<std::string, data::GroupData>& gvalues) const;
void assignNodeValues(std::map<std::string, data::NodeData>& nodevalues) const;

View File

@@ -542,4 +542,32 @@ calculateAllGroupGuideRates(const int reportStepIdx) const
return gr;
}
void BlackoilWellModelGuideRates::
assignGroupGuideRates(const Group& group,
const std::unordered_map<std::string, data::GroupGuideRates>& groupGuideRates,
data::GroupData& gdata) const
{
auto& prod = gdata.guideRates.production; prod.clear();
auto& inj = gdata.guideRates.injection; inj .clear();
auto xgrPos = groupGuideRates.find(group.name());
if (xgrPos == groupGuideRates.end()) {
// No guiderates defined for this group.
return;
}
const auto& xgr = xgrPos->second;
if (wellModel_.guideRate().has(group.name())) {
prod = xgr.production;
}
if (wellModel_.guideRate().has(group.name(), Phase::WATER) ||
wellModel_.guideRate().has(group.name(), Phase::GAS))
{
inj = xgr.injection;
}
}
} // namespace Opm

View File

@@ -32,6 +32,7 @@ namespace Opm {
class BlackoilWellModelGeneric;
namespace data {
struct GroupData;
class GroupGuideRates;
class GuideRateValue;
class Wells;
@@ -56,6 +57,11 @@ public:
std::unordered_map<std::string, data::GroupGuideRates>
calculateAllGroupGuideRates(const int reportStepIdx) const;
//! \brief Assign group guide rates.
void assignGroupGuideRates(const Group& group,
const std::unordered_map<std::string, data::GroupGuideRates>& groupGuideRates,
data::GroupData& gdata) const;
private:
//! \brief Obtain guide rate values.
void getGuideRateValues(const GuideRate::RateVector& qs,