#7923 Ensemble Fracture Statistics: export fracture orientation for result files (#7926)

This commit is contained in:
Kristian Bendiksen 2021-08-31 08:12:40 +02:00 committed by GitHub
parent 200d5c65a3
commit 503d946bc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 7 deletions

View File

@ -37,7 +37,8 @@ bool RifEnsembleFractureStatisticsExporter::writeAsStimPlanXml( const std::vecto
const std::vector<double>& gridXs,
const std::vector<double>& gridYs,
double time,
RiaDefines::EclipseUnitSystem unitSystem )
RiaDefines::EclipseUnitSystem unitSystem,
RigStimPlanFractureDefinition::Orientation orientation )
{
QFile data( filePath );
if ( !data.open( QFile::WriteOnly | QFile::Truncate ) )
@ -47,6 +48,7 @@ bool RifEnsembleFractureStatisticsExporter::writeAsStimPlanXml( const std::vecto
QTextStream stream( &data );
appendHeaderToStream( stream );
appendOrientationToStream( stream, orientation );
appendGridDimensionsToStream( stream, gridXs, gridYs, unitSystem );
appendPropertiesToStream( stream, statistics, properties, gridYs, time );
appendFooterToStream( stream );
@ -105,6 +107,19 @@ void RifEnsembleFractureStatisticsExporter::appendPropertiesToStream(
stream << "</properties>" << endl;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifEnsembleFractureStatisticsExporter::appendOrientationToStream( QTextStream& stream,
RigStimPlanFractureDefinition::Orientation orientation )
{
if ( orientation != RigStimPlanFractureDefinition::Orientation::UNDEFINED )
{
QString orientationString = getStringForOrientation( orientation );
stream << QString( "<orientation>%1</orientation>" ).arg( orientationString ) << endl;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -150,3 +165,16 @@ QString RifEnsembleFractureStatisticsExporter::getStringForUnitSystem( RiaDefine
else
return "";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifEnsembleFractureStatisticsExporter::getStringForOrientation( RigStimPlanFractureDefinition::Orientation orientation )
{
if ( orientation == RigStimPlanFractureDefinition::Orientation::TRANSVERSE )
return "transverse";
else if ( orientation == RigStimPlanFractureDefinition::Orientation::LONGITUDINAL )
return "longitudinal";
else
return "";
}

View File

@ -20,6 +20,8 @@
#include "RiaDefines.h"
#include "RigStimPlanFractureDefinition.h"
#include <memory>
#include <vector>
@ -40,10 +42,12 @@ public:
const std::vector<double>& gridXs,
const std::vector<double>& gridYs,
double time,
RiaDefines::EclipseUnitSystem unitSystem );
RiaDefines::EclipseUnitSystem unitSystem,
RigStimPlanFractureDefinition::Orientation orientation );
private:
static void appendHeaderToStream( QTextStream& stream );
static void appendOrientationToStream( QTextStream& stream, RigStimPlanFractureDefinition::Orientation orientation );
static void appendGridDimensionsToStream( QTextStream& stream,
const std::vector<double>& gridXs,
const std::vector<double>& gridYs,
@ -56,4 +60,6 @@ private:
static void appendFooterToStream( QTextStream& stream );
static QString getStringForUnitSystem( RiaDefines::EclipseUnitSystem unitSystem );
static QString getStringForOrientation( RigStimPlanFractureDefinition::Orientation orientation );
};

View File

@ -344,11 +344,17 @@ std::vector<QString> RimEnsembleFractureStatistics::computeStatistics()
double timeStep = 1.0;
double referenceDepth = 0.0;
RigStimPlanFractureDefinition::Orientation orientation = RigStimPlanFractureDefinition::Orientation::UNDEFINED;
if ( m_meshAlignmentType() == MeshAlignmentType::PERFORATION_DEPTH )
{
for ( auto definition : stimPlanFractureDefinitions )
{
referenceDepth += computeDepthOfWellPathAtFracture( definition );
// Take the first orientation which is defined (all the fractures
// should have the same orientation).
if ( orientation == RigStimPlanFractureDefinition::Orientation::UNDEFINED )
orientation = definition->orientation();
}
referenceDepth /= stimPlanFractureDefinitions.size();
}
@ -421,7 +427,8 @@ std::vector<QString> RimEnsembleFractureStatistics::computeStatistics()
gridXs,
gridYsWithOffset,
timeStep,
unitSystem );
unitSystem,
orientation );
xmlFilePaths.push_back( xmlFilePath );
}