Fix OilVaporizationProperties to have only one constructor

This commit is contained in:
Fredrik Gundersen
2015-10-08 11:17:24 +02:00
parent 32914e2ed4
commit 80a77136cf
6 changed files with 79 additions and 47 deletions

View File

@@ -1,4 +1,4 @@
#include "OilVaporizationProperties.hpp"
#include <opm/parser/eclipse/EclipseState/Schedule/OilVaporizationProperties.hpp>
namespace Opm {
@@ -7,12 +7,32 @@ namespace Opm {
}
double OilVaporizationProperties::getMaximum() const{
return m_maximum;
double OilVaporizationProperties::getMaxDRVDT() const{
if (m_type == Opm::OilVaporizationEnum::DRVDT){
return m_maxDRVDT;
}else{
throw std::logic_error("Only valid if type is DRVDT");
}
}
std::string OilVaporizationProperties::getOption() const{
return m_option;
double OilVaporizationProperties::getMaxDRSDT() const{
if (m_type == Opm::OilVaporizationEnum::DRSDT){
return m_maxDRSDT;
}else{
throw std::logic_error("Only valid if type is DRSDT");
}
}
const std::string OilVaporizationProperties::getOption() const{
if (m_type == Opm::OilVaporizationEnum::DRSDT){
if (m_maxDRSDT_allCells){
return std::string("ALL");
}else{
return std::string("FREE");
}
}else{
throw std::logic_error("Only valid if type is DRSDT");
}
}
Opm::OilVaporizationEnum OilVaporizationProperties::getType() const{
@@ -20,42 +40,50 @@ namespace Opm {
}
double OilVaporizationProperties::getVap1() const{
return m_vap1;
if (m_type == Opm::OilVaporizationEnum::VAPPARS){
return m_vap1;
}else{
throw std::logic_error("Only valid if type is VAPPARS");
}
}
double OilVaporizationProperties::getVap2() const{
return m_vap2;
if (m_type == Opm::OilVaporizationEnum::VAPPARS){
return m_vap2;
}else{
throw std::logic_error("Only valid if type is VAPPARS");
}
}
OilVaporizationPropertiesPtr OilVaporizationProperties::createOilVaporizationPropertiesDRSDT(double maximum, std::string option){
return std::shared_ptr<OilVaporizationProperties>(new OilVaporizationProperties(Opm::OilVaporizationEnum::DRSDT, maximum, option));
auto ovp = OilVaporizationPropertiesPtr(new OilVaporizationProperties());
ovp->m_type = Opm::OilVaporizationEnum::DRSDT;
ovp->m_maxDRSDT = maximum;
if (option == "ALL"){
ovp->m_maxDRSDT_allCells = true;
}else if (option == "FREE") {
ovp->m_maxDRSDT_allCells = false;
}else{
throw std::invalid_argument("Only ALL or FREE is allowed as option string");
}
return ovp;
}
OilVaporizationPropertiesPtr OilVaporizationProperties::createOilVaporizationPropertiesDRVDT(double maximum){
return std::shared_ptr<OilVaporizationProperties>(new OilVaporizationProperties(Opm::OilVaporizationEnum::DRVDT, maximum));
auto ovp = OilVaporizationPropertiesPtr(new OilVaporizationProperties());
ovp->m_type = Opm::OilVaporizationEnum::DRVDT;
ovp->m_maxDRVDT = maximum;
return ovp;
}
OilVaporizationPropertiesPtr OilVaporizationProperties::createOilVaporizationPropertiesVAPPARS(double vap1, double vap2){
return std::shared_ptr<OilVaporizationProperties>(new OilVaporizationProperties(Opm::OilVaporizationEnum::VAPPARS, vap1, vap2));
}
auto ovp = OilVaporizationPropertiesPtr(new OilVaporizationProperties());
ovp->m_type = Opm::OilVaporizationEnum::VAPPARS;
ovp->m_vap1 = vap1;
ovp->m_vap2 = vap2;
return ovp;
OilVaporizationProperties::OilVaporizationProperties(Opm::OilVaporizationEnum type, double maximum, std::string option){
m_type = type;
m_maximum = maximum;
m_option = option;
}
OilVaporizationProperties::OilVaporizationProperties(Opm::OilVaporizationEnum type, double maximum){
m_type = type;
m_maximum = maximum;
}
OilVaporizationProperties::OilVaporizationProperties(Opm::OilVaporizationEnum type, double vap1, double vap2){
m_type = type;
m_vap1 = vap1;
m_vap2 = vap2;
}
}