Fix OilVaporizationProperties to have only one constructor
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,31 +7,35 @@
|
||||
|
||||
namespace Opm
|
||||
{
|
||||
/*
|
||||
* The OilVaporizationProperties class
|
||||
* This classe is used to store the values from {VAPPARS, DRSDT, DRVDT} the behavior of the keywords are mutal exclusive.
|
||||
* Any one of the three keywords {VAPPARS, DRSDT, DRVDT} will cancel previous settings of the other keywords.
|
||||
* Ask for type first and the ask for the correct values for this type, asking for values not valid for the current type will throw a logic exception.
|
||||
*/
|
||||
class OilVaporizationProperties
|
||||
{
|
||||
public:
|
||||
OilVaporizationProperties();
|
||||
|
||||
static std::shared_ptr<OilVaporizationProperties> createOilVaporizationPropertiesDRSDT(double maximum, std::string option);
|
||||
static std::shared_ptr<OilVaporizationProperties> createOilVaporizationPropertiesDRVDT(double maximum);
|
||||
|
||||
static std::shared_ptr<OilVaporizationProperties> createOilVaporizationPropertiesDRSDT(double maxDRSDT, std::string option);
|
||||
static std::shared_ptr<OilVaporizationProperties> createOilVaporizationPropertiesDRVDT(double maxDRVDT);
|
||||
static std::shared_ptr<OilVaporizationProperties> createOilVaporizationPropertiesVAPPARS(double vap1, double vap2);
|
||||
Opm::OilVaporizationEnum getType() const;
|
||||
double getVap1() const;
|
||||
double getVap2() const;
|
||||
double getMaximum() const;
|
||||
std::string getOption() const;
|
||||
double getMaxDRSDT() const;
|
||||
double getMaxDRVDT() const;
|
||||
const std::string getOption() const;
|
||||
|
||||
private:
|
||||
OilVaporizationProperties();
|
||||
Opm::OilVaporizationEnum m_type;
|
||||
double m_maximum;
|
||||
double m_vap1;
|
||||
double m_vap2;
|
||||
std::string m_option;
|
||||
|
||||
OilVaporizationProperties(Opm::OilVaporizationEnum type, double maximum, std::string option);
|
||||
OilVaporizationProperties(Opm::OilVaporizationEnum type, double maximum);
|
||||
OilVaporizationProperties(Opm::OilVaporizationEnum type, double vap1, double vap2);
|
||||
|
||||
double m_maxDRSDT;
|
||||
double m_maxDRVDT;
|
||||
bool m_maxDRSDT_allCells;
|
||||
};
|
||||
typedef std::shared_ptr<OilVaporizationProperties> OilVaporizationPropertiesPtr;
|
||||
typedef std::shared_ptr<const OilVaporizationProperties> OilVaporizationPropertiesConstPtr;
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Opm {
|
||||
}
|
||||
|
||||
void Schedule::initOilVaporization(TimeMapConstPtr timeMap) {
|
||||
m_oilvaporizationproperties.reset(new DynamicState<OilVaporizationPropertiesPtr>(timeMap, OilVaporizationPropertiesPtr(new OilVaporizationProperties())));
|
||||
m_oilvaporizationproperties.reset(new DynamicState<OilVaporizationPropertiesPtr>(timeMap, OilVaporizationPropertiesPtr()));
|
||||
}
|
||||
|
||||
void Schedule::initRootGroupTreeNode(TimeMapConstPtr timeMap) {
|
||||
@@ -324,7 +324,7 @@ namespace Opm {
|
||||
void Schedule::handleDRVDT(DeckKeywordConstPtr keyword, size_t currentStep){
|
||||
for (size_t recordNr = 0; recordNr < keyword->size(); recordNr++) {
|
||||
DeckRecordConstPtr record = keyword->getRecord(recordNr);
|
||||
double max = record->getItem("DRVDT_MAX")->getRawDouble(0);
|
||||
double max = record->getItem("DRVDT_MAX")->getSIDouble(0);
|
||||
OilVaporizationPropertiesPtr drvdt = OilVaporizationProperties::createOilVaporizationPropertiesDRVDT(max);
|
||||
setOilVaporizationProperties(drvdt, currentStep);
|
||||
|
||||
@@ -335,7 +335,7 @@ namespace Opm {
|
||||
void Schedule::handleDRSDT(DeckKeywordConstPtr keyword, size_t currentStep){
|
||||
for (size_t recordNr = 0; recordNr < keyword->size(); recordNr++) {
|
||||
DeckRecordConstPtr record = keyword->getRecord(recordNr);
|
||||
double max = record->getItem("DRSDT_MAX")->getRawDouble(0);
|
||||
double max = record->getItem("DRSDT_MAX")->getSIDouble(0);
|
||||
std::string option = record->getItem("Option")->getString(0);
|
||||
OilVaporizationPropertiesPtr drsdt = OilVaporizationProperties::createOilVaporizationPropertiesDRSDT(max, option);
|
||||
setOilVaporizationProperties(drsdt, currentStep);
|
||||
|
||||
@@ -1207,8 +1207,8 @@ BOOST_AUTO_TEST_CASE(createDeckWithDRSDTthenDRVDT) {
|
||||
size_t currentStep = 2;
|
||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
||||
OilVaporizationPropertiesConstPtr ovap = schedule.getOilVaporizationProperties(currentStep);
|
||||
double value = ovap->getMaximum();
|
||||
BOOST_CHECK_EQUAL(0.100, value);
|
||||
double value = ovap->getMaxDRVDT();
|
||||
BOOST_CHECK_EQUAL(1.1574074074074074e-06, value);
|
||||
BOOST_CHECK_EQUAL(ovap->getType(), Opm::OilVaporizationEnum::DRVDT);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{"name" : "DRSDT", "sections" : ["SCHEDULE"], "size" : 1, "items" :
|
||||
[{"name" : "DRSDT_MAX" , "value_type" : "DOUBLE"},
|
||||
[{"name" : "DRSDT_MAX" , "value_type" : "DOUBLE", "dimension" : "GasDissolutionFactor/Time"},
|
||||
{"name" : "Option" , "value_type" : "STRING", "default" : "ALL"}]
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
{"name" : "DRVDT", "sections" : ["SCHEDULE"], "size" : 1, "items" :
|
||||
[{"name" : "DRVDT_MAX" , "value_type" : "DOUBLE"}]
|
||||
[{"name" : "DRVDT_MAX" , "value_type" : "DOUBLE", "dimension" : "OilDissolutionFactor/Time"}]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user