Refactor: remove pass-through methods from Rim to Rig.

This commit is contained in:
Kristian Bendiksen 2024-11-18 09:31:45 +01:00
parent 06fb3e1241
commit eb6467c599
7 changed files with 69 additions and 170 deletions

View File

@ -17,12 +17,16 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RicContourMapPickEventHandler.h"
#include "RigContourMapProjection.h"
#include "Rim3dView.h"
#include "RimContourMapProjection.h"
#include "RimEclipseContourMapView.h"
#include "RimGeoMechContourMapView.h"
#include "RiuMainWindow.h"
#include "RivObjectSourceInfo.h"
#include "cafDisplayCoordTransform.h"
@ -69,7 +73,8 @@ bool RicContourMapPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& eve
cvf::Vec2d pickedPoint( cvf::Vec2d::UNDEFINED );
double valueAtPoint = 0.0;
if ( contourMap->checkForMapIntersection( targetPointInDomain, &pickedPoint, &valueAtPoint ) )
if ( contourMap->mapProjection() &&
contourMap->mapProjection()->checkForMapIntersection( targetPointInDomain, &pickedPoint, &valueAtPoint ) )
{
curveText += QString( "Picked Point X, Y: %1, %2\n" ).arg( pickedPoint.x(), 5, 'f', 0 ).arg( pickedPoint.y(), 5, 'f', 0 );
curveText += QString( "Result Type: %1\n" ).arg( contourMap->resultDescriptionText() );

View File

@ -24,6 +24,8 @@
#include "RifTextDataTableFormatter.h"
#include "RigContourMapProjection.h"
#include "RimContourMapProjection.h"
#include "RimEclipseContourMapProjection.h"
#include "RimEclipseContourMapView.h"
@ -149,7 +151,7 @@ void RicExportContourMapToTextFeature::writeMetaDataToStream( QTextStream&
const QString& caseName,
bool exportLocalCoordinates )
{
cvf::Vec2ui numVerticesIJ = contourMapProjection->numberOfVerticesIJ();
cvf::Vec2ui numVerticesIJ = contourMapProjection->mapProjection()->numberOfVerticesIJ();
stream << "# case name : " << contourMapProjection->caseName() << "\n";
stream << "# sampling points : nx=" << numVerticesIJ.x() << " ny=" << numVerticesIJ.y() << "\n";
stream << "# time and date : " << contourMapProjection->currentTimeStepName() << "\n";
@ -185,31 +187,35 @@ void RicExportContourMapToTextFeature::writeContourMapToStream( QTextStream&
formatter.header( header );
cvf::Vec2ui numVerticesIJ = contourMapProjection->numberOfVerticesIJ();
std::vector<double> xVertexPositions = contourMapProjection->xVertexPositions();
std::vector<double> yVertexPositions = contourMapProjection->yVertexPositions();
// Undefined values are positive inf in contour map projection.
double undefined = std::numeric_limits<double>::infinity();
for ( unsigned int j = 0; j < numVerticesIJ.y(); j++ )
const RigContourMapProjection* mapProjection = contourMapProjection->mapProjection();
if ( mapProjection )
{
for ( unsigned int i = 0; i < numVerticesIJ.x(); i++ )
{
double value = contourMapProjection->valueAtVertex( i, j );
if ( !( std::isinf( value ) && excludeUndefinedValues ) )
{
double x = xVertexPositions.at( i );
double y = yVertexPositions.at( j );
if ( !exportLocalCoordinates )
{
x += contourMapProjection->origin3d().x();
y += contourMapProjection->origin3d().y();
}
cvf::Vec2ui numVerticesIJ = mapProjection->numberOfVerticesIJ();
std::vector<double> xVertexPositions = mapProjection->xVertexPositions();
std::vector<double> yVertexPositions = mapProjection->yVertexPositions();
formatter.add( x );
formatter.add( y );
formatter.addValueOrDefaultMarker( value, undefined );
formatter.rowCompleted();
// Undefined values are positive inf in contour map projection.
double undefined = std::numeric_limits<double>::infinity();
for ( unsigned int j = 0; j < numVerticesIJ.y(); j++ )
{
for ( unsigned int i = 0; i < numVerticesIJ.x(); i++ )
{
double value = mapProjection->valueAtVertex( i, j );
if ( !( std::isinf( value ) && excludeUndefinedValues ) )
{
double x = xVertexPositions.at( i );
double y = yVertexPositions.at( j );
if ( !exportLocalCoordinates )
{
x += mapProjection->origin3d().x();
y += mapProjection->origin3d().y();
}
formatter.add( x );
formatter.add( y );
formatter.addValueOrDefaultMarker( value, undefined );
formatter.rowCompleted();
}
}
}
}

View File

@ -28,6 +28,7 @@
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigContourMapProjection.h"
#include "RigEclipseCaseData.h"
#include "RigFemPartCollection.h"
#include "RigFemPartResultsCollection.h"
@ -313,10 +314,11 @@ QString Rim3dOverlayInfoConfig::caseInfoText( RimEclipseView* eclipseView )
QLocale localeWithSpaceAsGroupSeparator( caf::norwegianLocale() );
RimEclipseContourMapView* contourMap = dynamic_cast<RimEclipseContourMapView*>( eclipseView );
if ( contourMap && contourMap->contourMapProjection() )
if ( contourMap && contourMap->contourMapProjection() && contourMap->contourMapProjection()->mapProjection() )
{
QString totCellCount = localeWithSpaceAsGroupSeparator.toString( contourMap->contourMapProjection()->numberOfCells() );
cvf::uint validCellCount = contourMap->contourMapProjection()->numberOfValidCells();
QString totCellCount =
localeWithSpaceAsGroupSeparator.toString( contourMap->contourMapProjection()->mapProjection()->numberOfCells() );
cvf::uint validCellCount = contourMap->contourMapProjection()->mapProjection()->numberOfValidCells();
QString activeCellCountText = localeWithSpaceAsGroupSeparator.toString( validCellCount );
QString aggregationType = contourMap->contourMapProjection()->resultAggregationText();
QString weightingParameterString;
@ -380,10 +382,10 @@ QString Rim3dOverlayInfoConfig::caseInfoText( RimGeoMechView* geoMechView )
QString caseName = geoMechCase->caseUserDescription();
RimGeoMechContourMapView* contourMap = dynamic_cast<RimGeoMechContourMapView*>( geoMechView );
if ( contourMap && contourMap->contourMapProjection() )
if ( contourMap && contourMap->contourMapProjection() && contourMap->contourMapProjection()->mapProjection() )
{
QString totCellCount = QString::number( contourMap->contourMapProjection()->numberOfCells() );
cvf::uint validCellCount = contourMap->contourMapProjection()->numberOfValidCells();
QString totCellCount = QString::number( contourMap->contourMapProjection()->mapProjection()->numberOfCells() );
cvf::uint validCellCount = contourMap->contourMapProjection()->mapProjection()->numberOfValidCells();
QString activeCellCountText = QString::number( validCellCount );
QString aggregationType = contourMap->contourMapProjection()->resultAggregationText();
@ -445,9 +447,9 @@ QString Rim3dOverlayInfoConfig::resultInfoText( const RigHistogramData& histData
RimEclipseContourMapView* contourMap = dynamic_cast<RimEclipseContourMapView*>( eclipseView );
if ( contourMap )
if ( contourMap && contourMap->contourMapProjection() && contourMap->contourMapProjection()->mapProjection() )
{
bool isResultsInfoRelevant = contourMap->contourMapProjection()->numberOfValidCells() > 0u;
bool isResultsInfoRelevant = contourMap->contourMapProjection()->mapProjection()->numberOfValidCells() > 0u;
if ( isResultsInfoRelevant )
{
QString propName = eclipseView->cellResult()->resultVariableUiShortName();

View File

@ -309,46 +309,9 @@ QString RimContourMapProjection::currentTimeStepName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimContourMapProjection::maxValue() const
const RigContourMapProjection* RimContourMapProjection::mapProjection() const
{
if ( m_contourMapProjection ) return m_contourMapProjection->maxValue();
return -std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimContourMapProjection::minValue() const
{
if ( m_contourMapProjection ) return m_contourMapProjection->minValue();
return std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimContourMapProjection::meanValue() const
{
if ( m_contourMapProjection ) return m_contourMapProjection->meanValue();
return std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimContourMapProjection::sumAllValues() const
{
if ( m_contourMapProjection ) return m_contourMapProjection->sumAllValues();
return 0.0;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Vec2ui RimContourMapProjection::numberOfVerticesIJ() const
{
if ( m_contourMapGrid ) return m_contourMapGrid->numberOfVerticesIJ();
return cvf::Vec2ui( 0, 0 );
return m_contourMapProjection.get();
}
//--------------------------------------------------------------------------------------------------
@ -359,51 +322,6 @@ bool RimContourMapProjection::isColumnResult() const
return RigContourMapCalculator::isColumnResult( m_resultAggregation() );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimContourMapProjection::valueAtVertex( uint i, uint j ) const
{
if ( m_contourMapProjection ) return m_contourMapProjection->valueAtVertex( i, j );
return std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
uint RimContourMapProjection::numberOfCells() const
{
if ( m_contourMapGrid ) return m_contourMapGrid->numberOfCells();
return 0u;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
uint RimContourMapProjection::numberOfValidCells() const
{
if ( m_contourMapProjection ) return m_contourMapProjection->numberOfValidCells();
return 0u;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RimContourMapProjection::numberOfVertices() const
{
if ( m_contourMapGrid ) return m_contourMapGrid->numberOfVertices();
return 0;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimContourMapProjection::checkForMapIntersection( const cvf::Vec3d& domainPoint3d, cvf::Vec2d* contourMapPoint, double* valueAtPoint ) const
{
if ( m_contourMapProjection ) return m_contourMapProjection->checkForMapIntersection( domainPoint3d, contourMapPoint, valueAtPoint );
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -444,7 +362,7 @@ bool RimContourMapProjection::gridMappingNeedsUpdating() const
{
if ( !m_contourMapProjection ) return true;
if ( m_contourMapProjection->projected3dGridIndices().size() != numberOfCells() ) return true;
if ( m_contourMapProjection->projected3dGridIndices().size() != m_contourMapProjection->numberOfCells() ) return true;
auto cellGridIdxVisibility = m_contourMapProjection->getCellVisibility();
if ( cellGridIdxVisibility.isNull() ) return true;
@ -467,8 +385,9 @@ bool RimContourMapProjection::resultsNeedsUpdating( int timeStep ) const
{
if ( !m_contourMapProjection ) return true;
return ( m_contourMapProjection->aggregatedResults().size() != numberOfCells() ||
m_contourMapProjection->aggregatedVertexResults().size() != numberOfVertices() || timeStep != m_currentResultTimestep );
return ( m_contourMapProjection->aggregatedResults().size() != m_contourMapProjection->numberOfCells() ||
m_contourMapProjection->aggregatedVertexResults().size() != m_contourMapProjection->numberOfVertices() ||
timeStep != m_currentResultTimestep );
}
//--------------------------------------------------------------------------------------------------
@ -547,24 +466,6 @@ bool RimContourMapProjection::isStraightSummationResult() const
return RigContourMapCalculator::isStraightSummationResult( m_resultAggregation() );
}
//--------------------------------------------------------------------------------------------------
/// Vertex positions in local coordinates (add origin2d.x() for UTM x)
//--------------------------------------------------------------------------------------------------
std::vector<double> RimContourMapProjection::xVertexPositions() const
{
if ( m_contourMapGrid ) return m_contourMapGrid->xVertexPositions();
return {};
}
//--------------------------------------------------------------------------------------------------
/// Vertex positions in local coordinates (add origin2d.y() for UTM y)
//--------------------------------------------------------------------------------------------------
std::vector<double> RimContourMapProjection::yVertexPositions() const
{
if ( m_contourMapGrid ) return m_contourMapGrid->yVertexPositions();
return {};
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -70,31 +70,13 @@ public:
QString caseName() const;
QString currentTimeStepName() const;
double maxValue() const;
double minValue() const;
double meanValue() const;
double sumAllValues() const;
cvf::Vec2ui numberOfVerticesIJ() const;
bool isColumnResult() const;
bool isMeanResult() const;
bool isStraightSummationResult() const;
double valueAtVertex( uint i, uint j ) const;
uint numberOfCells() const;
uint numberOfValidCells() const;
size_t numberOfVertices() const;
bool checkForMapIntersection( const cvf::Vec3d& domainPoint3d, cvf::Vec2d* contourMapPoint, double* valueAtPoint ) const;
void setPickPoint( cvf::Vec2d globalPickPoint );
cvf::Vec3d origin3d() const;
std::vector<double> xVertexPositions() const;
std::vector<double> yVertexPositions() const;
// Pure-virtual public methods which should be overridden by Eclipse and Geo-mechanical contour map implementations
virtual QString resultDescriptionText() const = 0;
virtual RimRegularLegendConfig* legendConfig() const = 0;
@ -107,6 +89,8 @@ public:
virtual cvf::ref<cvf::UByteArray> getCellVisibility() const;
const RigContourMapProjection* mapProjection() const;
protected:
// Protected virtual methods to be overridden by Eclipse and Geo-mechanical contour map implementations
virtual void updateGridInformation() = 0;

View File

@ -103,8 +103,8 @@ void RimEclipseContourMapProjection::updateLegend()
{
RimEclipseCellColors* cellColors = view()->cellResult();
double minVal = minValue();
double maxVal = maxValue();
double minVal = m_contourMapProjection ? m_contourMapProjection->minValue() : std::numeric_limits<double>::infinity();
double maxVal = m_contourMapProjection ? m_contourMapProjection->maxValue() : -std::numeric_limits<double>::infinity();
auto [minValAllTimeSteps, maxValAllTimeSteps] = minmaxValuesAllTimeSteps();

View File

@ -18,6 +18,7 @@
#include "RimHistogramCalculator.h"
#include "RigContourMapProjection.h"
#include "RigEclipseMultiPropertyStatCalc.h"
#include "RigEclipseNativeVisibleCellsStatCalc.h"
#include "RigFemNativeVisibleCellsStatCalc.h"
@ -94,16 +95,16 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseContourMapView
{
RigHistogramData histData;
if ( contourMap )
if ( contourMap && contourMap->contourMapProjection() && contourMap->contourMapProjection()->mapProjection() )
{
bool isResultsInfoRelevant = contourMap->contourMapProjection()->numberOfValidCells() > 0u;
bool isResultsInfoRelevant = contourMap->contourMapProjection()->mapProjection()->numberOfValidCells() > 0u;
if ( isResultsInfoRelevant )
{
histData.min = contourMap->contourMapProjection()->minValue();
histData.max = contourMap->contourMapProjection()->maxValue();
histData.mean = contourMap->contourMapProjection()->meanValue();
histData.sum = contourMap->contourMapProjection()->sumAllValues();
histData.min = contourMap->contourMapProjection()->mapProjection()->minValue();
histData.max = contourMap->contourMapProjection()->mapProjection()->maxValue();
histData.mean = contourMap->contourMapProjection()->mapProjection()->meanValue();
histData.sum = contourMap->contourMapProjection()->mapProjection()->sumAllValues();
}
}
return histData;
@ -116,16 +117,16 @@ RigHistogramData RimHistogramCalculator::histogramData( RimGeoMechContourMapView
{
RigHistogramData histData;
if ( contourMap )
if ( contourMap && contourMap->contourMapProjection() && contourMap->contourMapProjection()->mapProjection() )
{
bool isResultsInfoRelevant = contourMap->contourMapProjection()->numberOfValidCells() > 0u;
bool isResultsInfoRelevant = contourMap->contourMapProjection()->mapProjection()->numberOfValidCells() > 0u;
if ( isResultsInfoRelevant )
{
histData.min = contourMap->contourMapProjection()->minValue();
histData.max = contourMap->contourMapProjection()->maxValue();
histData.mean = contourMap->contourMapProjection()->meanValue();
histData.sum = contourMap->contourMapProjection()->sumAllValues();
histData.min = contourMap->contourMapProjection()->mapProjection()->minValue();
histData.max = contourMap->contourMapProjection()->mapProjection()->maxValue();
histData.mean = contourMap->contourMapProjection()->mapProjection()->meanValue();
histData.sum = contourMap->contourMapProjection()->mapProjection()->sumAllValues();
}
}
return histData;