Properly initialize UDA values for group production and injection
This commit is contained in:
@@ -116,6 +116,9 @@ static GuideRateTarget GuideRateTargetFromString( const std::string& stringValue
|
||||
|
||||
|
||||
struct GroupInjectionProperties {
|
||||
GroupInjectionProperties();
|
||||
GroupInjectionProperties(Phase phase, const UnitSystem& unit_system);
|
||||
|
||||
Phase phase = Phase::WATER;
|
||||
InjectionCMode cmode = InjectionCMode::NONE;
|
||||
UDAValue surface_max_rate;
|
||||
@@ -162,10 +165,8 @@ struct InjectionControls {
|
||||
};
|
||||
|
||||
struct GroupProductionProperties {
|
||||
GroupProductionProperties() = default;
|
||||
GroupProductionProperties(const std::string& gname) :
|
||||
name(gname)
|
||||
{}
|
||||
GroupProductionProperties();
|
||||
GroupProductionProperties(const UnitSystem& unit_system, const std::string& gname);
|
||||
|
||||
std::string name;
|
||||
ProductionCMode gconprod_cmode = ProductionCMode::NONE;
|
||||
|
||||
@@ -34,6 +34,10 @@ Group::Group()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Group::Group(const std::string& name, std::size_t insert_index_arg, std::size_t init_step_arg, double udq_undefined_arg, const UnitSystem& unit_system_arg) :
|
||||
m_name(name),
|
||||
m_insert_index(insert_index_arg),
|
||||
@@ -44,7 +48,7 @@ Group::Group(const std::string& name, std::size_t insert_index_arg, std::size_t
|
||||
gefac(1),
|
||||
transfer_gefac(true),
|
||||
vfp_table(0),
|
||||
production_properties(name)
|
||||
production_properties(unit_system, name)
|
||||
{
|
||||
// All groups are initially created as children of the "FIELD" group.
|
||||
if (name != "FIELD")
|
||||
@@ -176,6 +180,23 @@ bool Group::updateProduction(const GroupProductionProperties& production) {
|
||||
return update;
|
||||
}
|
||||
|
||||
Group::GroupInjectionProperties::GroupInjectionProperties() :
|
||||
GroupInjectionProperties(Phase::WATER, UnitSystem(UnitSystem::UnitType::UNIT_TYPE_METRIC))
|
||||
{}
|
||||
|
||||
Group::GroupInjectionProperties::GroupInjectionProperties(Phase phase_arg, const UnitSystem& unit_system) :
|
||||
phase(phase_arg),
|
||||
target_reinj_fraction(unit_system.getDimension(UnitSystem::measure::identity)),
|
||||
target_void_fraction(unit_system.getDimension(UnitSystem::measure::identity))
|
||||
{
|
||||
if (phase == Phase::WATER) {
|
||||
this->surface_max_rate = UDAValue(unit_system.getDimension(UnitSystem::measure::liquid_surface_rate));
|
||||
this->resv_max_rate = UDAValue(unit_system.getDimension(UnitSystem::measure::rate));
|
||||
} else {
|
||||
this->surface_max_rate = UDAValue(unit_system.getDimension(UnitSystem::measure::gas_surface_rate));
|
||||
this->resv_max_rate = UDAValue(unit_system.getDimension(UnitSystem::measure::rate));
|
||||
}
|
||||
}
|
||||
|
||||
Group::GroupInjectionProperties Group::GroupInjectionProperties::serializeObject()
|
||||
{
|
||||
@@ -213,10 +234,22 @@ bool Group::GroupInjectionProperties::operator!=(const GroupInjectionProperties&
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
Group::GroupProductionProperties::GroupProductionProperties() :
|
||||
GroupProductionProperties(UnitSystem(UnitSystem::UnitType::UNIT_TYPE_METRIC), "")
|
||||
{}
|
||||
|
||||
Group::GroupProductionProperties::GroupProductionProperties(const UnitSystem& unit_system, const std::string& gname) :
|
||||
name(gname),
|
||||
oil_target(unit_system.getDimension(UnitSystem::measure::liquid_surface_rate)),
|
||||
water_target(unit_system.getDimension(UnitSystem::measure::liquid_surface_rate)),
|
||||
gas_target(unit_system.getDimension(UnitSystem::measure::gas_surface_rate)),
|
||||
liquid_target(unit_system.getDimension(UnitSystem::measure::liquid_surface_rate))
|
||||
{
|
||||
}
|
||||
|
||||
Group::GroupProductionProperties Group::GroupProductionProperties::serializeObject()
|
||||
{
|
||||
Group::GroupProductionProperties result("Group123");
|
||||
Group::GroupProductionProperties result(UnitSystem(UnitSystem::UnitType::UNIT_TYPE_METRIC), "Group123");
|
||||
result.name = "Group123";
|
||||
result.gconprod_cmode = ProductionCMode::PRBL;
|
||||
result.active_cmode = ProductionCMode::PRBL;
|
||||
|
||||
Reference in New Issue
Block a user