Refactor: Improve interface for characteristicCellSize()

This commit is contained in:
Kristian Bendiksen authored and Magne Sjaastad committed 2025-10-06 09:10:58 +02:00
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 )
{
+7 -17
View File
@@ -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;
}
+2 -4
View File
@@ -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