diff --git a/opm/core/InjectionSpecification.cpp b/opm/core/InjectionSpecification.cpp new file mode 100644 index 000000000..2d6cf7693 --- /dev/null +++ b/opm/core/InjectionSpecification.cpp @@ -0,0 +1,62 @@ +#include +namespace Opm { + +InjectionSpecification::InjectionSpecification() +: component_(WATER), control_mode_(NONE), surface_injection_target_(0.0), +reinjection_fraction_target_(0.0), BHP_target_(0.0) { + +} + +InjectionSpecification::InjectionSpecification(const InjectionSpecification& orig) { +} + +InjectionSpecification::~InjectionSpecification() { +} + +InjectionSpecification::Component InjectionSpecification::component() { + return component_; +} + +void InjectionSpecification::set_component(InjectionSpecification::Component comp) { + component_ = comp; +} + +InjectionSpecification::ControlMode InjectionSpecification::control_mode() { + return control_mode_; +} + +void InjectionSpecification::set_control_mode(InjectionSpecification::ControlMode mode) { + control_mode_ = mode; +} + +/// \returns 0 if no limit, else the target/limit of the surface Injector +/// rate. +double InjectionSpecification::surface_injection_target() { + return surface_injection_target_; +} + +void InjectionSpecification::set_surface_injection_target(double target) { + surface_injection_target_ = target; +} + +/// \returns 0 if no limit, else the target/limit of the reInjector fraction + +double InjectionSpecification::reinjection_fraction_target() { + return reinjection_fraction_target_; +} + +void InjectionSpecification::set_reinjection_fraction_target(double target) { + reinjection_fraction_target_ = target; +} + +/// \returns 0 if no limit, else the target/limit of the BHP + +double InjectionSpecification::BHP_target() { + return BHP_target_; +} + +void InjectionSpecification::set_BHP_target(double target) { + BHP_target_ = target; +} + +} // namespace Opm \ No newline at end of file diff --git a/opm/core/InjectionSpecification.hpp b/opm/core/InjectionSpecification.hpp new file mode 100644 index 000000000..728df76aa --- /dev/null +++ b/opm/core/InjectionSpecification.hpp @@ -0,0 +1,47 @@ +#ifndef OPM_INJECTORSPECIFICATION_HPP +#define OPM_INJECTORSPECIFICATION_HPP + +namespace Opm { + +class InjectionSpecification { +public: + enum Component { + GAS, OIL, WATER + }; + + enum ControlMode { + NONE, RATE, REIN, RESV, VREP, WGRA, FLD + }; + + InjectionSpecification(); + InjectionSpecification(const InjectionSpecification& orig); + virtual ~InjectionSpecification(); + + Component component(); + void set_component(Component comp); + + ControlMode control_mode(); + void set_control_mode(ControlMode mode); + + /// \returns 0 if no limit, else the target/limit of the surface injection + /// rate. + double surface_injection_target(); + void set_surface_injection_target(double target); + + /// \returns 0 if no limit, else the target/limit of the reinjection fraction + double reinjection_fraction_target(); + void set_reinjection_fraction_target(double target); + + /// \returns 0 if no limit, else the target/limit of the BHP + double BHP_target(); + void set_BHP_target(double target); +private: + Component component_; + ControlMode control_mode_; + double surface_injection_target_; + double reinjection_fraction_target_; + double BHP_target_; +}; +} +#endif /* OPM_INJECTORSPECIFICATION_HPP */ + diff --git a/opm/core/ProductionSpecification.cpp b/opm/core/ProductionSpecification.cpp new file mode 100644 index 000000000..0d0b7109a --- /dev/null +++ b/opm/core/ProductionSpecification.cpp @@ -0,0 +1,73 @@ +#include + +namespace Opm { +ProductionSpecification::ProductionSpecification() : + component_(OIL), + control_mode_(NONE_CM), + procedure_(NONE_P), + oil_production_target_(-1.0), + water_production_target_(-1.0), + liquid_production_target_(-1.0), + BHP_target_(-1.0) +{ +} + +ProductionSpecification::~ProductionSpecification() { +} + +void ProductionSpecification::set_BHP_target(double BHP_target_) { + this->BHP_target_ = BHP_target_; +} + +double ProductionSpecification::get_BHP_target() const { + return BHP_target_; +} + +void ProductionSpecification::set_liquid_production_target(double liquid_production_target_) { + this->liquid_production_target_ = liquid_production_target_; +} + +double ProductionSpecification::get_liquid_production_target() const { + return liquid_production_target_; +} + +void ProductionSpecification::set_water_production_target(double water_production_target_) { + this->water_production_target_ = water_production_target_; +} + +double ProductionSpecification::get_water_production_target() const { + return water_production_target_; +} + +void ProductionSpecification::set_oil_production_target(double oil_production_target_) { + this->oil_production_target_ = oil_production_target_; +} + +double ProductionSpecification::get_oil_production_target() const { + return oil_production_target_; +} + +void ProductionSpecification::set_procedure(ProductionSpecification::Procedure procedure_) { + this->procedure_ = procedure_; +} + +ProductionSpecification::Procedure ProductionSpecification::get_procedure() const { + return procedure_; +} + +void ProductionSpecification::set_control_mode(ProductionSpecification::ControlMode control_mode_) { + this->control_mode_ = control_mode_; +} + +ProductionSpecification::ControlMode ProductionSpecification::get_control_mode() const { + return control_mode_; +} + +void ProductionSpecification::set_component(ProductionSpecification::Component component_) { + this->component_ = component_; +} + +ProductionSpecification::Component ProductionSpecification::get_component() const { + return component_; +} +} diff --git a/opm/core/ProductionSpecification.hpp b/opm/core/ProductionSpecification.hpp new file mode 100644 index 000000000..3c76e4f10 --- /dev/null +++ b/opm/core/ProductionSpecification.hpp @@ -0,0 +1,52 @@ +#ifndef OPM_PRODUCTIONSPECIFICATION_HPP +#define OPM_PRODUCTIONSPECIFICATION_HPP + +namespace Opm { +class ProductionSpecification { +public: + enum Component { + GAS, OIL, WATER + }; + + enum ControlMode { + NONE_CM, ORAT, WRAT, REIN, RESV, VREP, WGRA, FLD + }; + + enum Procedure { + WELL, RATE, NONE_P + }; + + ProductionSpecification(); + virtual ~ProductionSpecification(); + + + void set_BHP_target(double BHP_target_); + double get_BHP_target() const; + void set_liquid_production_target(double liquid_production_target_); + double get_liquid_production_target() const; + void set_water_production_target(double water_production_target_); + double get_water_production_target() const; + void set_oil_production_target(double oil_production_target_); + double get_oil_production_target() const; + void set_procedure(Procedure procedure_); + Procedure get_procedure() const; + void set_control_mode(ControlMode control_mode_); + ControlMode get_control_mode() const; + void set_component(Component component_); + Component get_component() const; +private: + Component component_; + ControlMode control_mode_; + Procedure procedure_; + + double oil_production_target_; + double water_production_target_; + double liquid_production_target_; + double BHP_target_; + + +}; +} + +#endif /* OPM_PRODUCTIONSPECIFICATION_HPP */ + diff --git a/opm/core/WellsGroup.cpp b/opm/core/WellsGroup.cpp new file mode 100644 index 000000000..3993d02ca --- /dev/null +++ b/opm/core/WellsGroup.cpp @@ -0,0 +1,20 @@ +/* + * File: WellsGroup.cpp + * Author: kjetilo + * + * Created on March 27, 2012, 9:27 AM + */ + +#include "WellsGroup.hpp" +namespace Opm { +AbstractWellsGroup::AbstractWellsGroup() { +} + +AbstractWellsGroup::~AbstractWellsGroup() { +} + +const std::string& AbstractWellsGroup::get_name() { + return name_; +} +} +} \ No newline at end of file diff --git a/opm/core/WellsGroup.hpp b/opm/core/WellsGroup.hpp new file mode 100644 index 000000000..2d77cad9b --- /dev/null +++ b/opm/core/WellsGroup.hpp @@ -0,0 +1,30 @@ +#ifndef OPM_WELLSGROUP_HPP +#define OPM_WELLSGROUP_HPP +#include +#include + + +namespace Opm { +class AbstractWellsGroup { +public: + AbstractWellsGroup(const std::string& name); + virtual ~AbstractWellsGroup(); + + const std::string& get_name(); + const ProductionSpecification& get_production_specification() const; + const InjectionSpecification& get_injection_specification() const; + +private: + std::string name_; + ProductionSpecification production_specification_; + InjectionSpecification injection_specification_; + +}; + +class WellsGroup : public AbstractWellsGroup { + +}; + +} +#endif /* OPM_WELLSGROUP_HPP */ +