diff --git a/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.hpp b/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.hpp index 6b39fc0e2..f776afa6b 100644 --- a/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.hpp +++ b/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.hpp @@ -33,7 +33,8 @@ class DeckRecord; enum class BCType { RATE, - FREE + FREE, + DIRICHLET }; enum class BCComponent { @@ -57,6 +58,8 @@ public: FaceDir::DirEnum dir; BCComponent component; double rate; + double pressure; + double temperature; BCFace() = default; explicit BCFace(const DeckRecord& record); @@ -78,6 +81,8 @@ public: serializer(dir); serializer(component); serializer(rate); + serializer(pressure); + serializer(temperature); } }; diff --git a/src/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.cpp b/src/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.cpp index 040e83fef..ec319300f 100644 --- a/src/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.cpp +++ b/src/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.cpp @@ -35,6 +35,9 @@ BCType bctype(const std::string& s) { if (s == "FREE") return BCType::FREE; + if (s == "DIRICHLET") + return BCType::DIRICHLET; + throw std::invalid_argument("Not recognized boundary condition type: " + s); } @@ -74,7 +77,9 @@ BCConfig::BCFace::BCFace(const DeckRecord& record) : bctype(fromstring::bctype(record.getItem("TYPE").get(0))), dir(FaceDir::FromString(record.getItem("DIRECTION").get(0))), component(fromstring::component(record.getItem("COMPONENT").get(0))), - rate(record.getItem("RATE").getSIDouble(0)) + rate(record.getItem("RATE").getSIDouble(0)), + pressure(record.getItem("PRESSURE").getSIDouble(0)), + temperature(record.getItem("TEMPERATURE").getSIDouble(0)) { } @@ -91,6 +96,8 @@ BCConfig::BCFace BCConfig::BCFace::serializationTestObject() result.dir = FaceDir::XPlus; result.component = BCComponent::GAS; result.rate = 100.0; + result.pressure = 101.0; + result.temperature = 102.0; return result; } @@ -106,7 +113,9 @@ bool BCConfig::BCFace::operator==(const BCConfig::BCFace& other) const { this->bctype == other.bctype && this->dir == other.dir && this->component == other.component && - this->rate == other.rate; + this->rate == other.rate && + this->pressure == other.pressure && + this->temperature == other.temperature; } diff --git a/src/opm/input/eclipse/share/keywords/900_OPM/B/BC b/src/opm/input/eclipse/share/keywords/900_OPM/B/BC index 0c16119af..ed6633457 100644 --- a/src/opm/input/eclipse/share/keywords/900_OPM/B/BC +++ b/src/opm/input/eclipse/share/keywords/900_OPM/B/BC @@ -46,6 +46,17 @@ "value_type": "DOUBLE", "dimension": "Mass/Time*Length*Length", "default": 0 + }, + { + "name": "PRESSURE", + "value_type": "DOUBLE", + "dimension": "Pressure", + "default": 1 + }, + { + "name": "TEMPERATURE", + "value_type": "DOUBLE", + "dimension": "Temperature" } ] }