bring setWSolvent closer to original code

by introducing a getter for generic wells
This commit is contained in:
Arne Morten Kvarving 2021-06-07 13:04:29 +02:00
parent 60e7c90b1e
commit c5fae280f3
4 changed files with 20 additions and 13 deletions

View File

@ -391,7 +391,6 @@ namespace Opm {
void wellTesting(const int timeStepIdx, const double simulationTime, DeferredLogger& deferred_logger);
void setWellWsolvent(const std::string& name, double wsolvent) override;
void calcRates(const int fipnum,
const int pvtreg,
std::vector<double>& resv_coeff) override;

View File

@ -1124,7 +1124,7 @@ setWsolvent(const Group& group,
if (wellTmp.getStatus() == Well::Status::SHUT)
continue;
this->setWellWsolvent(wellName, wsolvent);
getGenWell(wellName)->setWsolvent(wsolvent);
}
}
@ -1621,4 +1621,20 @@ calculateEfficiencyFactors(const int reportStepIdx)
}
}
WellInterfaceGeneric*
BlackoilWellModelGeneric::
getGenWell(const std::string& well_name)
{
// finding the iterator of the well in wells_ecl
auto well = std::find_if(well_container_generic_.begin(),
well_container_generic_.end(),
[&well_name](const WellInterfaceGeneric* elem)->bool {
return elem->name() == well_name;
});
assert(well != well_container_generic_.end());
return *well;
}
}

View File

@ -243,7 +243,6 @@ protected:
void setWsolvent(const Group& group,
const int reportStepIdx,
double wsolvent);
virtual void setWellWsolvent(const std::string& name, double wsolvent) = 0;
virtual void calcRates(const int fipnum,
const int pvtreg,
std::vector<double>& resv_coeff) = 0;
@ -369,6 +368,9 @@ protected:
WGState active_wgstate_;
WGState last_valid_wgstate_;
WGState nupcol_wgstate_;
private:
WellInterfaceGeneric* getGenWell(const std::string& well_name);
};

View File

@ -1587,16 +1587,6 @@ namespace Opm {
template<typename TypeTag>
void
BlackoilWellModel<TypeTag>::
setWellWsolvent(const std::string& wellName, double wsolvent) {
auto well = getWell(wellName);
well->setWsolvent(wsolvent);
}
template<typename TypeTag>
void
BlackoilWellModel<TypeTag>::