mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactor: Make a copy of histogram data.
This commit is contained in:
parent
01d88030d4
commit
359df8360e
@ -178,10 +178,10 @@ void RicGridStatisticsDialog::setHistogramData( RimGridView* view )
|
|||||||
{
|
{
|
||||||
QVector<QwtIntervalSample> histSamples;
|
QVector<QwtIntervalSample> histSamples;
|
||||||
QVector<QPointF> aggrSamples;
|
QVector<QPointF> aggrSamples;
|
||||||
double xStep = ( histogramData.max - histogramData.min ) / ( *histogramData.histogram ).size();
|
double xStep = ( histogramData.max - histogramData.min ) / histogramData.histogram.size();
|
||||||
double xCurr = histogramData.min;
|
double xCurr = histogramData.min;
|
||||||
double aggrValue = 0.0;
|
double aggrValue = 0.0;
|
||||||
for ( size_t value : *histogramData.histogram )
|
for ( size_t value : histogramData.histogram )
|
||||||
{
|
{
|
||||||
double xNext = xCurr + xStep;
|
double xNext = xCurr + xStep;
|
||||||
histSamples.push_back( QwtIntervalSample( value, xCurr, xNext ) );
|
histSamples.push_back( QwtIntervalSample( value, xCurr, xNext ) );
|
||||||
|
@ -862,7 +862,7 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo( RimEclipseView* eclipseView )
|
|||||||
if ( isResultsInfoRelevant && histData.isHistogramVectorValid() )
|
if ( isResultsInfoRelevant && histData.isHistogramVectorValid() )
|
||||||
{
|
{
|
||||||
eclipseView->viewer()->showHistogram( true );
|
eclipseView->viewer()->showHistogram( true );
|
||||||
eclipseView->viewer()->setHistogram( histData.min, histData.max, *histData.histogram );
|
eclipseView->viewer()->setHistogram( histData.min, histData.max, histData.histogram );
|
||||||
eclipseView->viewer()->setHistogramPercentiles( histData.p10, histData.p90, histData.mean );
|
eclipseView->viewer()->setHistogramPercentiles( histData.p10, histData.p90, histData.mean );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -911,7 +911,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo( RimGeoMechView* geoMechView )
|
|||||||
if ( isResultsInfoRelevant && histData.isHistogramVectorValid() )
|
if ( isResultsInfoRelevant && histData.isHistogramVectorValid() )
|
||||||
{
|
{
|
||||||
geoMechView->viewer()->showHistogram( true );
|
geoMechView->viewer()->showHistogram( true );
|
||||||
geoMechView->viewer()->setHistogram( histData.min, histData.max, *histData.histogram );
|
geoMechView->viewer()->setHistogram( histData.min, histData.max, histData.histogram );
|
||||||
geoMechView->viewer()->setHistogramPercentiles( histData.p10, histData.p90, histData.mean );
|
geoMechView->viewer()->setHistogramPercentiles( histData.p10, histData.p90, histData.mean );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
fldResults->sumScalarValue( resAddr, timeStep, &histData.sum );
|
fldResults->sumScalarValue( resAddr, timeStep, &histData.sum );
|
||||||
fldResults->mobileVolumeWeightedMean( resAddr, timeStep, &histData.weightedMean );
|
fldResults->mobileVolumeWeightedMean( resAddr, timeStep, &histData.weightedMean );
|
||||||
|
|
||||||
histData.histogram = &( fldResults->scalarValuesHistogram( resAddr, timeStep ) );
|
histData.histogram = fldResults->scalarValuesHistogram( resAddr, timeStep );
|
||||||
}
|
}
|
||||||
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
||||||
{
|
{
|
||||||
@ -201,7 +201,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
m_visibleCellStatistics->sumCellScalarValues( timeStep, histData.sum );
|
m_visibleCellStatistics->sumCellScalarValues( timeStep, histData.sum );
|
||||||
m_visibleCellStatistics->mobileVolumeWeightedMean( timeStep, histData.weightedMean );
|
m_visibleCellStatistics->mobileVolumeWeightedMean( timeStep, histData.weightedMean );
|
||||||
|
|
||||||
histData.histogram = &( m_visibleCellStatistics->cellScalarValuesHistogram( timeStep ) );
|
histData.histogram = m_visibleCellStatistics->cellScalarValuesHistogram( timeStep );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
cellResults->meanCellScalarValues( eclResAddr, histData.mean );
|
cellResults->meanCellScalarValues( eclResAddr, histData.mean );
|
||||||
cellResults->sumCellScalarValues( eclResAddr, histData.sum );
|
cellResults->sumCellScalarValues( eclResAddr, histData.sum );
|
||||||
cellResults->mobileVolumeWeightedMean( eclResAddr, histData.weightedMean );
|
cellResults->mobileVolumeWeightedMean( eclResAddr, histData.weightedMean );
|
||||||
histData.histogram = &( cellResults->cellScalarValuesHistogram( eclResAddr ) );
|
histData.histogram = cellResults->cellScalarValuesHistogram( eclResAddr );
|
||||||
}
|
}
|
||||||
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
||||||
{
|
{
|
||||||
@ -225,7 +225,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
cellResults->meanCellScalarValues( eclResAddr, timeStep, histData.mean );
|
cellResults->meanCellScalarValues( eclResAddr, timeStep, histData.mean );
|
||||||
cellResults->sumCellScalarValues( eclResAddr, timeStep, histData.sum );
|
cellResults->sumCellScalarValues( eclResAddr, timeStep, histData.sum );
|
||||||
cellResults->mobileVolumeWeightedMean( eclResAddr, timeStep, histData.weightedMean );
|
cellResults->mobileVolumeWeightedMean( eclResAddr, timeStep, histData.weightedMean );
|
||||||
histData.histogram = &( cellResults->cellScalarValuesHistogram( eclResAddr, timeStep ) );
|
histData.histogram = cellResults->cellScalarValuesHistogram( eclResAddr, timeStep );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
||||||
@ -241,7 +241,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
m_visibleCellStatistics->sumCellScalarValues( histData.sum );
|
m_visibleCellStatistics->sumCellScalarValues( histData.sum );
|
||||||
m_visibleCellStatistics->mobileVolumeWeightedMean( histData.weightedMean );
|
m_visibleCellStatistics->mobileVolumeWeightedMean( histData.weightedMean );
|
||||||
|
|
||||||
histData.histogram = &( m_visibleCellStatistics->cellScalarValuesHistogram() );
|
histData.histogram = m_visibleCellStatistics->cellScalarValuesHistogram();
|
||||||
}
|
}
|
||||||
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
||||||
{
|
{
|
||||||
@ -251,7 +251,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimEclipseView*
|
|||||||
m_visibleCellStatistics->sumCellScalarValues( timeStep, histData.sum );
|
m_visibleCellStatistics->sumCellScalarValues( timeStep, histData.sum );
|
||||||
m_visibleCellStatistics->mobileVolumeWeightedMean( timeStep, histData.weightedMean );
|
m_visibleCellStatistics->mobileVolumeWeightedMean( timeStep, histData.weightedMean );
|
||||||
|
|
||||||
histData.histogram = &( m_visibleCellStatistics->cellScalarValuesHistogram( timeStep ) );
|
histData.histogram = m_visibleCellStatistics->cellScalarValuesHistogram( timeStep );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return histData;
|
return histData;
|
||||||
@ -285,7 +285,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimGeoMechView*
|
|||||||
caseData->femPartResults()->p10p90ScalarValues( resAddress, &histData.p10, &histData.p90 );
|
caseData->femPartResults()->p10p90ScalarValues( resAddress, &histData.p10, &histData.p90 );
|
||||||
caseData->femPartResults()->sumScalarValue( resAddress, &histData.sum );
|
caseData->femPartResults()->sumScalarValue( resAddress, &histData.sum );
|
||||||
|
|
||||||
histData.histogram = &( caseData->femPartResults()->scalarValuesHistogram( resAddress ) );
|
histData.histogram = caseData->femPartResults()->scalarValuesHistogram( resAddress );
|
||||||
}
|
}
|
||||||
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
||||||
{
|
{
|
||||||
@ -295,7 +295,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimGeoMechView*
|
|||||||
caseData->femPartResults()->p10p90ScalarValues( resAddress, timeStepIdx, &histData.p10, &histData.p90 );
|
caseData->femPartResults()->p10p90ScalarValues( resAddress, timeStepIdx, &histData.p10, &histData.p90 );
|
||||||
caseData->femPartResults()->sumScalarValue( resAddress, timeStepIdx, &histData.sum );
|
caseData->femPartResults()->sumScalarValue( resAddress, timeStepIdx, &histData.sum );
|
||||||
|
|
||||||
histData.histogram = &( caseData->femPartResults()->scalarValuesHistogram( resAddress, timeStepIdx ) );
|
histData.histogram = caseData->femPartResults()->scalarValuesHistogram( resAddress, timeStepIdx );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
else if ( cellRange == StatisticsCellRangeType::VISIBLE_CELLS )
|
||||||
@ -310,7 +310,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimGeoMechView*
|
|||||||
m_visibleCellStatistics->p10p90CellScalarValues( histData.p10, histData.p90 );
|
m_visibleCellStatistics->p10p90CellScalarValues( histData.p10, histData.p90 );
|
||||||
m_visibleCellStatistics->sumCellScalarValues( histData.sum );
|
m_visibleCellStatistics->sumCellScalarValues( histData.sum );
|
||||||
|
|
||||||
histData.histogram = &( m_visibleCellStatistics->cellScalarValuesHistogram() );
|
histData.histogram = m_visibleCellStatistics->cellScalarValuesHistogram();
|
||||||
}
|
}
|
||||||
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
else if ( timeRange == StatisticsTimeRangeType::CURRENT_TIMESTEP )
|
||||||
{
|
{
|
||||||
@ -320,7 +320,7 @@ RigHistogramData RimHistogramCalculator::histogramData( RimGeoMechView*
|
|||||||
m_visibleCellStatistics->p10p90CellScalarValues( timeStepIdx, histData.p10, histData.p90 );
|
m_visibleCellStatistics->p10p90CellScalarValues( timeStepIdx, histData.p10, histData.p90 );
|
||||||
m_visibleCellStatistics->sumCellScalarValues( timeStepIdx, histData.sum );
|
m_visibleCellStatistics->sumCellScalarValues( timeStepIdx, histData.sum );
|
||||||
|
|
||||||
histData.histogram = &( m_visibleCellStatistics->cellScalarValuesHistogram( timeStepIdx ) );
|
histData.histogram = m_visibleCellStatistics->cellScalarValuesHistogram( timeStepIdx );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,7 +207,7 @@ void RimStatisticsPlot::updatePlots()
|
|||||||
QBarSet* set0 = new QBarSet( m_plotWindowTitle );
|
QBarSet* set0 = new QBarSet( m_plotWindowTitle );
|
||||||
double minValue = std::numeric_limits<double>::max();
|
double minValue = std::numeric_limits<double>::max();
|
||||||
double maxValue = -std::numeric_limits<double>::max();
|
double maxValue = -std::numeric_limits<double>::max();
|
||||||
for ( double value : *histogramData.histogram )
|
for ( double value : histogramData.histogram )
|
||||||
{
|
{
|
||||||
*set0 << value;
|
*set0 << value;
|
||||||
minValue = std::min( minValue, value );
|
minValue = std::min( minValue, value );
|
||||||
|
@ -106,9 +106,8 @@ RigHistogramData RigEnsembleFractureStatisticsCalculator::createStatisticsData(
|
|||||||
double mean;
|
double mean;
|
||||||
RigStatisticsMath::calculateStatisticsCurves( samples, &histogramData.p10, &p50, &histogramData.p90, &mean );
|
RigStatisticsMath::calculateStatisticsCurves( samples, &histogramData.p10, &p50, &histogramData.p90, &mean );
|
||||||
|
|
||||||
// TODO: this leaks memory: api assume the the histogram is owned by someone else (which is kind-of-strange)
|
std::vector<size_t> histogram;
|
||||||
std::vector<size_t>* histogram = new std::vector<size_t>();
|
RigHistogramCalculator histogramCalculator( histogramData.min, histogramData.max, 20, &histogram );
|
||||||
RigHistogramCalculator histogramCalculator( histogramData.min, histogramData.max, 20, histogram );
|
|
||||||
for ( auto s : samples )
|
for ( auto s : samples )
|
||||||
histogramCalculator.addValue( s );
|
histogramCalculator.addValue( s );
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ RigHistogramData::RigHistogramData()
|
|||||||
, mean( std::numeric_limits<double>::infinity() )
|
, mean( std::numeric_limits<double>::infinity() )
|
||||||
, weightedMean( std::numeric_limits<double>::infinity() )
|
, weightedMean( std::numeric_limits<double>::infinity() )
|
||||||
, sum( 0.0 )
|
, sum( 0.0 )
|
||||||
, histogram( nullptr )
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,5 +55,5 @@ bool RigHistogramData::isValid( double parameter ) const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RigHistogramData::isHistogramVectorValid() const
|
bool RigHistogramData::isHistogramVectorValid() const
|
||||||
{
|
{
|
||||||
return histogram && histogram->size() > 0 && isMinMaxValid();
|
return histogram.size() > 0 && isMinMaxValid();
|
||||||
}
|
}
|
||||||
|
@ -29,14 +29,14 @@ class RigHistogramData
|
|||||||
public:
|
public:
|
||||||
RigHistogramData();
|
RigHistogramData();
|
||||||
|
|
||||||
double min;
|
double min;
|
||||||
double max;
|
double max;
|
||||||
double p10;
|
double p10;
|
||||||
double p90;
|
double p90;
|
||||||
double mean;
|
double mean;
|
||||||
double sum;
|
double sum;
|
||||||
double weightedMean;
|
double weightedMean;
|
||||||
const std::vector<size_t>* histogram;
|
std::vector<size_t> histogram;
|
||||||
|
|
||||||
bool isMinMaxValid() const;
|
bool isMinMaxValid() const;
|
||||||
bool isHistogramVectorValid() const;
|
bool isHistogramVectorValid() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user