mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#8030 Ensemble Fracture Statistics: report area for individual fractures
This commit is contained in:
@@ -359,6 +359,15 @@ void RimEnsembleFractureStatistics::loadAndUpdateData()
|
|||||||
std::vector<cvf::ref<RigStimPlanFractureDefinition>> stimPlanFractureDefinitions =
|
std::vector<cvf::ref<RigStimPlanFractureDefinition>> stimPlanFractureDefinitions =
|
||||||
readFractureDefinitions( m_filePaths.v(), unitSystem );
|
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() )
|
if ( m_excludeZeroWidthFractures() )
|
||||||
{
|
{
|
||||||
size_t numBeforeFiltering = stimPlanFractureDefinitions.size();
|
size_t numBeforeFiltering = stimPlanFractureDefinitions.size();
|
||||||
|
|||||||
@@ -78,6 +78,47 @@ RigHistogramData RigEnsembleFractureStatisticsCalculator::createStatisticsData(
|
|||||||
const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
|
const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
|
||||||
PropertyType propertyType,
|
PropertyType propertyType,
|
||||||
int numBins )
|
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;
|
std::vector<double> samples;
|
||||||
if ( propertyType == PropertyType::HEIGHT )
|
if ( propertyType == PropertyType::HEIGHT )
|
||||||
@@ -112,36 +153,7 @@ RigHistogramData RigEnsembleFractureStatisticsCalculator::createStatisticsData(
|
|||||||
samples = calculateFormationDip( fractureDefinitions );
|
samples = calculateFormationDip( fractureDefinitions );
|
||||||
}
|
}
|
||||||
|
|
||||||
RigHistogramData histogramData;
|
return samples;
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -60,6 +60,10 @@ public:
|
|||||||
static std::vector<cvf::ref<RigStimPlanFractureDefinition>>
|
static std::vector<cvf::ref<RigStimPlanFractureDefinition>>
|
||||||
removeZeroWidthDefinitions( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions );
|
removeZeroWidthDefinitions( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions );
|
||||||
|
|
||||||
|
static std::vector<double>
|
||||||
|
calculateProperty( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
|
||||||
|
PropertyType propertyType );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::vector<double>
|
static std::vector<double>
|
||||||
calculateGridStatistics( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
|
calculateGridStatistics( const std::vector<cvf::ref<RigStimPlanFractureDefinition>>& fractureDefinitions,
|
||||||
|
|||||||
Reference in New Issue
Block a user