mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
Refactor: Improve interface for characteristicCellSize()
This commit is contained in:
1 parent
ec3e1b59cd
commit
5c48383d71
8 files changed
+32
-54
No files matched your search
@@ -130,11 +130,10 @@ void RigCaseToCaseCellMapper::calculateEclToGeomCellMapping( RigMainGrid* master
|
||||
{
|
||||
// Find tolerance
|
||||
|
||||
double cellSizeI, cellSizeJ, cellSizeK;
|
||||
masterEclGrid->characteristicCellSizes( &cellSizeI, &cellSizeJ, &cellSizeK );
|
||||
cvf::Vec3d cellSize = masterEclGrid->characteristicCellSizes();
|
||||
|
||||
double xyTolerance = cellSizeI * 0.4;
|
||||
double zTolerance = cellSizeK * 0.4;
|
||||
double xyTolerance = cellSize.x() * 0.4;
|
||||
double zTolerance = cellSize.z() * 0.4;
|
||||
|
||||
bool isEclFaceNormalsOutwards = masterEclGrid->isFaceNormalsOutwards();
|
||||
|
||||
|
||||
@@ -363,11 +363,10 @@ RigCaseToCaseRangeFilterMapper::CellMatchType RigCaseToCaseRangeFilterMapper::fi
|
||||
{
|
||||
// Find tolerance
|
||||
|
||||
double cellSizeI, cellSizeJ, cellSizeK;
|
||||
masterEclGrid->characteristicCellSizes( &cellSizeI, &cellSizeJ, &cellSizeK );
|
||||
cvf::Vec3d cellSize = masterEclGrid->characteristicCellSizes();
|
||||
|
||||
double xyTolerance = cellSizeI * 0.01;
|
||||
double zTolerance = cellSizeK * 0.01;
|
||||
double xyTolerance = cellSize.x() * 0.01;
|
||||
double zTolerance = cellSize.z() * 0.01;
|
||||
|
||||
bool isEclFaceNormalsOutwards = masterEclGrid->isFaceNormalsOutwards();
|
||||
|
||||
@@ -447,11 +446,10 @@ RigCaseToCaseRangeFilterMapper::CellMatchType RigCaseToCaseRangeFilterMapper::fi
|
||||
{
|
||||
// Find tolerance
|
||||
|
||||
double cellSizeI, cellSizeJ, cellSizeK;
|
||||
masterEclGrid->characteristicCellSizes( &cellSizeI, &cellSizeJ, &cellSizeK );
|
||||
cvf::Vec3d cellSize = masterEclGrid->characteristicCellSizes();
|
||||
|
||||
double xyTolerance = cellSizeI * 0.4;
|
||||
double zTolerance = cellSizeK * 0.4;
|
||||
double xyTolerance = cellSize.x() * 0.4;
|
||||
double zTolerance = cellSize.z() * 0.4;
|
||||
|
||||
bool isEclFaceNormalsOutwards = masterEclGrid->isFaceNormalsOutwards();
|
||||
|
||||
|
||||
@@ -408,11 +408,10 @@ double RigGridBase::characteristicIJCellSize() const
|
||||
{
|
||||
double characteristicCellSize = HUGE_VAL;
|
||||
|
||||
double cellSizeI, cellSizeJ, cellSizeK;
|
||||
characteristicCellSizes( &cellSizeI, &cellSizeJ, &cellSizeK );
|
||||
cvf::Vec3d cellSize = characteristicCellSizes();
|
||||
|
||||
if ( cellSizeI < characteristicCellSize ) characteristicCellSize = cellSizeI;
|
||||
if ( cellSizeJ < characteristicCellSize ) characteristicCellSize = cellSizeJ;
|
||||
if ( cellSize.x() < characteristicCellSize ) return cellSize.x();
|
||||
if ( cellSize.y() < characteristicCellSize ) return cellSize.y();
|
||||
|
||||
return characteristicCellSize;
|
||||
}
|
||||
@@ -420,10 +419,8 @@ double RigGridBase::characteristicIJCellSize() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigGridBase::characteristicCellSizes( double* iSize, double* jSize, double* kSize ) const
|
||||
cvf::Vec3d RigGridBase::characteristicCellSizes() const
|
||||
{
|
||||
CVF_ASSERT( iSize && jSize && kSize );
|
||||
|
||||
if ( !hasValidCharacteristicCellSizes() )
|
||||
{
|
||||
std::vector<size_t> reservoirCellIndices;
|
||||
@@ -433,9 +430,7 @@ void RigGridBase::characteristicCellSizes( double* iSize, double* jSize, double*
|
||||
computeCharacteristicCellSize( reservoirCellIndices );
|
||||
}
|
||||
|
||||
*iSize = m_characteristicCellSizeI;
|
||||
*jSize = m_characteristicCellSizeJ;
|
||||
*kSize = m_characteristicCellSizeK;
|
||||
return m_characteristicCellSize;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
virtual RigCell& cell( size_t gridLocalCellIndex );
|
||||
virtual const RigCell& cell( size_t gridLocalCellIndex ) const;
|
||||
|
||||
void characteristicCellSizes( double* iSize, double* jSize, double* kSize ) const override;
|
||||
cvf::Vec3d characteristicCellSizes() const override;
|
||||
|
||||
size_t reservoirCellIndex( size_t gridLocalCellIndex ) const;
|
||||
void setIndexToStartOfCells( size_t indexToStartOfCells ) { m_indexToStartOfCells = indexToStartOfCells; }
|
||||
|
||||
@@ -740,9 +740,8 @@ void RigMainGrid::computeFaceNormalsDirection( const std::vector<size_t>& reserv
|
||||
|
||||
double ijSize = characteristicIJCellSize();
|
||||
|
||||
double iSize, jSize, kSize = 0.0;
|
||||
characteristicCellSizes( &iSize, &jSize, &kSize );
|
||||
const double characteristicVolume = iSize * jSize * kSize;
|
||||
cvf::Vec3d cellSize = characteristicCellSizes();
|
||||
const double characteristicVolume = cellSize.x() * cellSize.y() * cellSize.z();
|
||||
|
||||
for ( const auto& index : reservoirCellIndices )
|
||||
{
|
||||
@@ -753,10 +752,10 @@ void RigMainGrid::computeFaceNormalsDirection( const std::vector<size_t>& reserv
|
||||
const double cellVolume = cell.volume();
|
||||
if ( cellVolume < characteristicVolume * 0.8 ) continue;
|
||||
|
||||
auto [isValid1, direction1] = isValidAndFaceNormalDir( ijSize, kSize, cell, cvf::StructGridInterface::FaceType::NEG_I );
|
||||
auto [isValid2, direction2] = isValidAndFaceNormalDir( ijSize, kSize, cell, cvf::StructGridInterface::FaceType::POS_I );
|
||||
auto [isValid3, direction3] = isValidAndFaceNormalDir( ijSize, kSize, cell, cvf::StructGridInterface::FaceType::NEG_J );
|
||||
auto [isValid4, direction4] = isValidAndFaceNormalDir( ijSize, kSize, cell, cvf::StructGridInterface::FaceType::POS_J );
|
||||
auto [isValid1, direction1] = isValidAndFaceNormalDir( ijSize, cellSize.z(), cell, cvf::StructGridInterface::FaceType::NEG_I );
|
||||
auto [isValid2, direction2] = isValidAndFaceNormalDir( ijSize, cellSize.z(), cell, cvf::StructGridInterface::FaceType::POS_I );
|
||||
auto [isValid3, direction3] = isValidAndFaceNormalDir( ijSize, cellSize.z(), cell, cvf::StructGridInterface::FaceType::NEG_J );
|
||||
auto [isValid4, direction4] = isValidAndFaceNormalDir( ijSize, cellSize.z(), cell, cvf::StructGridInterface::FaceType::POS_J );
|
||||
|
||||
if ( !isValid1 || !isValid2 || !isValid3 || !isValid4 ) continue;
|
||||
|
||||
|
||||
@@ -224,10 +224,9 @@ RiuEclipseSelectionItem* RiuCellSelectionTool::createSelectionItemFromInput()
|
||||
|
||||
m_cellEdit->clear();
|
||||
|
||||
double iSize, jSize, kSize;
|
||||
mainGrid->characteristicCellSizes( &iSize, &jSize, &kSize );
|
||||
cvf::Vec3d cellSize = mainGrid->characteristicCellSizes();
|
||||
|
||||
auto distance = std::min( { iSize, jSize, kSize } ) * 0.4;
|
||||
auto distance = std::min( { cellSize.x(), cellSize.y(), cellSize.z() } ) * 0.4;
|
||||
|
||||
if ( coords.size() == 3 )
|
||||
{
|
||||
|
||||
@@ -63,9 +63,7 @@ namespace cvf
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
StructGridInterface::StructGridInterface()
|
||||
{
|
||||
m_characteristicCellSizeI = cvf::UNDEFINED_DOUBLE;
|
||||
m_characteristicCellSizeJ = cvf::UNDEFINED_DOUBLE;
|
||||
m_characteristicCellSizeK = cvf::UNDEFINED_DOUBLE;
|
||||
m_characteristicCellSize = cvf::Vec3d::UNDEFINED;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -303,10 +301,8 @@ cvf::Vec3d StructGridInterface::displayModelOffset() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void StructGridInterface::characteristicCellSizes( double* iSize, double* jSize, double* kSize ) const
|
||||
cvf::Vec3d StructGridInterface::characteristicCellSizes() const
|
||||
{
|
||||
CVF_ASSERT( iSize && jSize && kSize );
|
||||
|
||||
if ( !hasValidCharacteristicCellSizes() )
|
||||
{
|
||||
std::vector<size_t> reservoirCellIndices;
|
||||
@@ -316,9 +312,7 @@ void StructGridInterface::characteristicCellSizes( double* iSize, double* jSize,
|
||||
computeCharacteristicCellSize( reservoirCellIndices );
|
||||
}
|
||||
|
||||
*iSize = m_characteristicCellSizeI;
|
||||
*jSize = m_characteristicCellSizeJ;
|
||||
*kSize = m_characteristicCellSizeK;
|
||||
return m_characteristicCellSize;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -326,11 +320,7 @@ void StructGridInterface::characteristicCellSizes( double* iSize, double* jSize,
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool StructGridInterface::hasValidCharacteristicCellSizes() const
|
||||
{
|
||||
if ( m_characteristicCellSizeI == cvf::UNDEFINED_DOUBLE || m_characteristicCellSizeJ == cvf::UNDEFINED_DOUBLE ||
|
||||
m_characteristicCellSizeK == cvf::UNDEFINED_DOUBLE )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
return !m_characteristicCellSize.isUndefined();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -427,9 +417,9 @@ void StructGridInterface::computeCharacteristicCellSize( const std::vector<size_
|
||||
|
||||
if ( divisor > 0.0 )
|
||||
{
|
||||
m_characteristicCellSizeI = cvf::Math::sqrt( iLengthAccumulated / divisor );
|
||||
m_characteristicCellSizeJ = cvf::Math::sqrt( jLengthAccumulated / divisor );
|
||||
m_characteristicCellSizeK = cvf::Math::sqrt( kLengthAccumulated / divisor );
|
||||
m_characteristicCellSize = cvf::Vec3d( cvf::Math::sqrt( iLengthAccumulated / divisor ),
|
||||
cvf::Math::sqrt( jLengthAccumulated / divisor ),
|
||||
cvf::Math::sqrt( kLengthAccumulated / divisor ) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
|
||||
virtual cvf::Vec3d minCoordinate() const = 0;
|
||||
virtual cvf::Vec3d maxCoordinate() const = 0;
|
||||
virtual void characteristicCellSizes( double* iSize, double* jSize, double* kSize ) const;
|
||||
virtual cvf::Vec3d characteristicCellSizes() const;
|
||||
|
||||
bool hasValidCharacteristicCellSizes() const;
|
||||
void computeCharacteristicCellSize( const std::vector<size_t>& globalCellIndices ) const;
|
||||
@@ -126,9 +126,7 @@ public:
|
||||
static std::vector<FaceType> validFaceTypes();
|
||||
|
||||
protected:
|
||||
mutable double m_characteristicCellSizeI;
|
||||
mutable double m_characteristicCellSizeJ;
|
||||
mutable double m_characteristicCellSizeK;
|
||||
mutable cvf::Vec3d m_characteristicCellSize;
|
||||
};
|
||||
|
||||
} // namespace cvf
|
||||
Reference in new issue
Block a user