diff --git a/opm/parser/eclipse/EclipseState/Grid/TransMult.hpp b/opm/parser/eclipse/EclipseState/Grid/TransMult.hpp index f830578f6..7bb0efe88 100644 --- a/opm/parser/eclipse/EclipseState/Grid/TransMult.hpp +++ b/opm/parser/eclipse/EclipseState/Grid/TransMult.hpp @@ -47,7 +47,13 @@ namespace Opm { class TransMult { public: + TransMult() = default; TransMult(const GridDims& dims, const Deck& deck, const FieldPropsManager& fp); + TransMult(const std::array& size, + const std::map>& trans, + const std::map& names, + const MULTREGTScanner& scanner); + double getMultiplier(size_t globalIndex, FaceDir::DirEnum faceDir) const; double getMultiplier(size_t i , size_t j , size_t k, FaceDir::DirEnum faceDir) const; double getRegionMultiplier( size_t globalCellIndex1, size_t globalCellIndex2, FaceDir::DirEnum faceDir) const; @@ -55,6 +61,13 @@ namespace Opm { void applyMULTFLT(const FaultCollection& faults); void applyMULTFLT(const Fault& fault); + std::array getSize() const; + const std::map>& getTrans() const; + const std::map& getNames() const; + const MULTREGTScanner& getScanner() const; + + bool operator==(const TransMult& data) const; + private: size_t getGlobalIndex(size_t i , size_t j , size_t k) const; void assertIJK(size_t i , size_t j , size_t k) const; @@ -62,7 +75,7 @@ namespace Opm { bool hasDirectionProperty(FaceDir::DirEnum faceDir) const; std::vector& getDirectionProperty(FaceDir::DirEnum faceDir); - size_t m_nx , m_ny , m_nz; + size_t m_nx = 0, m_ny = 0, m_nz = 0; std::map > m_trans; std::map m_names; MULTREGTScanner m_multregtScanner; diff --git a/src/opm/parser/eclipse/EclipseState/Grid/TransMult.cpp b/src/opm/parser/eclipse/EclipseState/Grid/TransMult.cpp index 11f78380b..18a267e87 100644 --- a/src/opm/parser/eclipse/EclipseState/Grid/TransMult.cpp +++ b/src/opm/parser/eclipse/EclipseState/Grid/TransMult.cpp @@ -57,6 +57,20 @@ R"(This deck has the MULTREGT keyword located in the EDIT section. Note that: } } + + TransMult::TransMult(const std::array& size, + const std::map>& trans, + const std::map& names, + const MULTREGTScanner& scanner) : + m_nx(size[0]), + m_ny(size[1]), + m_nz(size[2]), + m_trans(trans), + m_names(names), + m_multregtScanner(scanner) + { + } + void TransMult::assertIJK(size_t i , size_t j , size_t k) const { if ((i >= m_nx) || (j >= m_ny) || (k >= m_nz)) throw std::invalid_argument("Invalid ijk"); @@ -137,4 +151,28 @@ R"(This deck has the MULTREGT keyword located in the EDIT section. Note that: this->applyMULTFLT(fault); } } + + std::array TransMult::getSize() const { + return {m_nx, m_ny, m_nz}; + } + + const std::map>& TransMult::getTrans() const { + return m_trans; + } + + const std::map& TransMult::getNames() const { + return m_names; + } + + const MULTREGTScanner& TransMult::getScanner() const { + return m_multregtScanner; + } + + bool TransMult::operator==(const TransMult& data) const { + return this->getSize() == data.getSize() && + this->getTrans() == data.getTrans() && + this->getNames() == data.getNames() && + this->getScanner() == data.getScanner(); + } + }