mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-18 21:43:27 -06:00
Passed around a WellControlResult argument to the different wellcontrol functions
This commit is contained in:
parent
5d39e3c0ef
commit
069ad5a611
@ -89,9 +89,10 @@ namespace Opm
|
||||
}
|
||||
|
||||
bool WellCollection::conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations, double epsilon) const {
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
WellControlResult& result, double epsilon) const {
|
||||
for(size_t i = 0; i < leaf_nodes_.size(); i++) {
|
||||
if(! static_cast<WellNode*>(leaf_nodes_[i].get())->conditionsMet(well_bhp, well_rate, grid, saturations, epsilon) ) {
|
||||
if(! static_cast<WellNode*>(leaf_nodes_[i].get())->conditionsMet(well_bhp, well_rate, grid, saturations, result, epsilon) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,9 @@ namespace Opm
|
||||
|
||||
|
||||
bool conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations, double epsilon=1e-8) const;
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
WellControlResult& result,
|
||||
double epsilon=1e-8) const;
|
||||
|
||||
const std::vector<std::tr1::shared_ptr<WellsGroupInterface> >& getLeafNodes() const;
|
||||
|
||||
|
@ -117,13 +117,14 @@ namespace Opm
|
||||
|
||||
|
||||
bool WellsGroup::conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
const struct Wells* wells, int index_of_well, double epsilon)
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
const struct Wells* wells, int index_of_well, WellControlResult& result,
|
||||
double epsilon)
|
||||
{
|
||||
if (parent_ != NULL) {
|
||||
bool parent_ok =
|
||||
(static_cast<WellsGroup*> (parent_))->conditionsMet(well_bhp,
|
||||
well_rate,grid, saturations, wells, index_of_well, epsilon);
|
||||
well_rate,grid, saturations, wells, index_of_well, result, epsilon);
|
||||
if (!parent_ok) {
|
||||
return false;
|
||||
}
|
||||
@ -207,11 +208,19 @@ namespace Opm
|
||||
}
|
||||
|
||||
bool WellNode::conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations, double epsilon)
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
WellControlResult& result, double epsilon)
|
||||
{
|
||||
|
||||
if (parent_ != NULL) {
|
||||
bool parent_ok = (static_cast<WellsGroup*> (parent_))->conditionsMet(well_bhp, well_rate, grid, saturations, wells_, self_index_, epsilon);
|
||||
bool parent_ok = (static_cast<WellsGroup*> (parent_))->conditionsMet(well_bhp,
|
||||
well_rate,
|
||||
grid,
|
||||
saturations,
|
||||
wells_,
|
||||
self_index_,
|
||||
result,
|
||||
epsilon);
|
||||
if (!parent_ok) {
|
||||
return false;
|
||||
}
|
||||
|
@ -11,6 +11,18 @@
|
||||
namespace Opm
|
||||
{
|
||||
|
||||
struct ExceedInformation {
|
||||
std::string group_name_;
|
||||
int well_index_;
|
||||
double surplus_;
|
||||
};
|
||||
|
||||
struct WellControlResult {
|
||||
std::vector<ExceedInformation> oil_rate_;
|
||||
std::vector<ExceedInformation> fluid_rate_;
|
||||
std::vector<ExceedInformation> bhp_;
|
||||
|
||||
};
|
||||
class WellsGroupInterface
|
||||
{
|
||||
public:
|
||||
@ -76,7 +88,7 @@ namespace Opm
|
||||
|
||||
bool conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations, const struct Wells* wells,
|
||||
int index_of_well, double epsilon = 1e-8);
|
||||
int index_of_well, WellControlResult& result, double epsilon = 1e-8);
|
||||
|
||||
virtual void calculateGuideRates();
|
||||
|
||||
@ -97,7 +109,8 @@ namespace Opm
|
||||
|
||||
virtual WellsGroupInterface* findGroup(std::string name_of_node);
|
||||
virtual bool conditionsMet(const std::vector<double>& well_bhp, const std::vector<double>& well_rate,
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations, double epsilon=1e-8);
|
||||
const UnstructuredGrid& grid, const std::vector<double>& saturations,
|
||||
WellControlResult& result, double epsilon=1e-8);
|
||||
virtual bool isLeafNode() const;
|
||||
|
||||
void setWellsPointer(const struct Wells* wells, int self_index);
|
||||
|
Loading…
Reference in New Issue
Block a user