Merge pull request #1422 from akva2/noecl_flush_prestate
More serialization preparation
This commit is contained in:
commit
51daf43cef
@ -35,7 +35,11 @@ namespace Opm {
|
||||
class EclipseConfig
|
||||
{
|
||||
public:
|
||||
EclipseConfig() = default;
|
||||
EclipseConfig(const Deck& deck, const ParseContext& parseContext, ErrorGuard& errors);
|
||||
EclipseConfig(const IOConfig& ioConfig,
|
||||
const InitConfig& initConfig,
|
||||
const RestartConfig& restartConfig);
|
||||
|
||||
const InitConfig& init() const;
|
||||
const IOConfig& io() const;
|
||||
@ -44,9 +48,11 @@ namespace Opm {
|
||||
const InitConfig& getInitConfig() const;
|
||||
const RestartConfig& getRestartConfig() const;
|
||||
|
||||
bool operator==(const EclipseConfig& data) const;
|
||||
|
||||
private:
|
||||
IOConfig m_ioConfig;
|
||||
const InitConfig m_initConfig;
|
||||
InitConfig m_initConfig;
|
||||
RestartConfig m_restartConfig;
|
||||
};
|
||||
}
|
||||
|
@ -32,7 +32,11 @@ namespace Opm {
|
||||
|
||||
class Fault {
|
||||
public:
|
||||
Fault() = default;
|
||||
explicit Fault(const std::string& faultName);
|
||||
Fault(const std::string& name,
|
||||
double transMult,
|
||||
const std::vector<FaultFace>& faceList);
|
||||
|
||||
const std::string& getName() const;
|
||||
void setTransMult(double transMult);
|
||||
@ -40,13 +44,14 @@ public:
|
||||
void addFace( FaultFace );
|
||||
std::vector< FaultFace >::const_iterator begin() const;
|
||||
std::vector< FaultFace >::const_iterator end() const;
|
||||
const std::vector<FaultFace>& getFaceList() const;
|
||||
|
||||
bool operator==( const Fault& rhs ) const;
|
||||
bool operator!=( const Fault& rhs ) const;
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
double m_transMult;
|
||||
double m_transMult = 0.0;
|
||||
std::vector< FaultFace > m_faceList;
|
||||
};
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ class FaultCollection {
|
||||
public:
|
||||
FaultCollection();
|
||||
FaultCollection(const GRIDSection& gridSection, const GridDims& grid);
|
||||
FaultCollection(const OrderedMap<std::string, Fault>& faults);
|
||||
|
||||
size_t size() const;
|
||||
bool hasFault(const std::string& faultName) const;
|
||||
@ -48,6 +49,10 @@ public:
|
||||
void addFault(const std::string& faultName);
|
||||
void setTransMult(const std::string& faultName , double transMult);
|
||||
|
||||
const OrderedMap<std::string, Fault>& getFaults() const;
|
||||
|
||||
bool operator==(const FaultCollection& data) const;
|
||||
|
||||
private:
|
||||
void addFaultFaces(const GridDims& grid,
|
||||
const DeckRecord& faultRecord,
|
||||
|
@ -29,22 +29,25 @@ namespace Opm {
|
||||
|
||||
class FaultFace {
|
||||
public:
|
||||
FaultFace() = default;
|
||||
FaultFace(size_t nx , size_t ny , size_t nz,
|
||||
size_t I1 , size_t I2,
|
||||
size_t J1 , size_t J2,
|
||||
size_t K1 , size_t K2,
|
||||
FaceDir::DirEnum faceDir);
|
||||
FaultFace(const std::vector<size_t>& indices, FaceDir::DirEnum faceDir);
|
||||
|
||||
std::vector<size_t>::const_iterator begin() const;
|
||||
std::vector<size_t>::const_iterator end() const;
|
||||
FaceDir::DirEnum getDir() const;
|
||||
const std::vector<size_t>& getIndices() const;
|
||||
|
||||
bool operator==( const FaultFace& rhs ) const;
|
||||
bool operator!=( const FaultFace& rhs ) const;
|
||||
|
||||
private:
|
||||
static void checkCoord(size_t dim , size_t l1 , size_t l2);
|
||||
FaceDir::DirEnum m_faceDir;
|
||||
FaceDir::DirEnum m_faceDir = FaceDir::XPlus;
|
||||
std::vector<size_t> m_indexList;
|
||||
};
|
||||
|
||||
|
@ -57,6 +57,15 @@ namespace Opm {
|
||||
int directions;
|
||||
MULTREGT::NNCBehaviourEnum nnc_behaviour;
|
||||
std::string region_name;
|
||||
|
||||
bool operator==(const MULTREGTRecord& data) const {
|
||||
return src_value == data.src_value &&
|
||||
target_value == data.target_value &&
|
||||
trans_mult == data.trans_mult &&
|
||||
directions == data.directions &&
|
||||
nnc_behaviour == data.nnc_behaviour &&
|
||||
region_name == data.region_name;
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::map< std::pair<int , int> , const MULTREGTRecord * > MULTREGTSearchMap;
|
||||
@ -67,16 +76,37 @@ namespace Opm {
|
||||
class MULTREGTScanner {
|
||||
|
||||
public:
|
||||
using ExternalSearchMap = std::map<std::string, std::map<std::pair<int,int>, int>>;
|
||||
|
||||
MULTREGTScanner() = default;
|
||||
MULTREGTScanner(const MULTREGTScanner& data);
|
||||
MULTREGTScanner(const GridDims& grid,
|
||||
const FieldPropsManager& fp_arg,
|
||||
const FieldPropsManager* fp_arg,
|
||||
const std::vector< const DeckKeyword* >& keywords);
|
||||
MULTREGTScanner(const std::array<size_t,3>& size,
|
||||
const std::vector<MULTREGTRecord>& records,
|
||||
const ExternalSearchMap& searchMap,
|
||||
const std::map<std::string, std::vector<int>>& region,
|
||||
const std::string& defaultRegion);
|
||||
|
||||
double getRegionMultiplier(size_t globalCellIdx1, size_t globalCellIdx2, FaceDir::DirEnum faceDir) const;
|
||||
|
||||
std::array<size_t,3> getSize() const;
|
||||
const std::vector<MULTREGTRecord>& getRecords() const;
|
||||
ExternalSearchMap getSearchMap() const;
|
||||
const std::map<std::string, std::vector<int>>& getRegions() const;
|
||||
const std::string& getDefaultRegion() const;
|
||||
|
||||
bool operator==(const MULTREGTScanner& data) const;
|
||||
MULTREGTScanner& operator=(const MULTREGTScanner& data);
|
||||
|
||||
private:
|
||||
void constructSearchMap(const ExternalSearchMap& searchMap);
|
||||
|
||||
void addKeyword( const DeckKeyword& deckKeyword, const std::string& defaultRegion);
|
||||
void assertKeywordSupported(const DeckKeyword& deckKeyword);
|
||||
std::size_t nx,ny,nz;
|
||||
const FieldPropsManager& fp;
|
||||
std::size_t nx = 0,ny = 0, nz = 0;
|
||||
const FieldPropsManager* fp = nullptr;
|
||||
std::vector< MULTREGTRecord > m_records;
|
||||
std::map<std::string , MULTREGTSearchMap> m_searchMap;
|
||||
std::map<std::string, std::vector<int>> regions;
|
||||
|
@ -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;
|
||||
|
@ -36,6 +36,16 @@ namespace Opm {
|
||||
}
|
||||
|
||||
|
||||
EclipseConfig::EclipseConfig(const IOConfig& ioConfig,
|
||||
const InitConfig& initConfig,
|
||||
const RestartConfig& restartConfig) :
|
||||
m_ioConfig(ioConfig),
|
||||
m_initConfig(initConfig),
|
||||
m_restartConfig(restartConfig)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
const InitConfig& EclipseConfig::init() const {
|
||||
return m_initConfig;
|
||||
}
|
||||
@ -62,4 +72,10 @@ namespace Opm {
|
||||
return init();
|
||||
}
|
||||
|
||||
bool EclipseConfig::operator==(const EclipseConfig& data) const {
|
||||
return this->init() == data.init() &&
|
||||
this->io() == data.io() &&
|
||||
this->restart() == data.restart();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -27,6 +27,15 @@ namespace Opm {
|
||||
{
|
||||
}
|
||||
|
||||
Fault::Fault(const std::string& name,
|
||||
double transMult,
|
||||
const std::vector<FaultFace>& faceList) :
|
||||
m_name(name),
|
||||
m_transMult(transMult),
|
||||
m_faceList(faceList)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
const std::string& Fault::getName() const {
|
||||
return m_name;
|
||||
@ -67,6 +76,10 @@ namespace Opm {
|
||||
return !( *this == rhs );
|
||||
}
|
||||
|
||||
const std::vector<FaultFace>& Fault::getFaceList() const {
|
||||
return m_faceList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -56,6 +56,11 @@ namespace Opm {
|
||||
}
|
||||
}
|
||||
|
||||
FaultCollection::FaultCollection(const OrderedMap<std::string, Fault>& faults) :
|
||||
m_faults(faults)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void FaultCollection::addFaultFaces(const GridDims& grid,
|
||||
const DeckRecord& faultRecord,
|
||||
@ -113,4 +118,12 @@ namespace Opm {
|
||||
Fault& fault = getFault( faultName );
|
||||
fault.setTransMult( transMult );
|
||||
}
|
||||
|
||||
const OrderedMap<std::string, Fault>& FaultCollection::getFaults() const {
|
||||
return m_faults;
|
||||
}
|
||||
|
||||
bool FaultCollection::operator==(const FaultCollection& data) const {
|
||||
return this->getFaults() == data.getFaults();
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,12 @@ namespace Opm {
|
||||
}
|
||||
}
|
||||
|
||||
FaultFace::FaultFace(const std::vector<size_t>& indices, FaceDir::DirEnum faceDir)
|
||||
: m_faceDir(faceDir)
|
||||
, m_indexList(indices)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void FaultFace::checkCoord(size_t dim , size_t l1 , size_t l2) {
|
||||
if (l1 > l2)
|
||||
@ -89,4 +95,8 @@ namespace Opm {
|
||||
bool FaultFace::operator!=( const FaultFace& rhs ) const {
|
||||
return !( *this == rhs );
|
||||
}
|
||||
|
||||
const std::vector<size_t>& FaultFace::getIndices() const {
|
||||
return m_indexList;
|
||||
}
|
||||
}
|
||||
|
@ -106,21 +106,21 @@ std::vector<int> unique(const std::vector<int> data) {
|
||||
interface with the wanted region values.
|
||||
*/
|
||||
MULTREGTScanner::MULTREGTScanner(const GridDims& grid,
|
||||
const FieldPropsManager& fp_arg,
|
||||
const FieldPropsManager* fp_arg,
|
||||
const std::vector< const DeckKeyword* >& keywords) :
|
||||
nx(grid.getNX()),
|
||||
ny(grid.getNY()),
|
||||
nz(grid.getNZ()),
|
||||
fp(fp_arg) {
|
||||
|
||||
this->default_region = this->fp.default_region();
|
||||
this->default_region = this->fp->default_region();
|
||||
for (size_t idx = 0; idx < keywords.size(); idx++)
|
||||
this->addKeyword(*keywords[idx] , this->default_region);
|
||||
|
||||
MULTREGTSearchMap searchPairs;
|
||||
for (std::vector<MULTREGTRecord>::const_iterator record = m_records.begin(); record != m_records.end(); ++record) {
|
||||
const std::string& region_name = record->region_name;
|
||||
if (this->fp.has<int>( region_name)) {
|
||||
if (this->fp->has<int>( region_name)) {
|
||||
int srcRegion = record->src_value;
|
||||
int targetRegion = record->target_value;
|
||||
|
||||
@ -140,7 +140,7 @@ std::vector<int> unique(const std::vector<int> data) {
|
||||
+ " which is not in the deck");
|
||||
|
||||
if (this->regions.count(region_name) == 0)
|
||||
this->regions[region_name] = this->fp.get_global<int>(region_name);
|
||||
this->regions[region_name] = this->fp->get_global<int>(region_name);
|
||||
}
|
||||
|
||||
for (auto iter = searchPairs.begin(); iter != searchPairs.end(); ++iter) {
|
||||
@ -155,6 +155,27 @@ std::vector<int> unique(const std::vector<int> data) {
|
||||
}
|
||||
|
||||
|
||||
MULTREGTScanner::MULTREGTScanner(const std::array<size_t,3>& size,
|
||||
const std::vector<MULTREGTRecord>& records,
|
||||
const ExternalSearchMap& searchMap,
|
||||
const std::map<std::string, std::vector<int>>& region,
|
||||
const std::string& defaultRegion) :
|
||||
nx(size[0]),
|
||||
ny(size[1]),
|
||||
nz(size[2]),
|
||||
m_records(records),
|
||||
regions(region),
|
||||
default_region(defaultRegion)
|
||||
{
|
||||
constructSearchMap(searchMap);
|
||||
}
|
||||
|
||||
|
||||
MULTREGTScanner::MULTREGTScanner(const MULTREGTScanner& data) {
|
||||
*this = data;
|
||||
}
|
||||
|
||||
|
||||
void MULTREGTScanner::assertKeywordSupported( const DeckKeyword& deckKeyword) {
|
||||
for (const auto& deckRecord : deckKeyword) {
|
||||
const auto& srcItem = deckRecord.getItem("SRC_REGION");
|
||||
@ -195,12 +216,12 @@ std::vector<int> unique(const std::vector<int> data) {
|
||||
region_name = MULTREGT::RegionNameFromDeckValue( regionItem.get<std::string>(0) );
|
||||
|
||||
if (srcItem.defaultApplied(0) || srcItem.get<int>(0) < 0)
|
||||
src_regions = unique(this->fp.get<int>(region_name));
|
||||
src_regions = unique(this->fp->get<int>(region_name));
|
||||
else
|
||||
src_regions.push_back(srcItem.get<int>(0));
|
||||
|
||||
if (targetItem.defaultApplied(0) || targetItem.get<int>(0) < 0)
|
||||
target_regions = unique(fp.get<int>(region_name));
|
||||
target_regions = unique(fp->get<int>(region_name));
|
||||
else
|
||||
target_regions.push_back(targetItem.get<int>(0));
|
||||
|
||||
@ -275,4 +296,69 @@ std::vector<int> unique(const std::vector<int> data) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::array<size_t,3> MULTREGTScanner::getSize() const {
|
||||
return {nx, ny, nz};
|
||||
}
|
||||
|
||||
const std::vector<MULTREGTRecord>& MULTREGTScanner::getRecords() const {
|
||||
return m_records;
|
||||
}
|
||||
|
||||
const std::map<std::string, std::vector<int>>& MULTREGTScanner::getRegions() const {
|
||||
return regions;
|
||||
}
|
||||
|
||||
const std::string& MULTREGTScanner::getDefaultRegion() const {
|
||||
return default_region;
|
||||
}
|
||||
|
||||
MULTREGTScanner::ExternalSearchMap MULTREGTScanner::getSearchMap() const {
|
||||
ExternalSearchMap result;
|
||||
for (const auto& it : m_searchMap) {
|
||||
std::map<std::pair<int,int>, int> res;
|
||||
for (const auto& it2 : it.second) {
|
||||
auto ffunc = [&](const Opm::MULTREGTRecord& a)
|
||||
{
|
||||
return &a == it2.second;
|
||||
};
|
||||
auto rIt = std::find_if(m_records.begin(), m_records.end(), ffunc);
|
||||
res[it2.first] = std::distance(m_records.begin(), rIt);
|
||||
}
|
||||
result[it.first] = res;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void MULTREGTScanner::constructSearchMap(const ExternalSearchMap& searchMap) {
|
||||
for (const auto& it : searchMap) {
|
||||
std::map<std::pair<int,int>, const Opm::MULTREGTRecord*> res;
|
||||
for (const auto& it2 : it.second) {
|
||||
res[it2.first] = &m_records[it2.second];
|
||||
}
|
||||
m_searchMap.insert({it.first, res});
|
||||
}
|
||||
}
|
||||
|
||||
bool MULTREGTScanner::operator==(const MULTREGTScanner& data) const {
|
||||
return this->getSize() == data.getSize() &&
|
||||
this->getRecords() == data.getRecords() &&
|
||||
this->getRegions() == data.getRegions() &&
|
||||
this->getSearchMap() == data.getSearchMap() &&
|
||||
this->getDefaultRegion() == data.getDefaultRegion();
|
||||
}
|
||||
|
||||
MULTREGTScanner& MULTREGTScanner::operator=(const MULTREGTScanner& data) {
|
||||
nx = data.nx;
|
||||
ny = data.ny;
|
||||
nz = data.nz;
|
||||
fp = data.fp;
|
||||
m_records = data.m_records;
|
||||
regions = data.regions;
|
||||
default_region = data.default_region;
|
||||
m_searchMap.clear();
|
||||
constructSearchMap(data.getSearchMap());
|
||||
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ namespace Opm {
|
||||
{ FaceDir::XMinus, "MULTX-" },
|
||||
{ FaceDir::YMinus, "MULTY-" },
|
||||
{ FaceDir::ZMinus, "MULTZ-" }}),
|
||||
m_multregtScanner( dims, fp, deck.getKeywordList( "MULTREGT" ))
|
||||
m_multregtScanner( dims, &fp, deck.getKeywordList( "MULTREGT" ))
|
||||
{
|
||||
EDITSection edit_section(deck);
|
||||
if (edit_section.hasKeyword("MULTREGT")) {
|
||||
@ -56,6 +56,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");
|
||||
@ -136,4 +150,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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -113,19 +113,19 @@ BOOST_AUTO_TEST_CASE(InvalidInput) {
|
||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||
keywords0.push_back( &multregtKeyword0 );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords0 ); , std::invalid_argument );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, &fp, keywords0 ); , std::invalid_argument );
|
||||
|
||||
// Not supported region
|
||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||
const auto& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||
keywords1.push_back( &multregtKeyword1 );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords1 ); , std::invalid_argument );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, &fp, keywords1 ); , std::invalid_argument );
|
||||
|
||||
// The keyword is ok; but it refers to a region which is not in the deck.
|
||||
std::vector<const Opm::DeckKeyword*> keywords2;
|
||||
const auto& multregtKeyword2 = deck.getKeyword( "MULTREGT", 2 );
|
||||
keywords2.push_back( &multregtKeyword2 );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords2 ); , std::logic_error );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, &fp, keywords2 ); , std::logic_error );
|
||||
}
|
||||
|
||||
|
||||
@ -180,13 +180,13 @@ BOOST_AUTO_TEST_CASE(NotSupported) {
|
||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||
keywords0.push_back( &multregtKeyword0 );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords0 ); , std::invalid_argument );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, &fp, keywords0 ); , std::invalid_argument );
|
||||
|
||||
// srcValue == targetValue - not supported
|
||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||
keywords1.push_back( &multregtKeyword1 );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords1 ); , std::invalid_argument );
|
||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, &fp, keywords1 ); , std::invalid_argument );
|
||||
}
|
||||
|
||||
static Opm::Deck createDefaultedRegions() {
|
||||
@ -240,7 +240,7 @@ BOOST_AUTO_TEST_CASE(DefaultedRegions) {
|
||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||
keywords0.push_back( &multregtKeyword0 );
|
||||
Opm::MULTREGTScanner scanner0(grid, fp, keywords0);
|
||||
Opm::MULTREGTScanner scanner0(grid, &fp, keywords0);
|
||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(0,0,1), grid.getGlobalIndex(1,0,1), Opm::FaceDir::XPlus ), 1.25);
|
||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(1,0,0), grid.getGlobalIndex(2,0,0), Opm::FaceDir::XPlus ), 1.0);
|
||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(2,0,1), grid.getGlobalIndex(2,0,0), Opm::FaceDir::ZMinus ), 0.0);
|
||||
@ -248,7 +248,7 @@ BOOST_AUTO_TEST_CASE(DefaultedRegions) {
|
||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||
keywords1.push_back( &multregtKeyword1 );
|
||||
Opm::MULTREGTScanner scanner1(grid, fp, keywords1 );
|
||||
Opm::MULTREGTScanner scanner1(grid, &fp, keywords1 );
|
||||
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(1,0,0), Opm::FaceDir::XMinus ), 0.75);
|
||||
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(2,0,1), Opm::FaceDir::ZPlus), 0.75);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user