diff --git a/opm/core/InjectionSpecification.cpp b/opm/core/InjectionSpecification.cpp index 2cd8fec1..7ed0d225 100644 --- a/opm/core/InjectionSpecification.cpp +++ b/opm/core/InjectionSpecification.cpp @@ -4,7 +4,7 @@ namespace Opm InjectionSpecification::InjectionSpecification() : injector_type_(WATER), control_mode_(NONE), surface_flow_max_rate_(1e100), - reinjection_fraction_target_(0.0), BHP_limit_(1e100) + reinjection_fraction_target_(0.0), BHP_limit_(1e100), fluid_volume_max_rate_(1e100) { } diff --git a/opm/core/WellsGroup.cpp b/opm/core/WellsGroup.cpp index 510b6505..f07594fe 100644 --- a/opm/core/WellsGroup.cpp +++ b/opm/core/WellsGroup.cpp @@ -128,7 +128,7 @@ namespace Opm } } - int number_of_leaf_nodes = 1;//numberOfLeafNodes(); + int number_of_leaf_nodes = numberOfLeafNodes(); double bhp_target = 1e100; double rate_target = 1e100; @@ -154,9 +154,10 @@ namespace Opm return false; } if(well_rate[index_of_well] - rate_target > epsilon) { - std::cout << wells->type[index_of_well] << 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 << injSpec().fluid_volume_max_rate_ << std::endl; + std::cout << "Group name = " << name() << std::endl; return false; } return true; @@ -422,6 +423,7 @@ namespace Opm injection_specification.injector_type_ = toSurfaceComponent(line.injector_type_); injection_specification.control_mode_ = toInjectionControlMode(line.control_mode_); injection_specification.surface_flow_max_rate_ = line.surface_flow_max_rate_; + injection_specification.fluid_volume_max_rate_ = line.resv_flow_max_rate_; } } } diff --git a/opm/core/eclipse/SpecialEclipseFields.hpp b/opm/core/eclipse/SpecialEclipseFields.hpp index 3a1e46bd..0e1fa778 100644 --- a/opm/core/eclipse/SpecialEclipseFields.hpp +++ b/opm/core/eclipse/SpecialEclipseFields.hpp @@ -999,12 +999,13 @@ struct GconinjeLine std::string injector_type_; // Injector type std::string control_mode_; // Control mode double surface_flow_max_rate_; // Surface flow rate target or upper limit - + double resv_flow_max_rate_; // Reservoir flow rate target or upper limit double reinjection_fraction_target_; // Default values GconinjeLine() : - surface_flow_max_rate_(1.0E20), reinjection_fraction_target_(1E20) + surface_flow_max_rate_(1.0E20), reinjection_fraction_target_(1E20), + resv_flow_max_rate_(1E20) { } }; @@ -1044,6 +1045,7 @@ struct GCONINJE : public SpecialBase const int num_to_read = 10; int num_read = readDefaultedVectorData(is, double_data, num_to_read); gconinje_line.surface_flow_max_rate_ = double_data[0]; + gconinje_line.resv_flow_max_rate_ = double_data[1]; gconinje_line.reinjection_fraction_target_ = double_data[2]; // HACK! Ignore any further items if (num_read == num_to_read) {