Make Fault+FaultFace no longer use shared_ptr
This commit is contained in:
@@ -41,19 +41,32 @@ namespace Opm {
|
||||
}
|
||||
|
||||
|
||||
void Fault::addFace(std::shared_ptr<const FaultFace> face) {
|
||||
m_faceList.push_back( face );
|
||||
void Fault::addFace( FaultFace face ) {
|
||||
m_faceList.push_back( std::move( face ) );
|
||||
}
|
||||
|
||||
std::vector<std::shared_ptr<const FaultFace> >::const_iterator Fault::begin() const {
|
||||
std::vector< FaultFace >::const_iterator Fault::begin() const {
|
||||
return m_faceList.begin();
|
||||
}
|
||||
|
||||
|
||||
std::vector<std::shared_ptr<const FaultFace> >::const_iterator Fault::end() const {
|
||||
std::vector< FaultFace >::const_iterator Fault::end() const {
|
||||
return m_faceList.end();
|
||||
}
|
||||
|
||||
bool Fault::operator==( const Fault& rhs ) const {
|
||||
return this->m_name == rhs.m_name
|
||||
&& this->m_transMult == rhs.m_transMult
|
||||
&& this->m_faceList.size() == rhs.m_faceList.size()
|
||||
&& std::equal( this->m_faceList.begin(),
|
||||
this->m_faceList.end(),
|
||||
rhs.m_faceList.begin() );
|
||||
}
|
||||
|
||||
bool Fault::operator!=( const Fault& rhs ) const {
|
||||
return !( *this == rhs );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/FaultFace.hpp>
|
||||
|
||||
namespace Opm {
|
||||
|
||||
class FaultFace;
|
||||
@@ -35,14 +37,17 @@ public:
|
||||
const std::string& getName() const;
|
||||
void setTransMult(double transMult);
|
||||
double getTransMult() const;
|
||||
void addFace(std::shared_ptr<const FaultFace> face);
|
||||
std::vector<std::shared_ptr<const FaultFace> >::const_iterator begin() const;
|
||||
std::vector<std::shared_ptr<const FaultFace> >::const_iterator end() const;
|
||||
void addFace( FaultFace );
|
||||
std::vector< FaultFace >::const_iterator begin() const;
|
||||
std::vector< FaultFace >::const_iterator end() const;
|
||||
|
||||
bool operator==( const Fault& rhs ) const;
|
||||
bool operator!=( const Fault& rhs ) const;
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
double m_transMult;
|
||||
std::vector<std::shared_ptr<const FaultFace> > m_faceList;
|
||||
std::vector< FaultFace > m_faceList;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -68,18 +68,16 @@ namespace Opm {
|
||||
int K1 = faultRecord.getItem(5).get<int>(0) - 1;
|
||||
int K2 = faultRecord.getItem(6).get<int>(0) - 1;
|
||||
FaceDir::DirEnum faceDir = FaceDir::FromString(faultRecord.getItem(7).get<std::string>(0));
|
||||
std::shared_ptr<const FaultFace> face = std::make_shared<const FaultFace>(
|
||||
grid.getNX(), grid.getNY(), grid.getNZ(),
|
||||
static_cast<size_t>(I1), static_cast<size_t>(I2),
|
||||
static_cast<size_t>(J1), static_cast<size_t>(J2),
|
||||
static_cast<size_t>(K1), static_cast<size_t>(K2),
|
||||
faceDir);
|
||||
FaultFace face { grid.getNX(), grid.getNY(), grid.getNZ(),
|
||||
size_t(I1), size_t(I2),
|
||||
size_t(J1), size_t(J2),
|
||||
size_t(K1), size_t(K2),
|
||||
faceDir };
|
||||
|
||||
if (!hasFault(faultName))
|
||||
addFault(faultName);
|
||||
|
||||
Fault& fault = getFault(faultName);
|
||||
fault.addFace(face);
|
||||
getFault( faultName ).addFace( face );
|
||||
}
|
||||
|
||||
size_t FaultCollection::size() const {
|
||||
|
||||
@@ -78,4 +78,15 @@ namespace Opm {
|
||||
return m_faceDir;
|
||||
}
|
||||
|
||||
bool FaultFace::operator==( const FaultFace& rhs ) const {
|
||||
return this->m_faceDir == rhs.m_faceDir
|
||||
&& this->m_indexList.size() == rhs.m_indexList.size()
|
||||
&& std::equal( this->m_indexList.begin(),
|
||||
this->m_indexList.end(),
|
||||
rhs.m_indexList.begin() );
|
||||
}
|
||||
|
||||
bool FaultFace::operator!=( const FaultFace& rhs ) const {
|
||||
return !( *this == rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,9 @@ public:
|
||||
std::vector<size_t>::const_iterator end() const;
|
||||
FaceDir::DirEnum getDir() 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;
|
||||
|
||||
@@ -115,13 +115,12 @@ namespace Opm {
|
||||
void TransMult::applyMULTFLT(const Fault& fault) {
|
||||
double transMult = fault.getTransMult();
|
||||
|
||||
for (auto face_iter = fault.begin(); face_iter != fault.end(); ++face_iter) {
|
||||
std::shared_ptr<const FaultFace> face = *face_iter;
|
||||
FaceDir::DirEnum faceDir = face->getDir();
|
||||
for( const auto& face : fault ) {
|
||||
FaceDir::DirEnum faceDir = face.getDir();
|
||||
auto& multProperty = getDirectionProperty(faceDir);
|
||||
|
||||
for (auto cell_iter = face->begin(); cell_iter != face->end(); ++cell_iter) {
|
||||
size_t globalIndex = *cell_iter;
|
||||
|
||||
for( auto globalIndex : face ) {
|
||||
multProperty.multiplyValueAtIndex( globalIndex , transMult);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,9 +47,9 @@ BOOST_AUTO_TEST_CASE(CreateInvalidFace) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateFace) {
|
||||
std::shared_ptr<Opm::FaultFace> face1 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 0 , 0 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
std::shared_ptr<Opm::FaultFace> face2 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 1 , 1 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
std::shared_ptr<Opm::FaultFace> face3 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 0 , 0 , 1 , 1 , Opm::FaceDir::YPlus);
|
||||
Opm::FaultFace face1(10,10,10,0, 2 , 0 , 0 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
Opm::FaultFace face2(10,10,10,0, 2 , 1 , 1 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
Opm::FaultFace face3(10,10,10,0, 2 , 0 , 0 , 1 , 1 , Opm::FaceDir::YPlus);
|
||||
|
||||
std::vector<size_t> trueValues1{0,1,2};
|
||||
std::vector<size_t> trueValues2{10,11,12};
|
||||
@@ -57,9 +57,9 @@ BOOST_AUTO_TEST_CASE(CreateFace) {
|
||||
size_t i = 0;
|
||||
|
||||
{
|
||||
auto iter3 = face3->begin();
|
||||
auto iter2 = face2->begin();
|
||||
for (auto iter1 = face1->begin(); iter1 != face1->end(); ++iter1) {
|
||||
auto iter3 = face3.begin();
|
||||
auto iter2 = face2.begin();
|
||||
for (auto iter1 = face1.begin(); iter1 != face1.end(); ++iter1) {
|
||||
size_t index1 = *iter1;
|
||||
size_t index2 = *iter2;
|
||||
size_t index3 = *iter3;
|
||||
@@ -73,7 +73,7 @@ BOOST_AUTO_TEST_CASE(CreateFace) {
|
||||
++i;
|
||||
}
|
||||
}
|
||||
BOOST_CHECK_EQUAL( face1->getDir() , Opm::FaceDir::YPlus);
|
||||
BOOST_CHECK_EQUAL( face1.getDir() , Opm::FaceDir::YPlus);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,13 +83,21 @@ BOOST_AUTO_TEST_CASE(CreateFault) {
|
||||
BOOST_CHECK_EQUAL( 1.0 , fault.getTransMult());
|
||||
}
|
||||
|
||||
namespace Opm {
|
||||
|
||||
inline std::ostream& operator<<( std::ostream& stream, const FaultFace& face ) {
|
||||
stream << face.getDir() << ": [ ";
|
||||
for( auto index : face ) stream << index << " ";
|
||||
return stream << "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddFaceToFaults) {
|
||||
Opm::Fault fault("FAULT1");
|
||||
std::shared_ptr<Opm::FaultFace> face1 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 0 , 0 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
std::shared_ptr<Opm::FaultFace> face2 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 1 , 1 , 0 , 0 , Opm::FaceDir::YPlus);
|
||||
std::shared_ptr<Opm::FaultFace> face3 = std::make_shared<Opm::FaultFace>(10,10,10,0, 2 , 0 , 0 , 1 , 1 , Opm::FaceDir::YPlus);
|
||||
Opm::FaultFace face1( 10,10,10,0, 2 , 0 , 0 , 0 , 0 , Opm::FaceDir::YPlus );
|
||||
Opm::FaultFace face2( 10,10,10,0, 2 , 1 , 1 , 0 , 0 , Opm::FaceDir::YPlus );
|
||||
Opm::FaultFace face3( 10,10,10,0, 2 , 0 , 0 , 1 , 1 , Opm::FaceDir::YPlus );
|
||||
fault.addFace( face1 );
|
||||
fault.addFace( face2 );
|
||||
fault.addFace( face3 );
|
||||
|
||||
Reference in New Issue
Block a user