#8030 Ensemble Fracture Statistics: report area for individual fractures

This commit is contained in:
Kristian Bendiksen 2021-09-22 14:36:30 +02:00
parent 63896f8c3a
commit ebeaa8088c
3 changed files with 55 additions and 30 deletions

View File

@ -359,6 +359,15 @@ void RimEnsembleFractureStatistics::loadAndUpdateData()
std::vector<cvf::ref<RigStimPlanFractureDefinition>> stimPlanFractureDefinitions =
readFractureDefinitions( m_filePaths.v(), unitSystem );
// Log area for each fracture for debugging
std::vector<double> area =
RigEnsembleFractureStatisticsCalculator::calculateProperty( stimPlanFractureDefinitions,
RigEnsembleFractureStatisticsCalculator::PropertyType::AREA );
for ( size_t i = 0; i < m_filePaths.v().size(); i++ )
{
RiaLogging::info( QString( "%1 Area: %2" ).arg( m_filePaths.v()[i].path() ).arg( area[i] ) );
}
if ( m_excludeZeroWidthFractures() )
{
size_t numBeforeFiltering = stimPlanFractureDefinitions.size();

View File

@ -78,6 +78,47 @@ RigHistogramData RigEnsembleFractureStatisticsCalculator::createStatisticsData(
const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
PropertyType propertyType,
int numBins )
{
std::vector<double> samples = calculateProperty( fractureDefinitions, propertyType );
RigHistogramData histogramData;
double sum;
double range;
double dev;
RigStatisticsMath::calculateBasicStatistics( samples,
&histogramData.min,
&histogramData.max,
&sum,
&range,
&histogramData.mean,
&dev );
double p50;
double mean;
RigStatisticsMath::calculateStatisticsCurves( samples,
&histogramData.p10,
&p50,
&histogramData.p90,
&mean,
RigStatisticsMath::PercentileStyle::SWITCHED );
std::vector<size_t> histogram;
RigHistogramCalculator histogramCalculator( histogramData.min, histogramData.max, numBins, &histogram );
for ( auto s : samples )
histogramCalculator.addValue( s );
histogramData.histogram = histogram;
return histogramData;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<double> RigEnsembleFractureStatisticsCalculator::calculateProperty(
const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
PropertyType propertyType )
{
std::vector<double> samples;
if ( propertyType == PropertyType::HEIGHT )
@ -112,36 +153,7 @@ RigHistogramData RigEnsembleFractureStatisticsCalculator::createStatisticsData(
samples = calculateFormationDip( fractureDefinitions );
}
RigHistogramData histogramData;
double sum;
double range;
double dev;
RigStatisticsMath::calculateBasicStatistics( samples,
&histogramData.min,
&histogramData.max,
&sum,
&range,
&histogramData.mean,
&dev );
double p50;
double mean;
RigStatisticsMath::calculateStatisticsCurves( samples,
&histogramData.p10,
&p50,
&histogramData.p90,
&mean,
RigStatisticsMath::PercentileStyle::SWITCHED );
std::vector<size_t> histogram;
RigHistogramCalculator histogramCalculator( histogramData.min, histogramData.max, numBins, &histogram );
for ( auto s : samples )
histogramCalculator.addValue( s );
histogramData.histogram = histogram;
return histogramData;
return samples;
}
//--------------------------------------------------------------------------------------------------

View File

@ -60,6 +60,10 @@ public:
static std::vector<cvf::ref<RigStimPlanFractureDefinition>>
removeZeroWidthDefinitions( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions );
static std::vector<double>
calculateProperty( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
PropertyType propertyType );
private:
static std::vector<double>
calculateGridStatistics( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,