make TransMult constructible from variables

also add default constructor and equality operator
This commit is contained in:
Arne Morten Kvarving
2019-12-16 14:27:16 +01:00
parent 43fae042b1
commit be799586c8
2 changed files with 52 additions and 1 deletions

View File

@@ -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_t,3>& size,
const std::map<FaceDir::DirEnum, std::vector<double>>& trans,
const std::map<FaceDir::DirEnum, std::string>& 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<size_t,3> getSize() const;
const std::map<FaceDir::DirEnum, std::vector<double>>& getTrans() const;
const std::map<FaceDir::DirEnum, std::string>& 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<double>& 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<FaceDir::DirEnum , std::vector<double> > m_trans;
std::map<FaceDir::DirEnum , std::string> m_names;
MULTREGTScanner m_multregtScanner;

View File

@@ -57,6 +57,20 @@ R"(This deck has the MULTREGT keyword located in the EDIT section. Note that:
}
}
TransMult::TransMult(const std::array<size_t,3>& size,
const std::map<FaceDir::DirEnum, std::vector<double>>& trans,
const std::map<FaceDir::DirEnum, std::string>& 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<size_t,3> TransMult::getSize() const {
return {m_nx, m_ny, m_nz};
}
const std::map<FaceDir::DirEnum, std::vector<double>>& TransMult::getTrans() const {
return m_trans;
}
const std::map<FaceDir::DirEnum, std::string>& 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();
}
}