mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-18 21:43:27 -06:00
Added shutdown of wells when they exceed their limits (if procedure = shut).
This commit is contained in:
parent
24cefa60bc
commit
95818d1f02
@ -130,6 +130,7 @@ namespace Opm
|
|||||||
|
|
||||||
int number_of_leaf_nodes = numberOfLeafNodes();
|
int number_of_leaf_nodes = numberOfLeafNodes();
|
||||||
|
|
||||||
|
bool shut_down_on_exceed = false;
|
||||||
double bhp_target = 1e100;
|
double bhp_target = 1e100;
|
||||||
double rate_target = 1e100;
|
double rate_target = 1e100;
|
||||||
switch(wells->type[index_of_well]) {
|
switch(wells->type[index_of_well]) {
|
||||||
@ -145,6 +146,7 @@ namespace Opm
|
|||||||
const ProductionSpecification& prod_spec = prodSpec();
|
const ProductionSpecification& prod_spec = prodSpec();
|
||||||
bhp_target = prod_spec.BHP_limit_ / number_of_leaf_nodes;
|
bhp_target = prod_spec.BHP_limit_ / number_of_leaf_nodes;
|
||||||
rate_target = prod_spec.fluid_volume_max_rate_ / number_of_leaf_nodes;
|
rate_target = prod_spec.fluid_volume_max_rate_ / number_of_leaf_nodes;
|
||||||
|
shut_down_on_exceed = prodSpec().procedure_ == ProductionSpecification::Well;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -153,12 +155,22 @@ namespace Opm
|
|||||||
std::cout << "BHP not met" << std::endl;
|
std::cout << "BHP not met" << std::endl;
|
||||||
std::cout << "BHP limit was " << bhp_target << std::endl;
|
std::cout << "BHP limit was " << bhp_target << std::endl;
|
||||||
std::cout << "Actual bhp was " << well_bhp[index_of_well] << std::endl;
|
std::cout << "Actual bhp was " << well_bhp[index_of_well] << std::endl;
|
||||||
|
|
||||||
|
if(shut_down_on_exceed) {
|
||||||
|
// Shut down well
|
||||||
|
wells->ctrls->target = 0.0;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(well_rate[index_of_well] - rate_target > epsilon) {
|
if(well_rate[index_of_well] - rate_target > epsilon) {
|
||||||
std::cout << "well_rate not met" << std::endl;
|
std::cout << "well_rate not met" << std::endl;
|
||||||
std::cout << "target = " << rate_target << ", well_rate[index_of_well] = " << well_rate[index_of_well] << std::endl;
|
std::cout << "target = " << rate_target << ", well_rate[index_of_well] = " << well_rate[index_of_well] << std::endl;
|
||||||
std::cout << "Group name = " << name() << std::endl;
|
std::cout << "Group name = " << name() << std::endl;
|
||||||
|
|
||||||
|
if(shut_down_on_exceed) {
|
||||||
|
// Shut down well
|
||||||
|
wells->ctrls->target = 0.0;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user