mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactor RimSummaryCurvesData
This commit is contained in:
parent
4ea4479a34
commit
f2b6291a6b
@ -21,13 +21,14 @@
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
#include "RiaTimeHistoryCurveResampler.h"
|
||||
|
||||
#include "RimAsciiDataCurve.h"
|
||||
#include "RimGridTimeHistoryCurve.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "cvfAssert.h"
|
||||
#include "cvfMath.h"
|
||||
|
||||
@ -130,6 +131,56 @@ void RimSummaryCurvesData::addCurveDataNoSearch( const QString& c
|
||||
allCurveData.push_back( curveDataVector );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurvesData::createTextForExport( const std::vector<RimSummaryCurve*>& curves,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
const std::vector<RimGridTimeHistoryCurve*>& gridCurves,
|
||||
RiaQDateTimeTools::DateTimePeriod resamplingPeriod,
|
||||
bool showTimeAsLongString )
|
||||
{
|
||||
QString out;
|
||||
|
||||
RimSummaryCurvesData summaryCurvesGridData;
|
||||
RimSummaryCurvesData summaryCurvesObsData;
|
||||
RimSummaryCurvesData::populateSummaryCurvesData( curves, SummaryCurveType::CURVE_TYPE_GRID, &summaryCurvesGridData );
|
||||
RimSummaryCurvesData::populateSummaryCurvesData( curves, SummaryCurveType::CURVE_TYPE_OBSERVED, &summaryCurvesObsData );
|
||||
|
||||
RimSummaryCurvesData timeHistoryCurvesData;
|
||||
RimSummaryCurvesData::populateTimeHistoryCurvesData( gridCurves, &timeHistoryCurvesData );
|
||||
|
||||
// Export observed data
|
||||
RimSummaryCurvesData::appendToExportData( out, { summaryCurvesObsData }, showTimeAsLongString );
|
||||
|
||||
std::vector<RimSummaryCurvesData> exportData( 2 );
|
||||
|
||||
// Summary grid data for export
|
||||
RimSummaryCurvesData::prepareCaseCurvesForExport( resamplingPeriod,
|
||||
ResampleAlgorithm::DATA_DECIDES,
|
||||
summaryCurvesGridData,
|
||||
&exportData[0] );
|
||||
|
||||
// Time history data for export
|
||||
RimSummaryCurvesData::prepareCaseCurvesForExport( resamplingPeriod,
|
||||
ResampleAlgorithm::PERIOD_END,
|
||||
timeHistoryCurvesData,
|
||||
&exportData[1] );
|
||||
|
||||
// Export resampled summary and time history data
|
||||
RimSummaryCurvesData::appendToExportData( out, exportData, showTimeAsLongString );
|
||||
|
||||
// Pasted observed data
|
||||
{
|
||||
RimSummaryCurvesData asciiCurvesData;
|
||||
RimSummaryCurvesData::populateAsciiDataCurvesData( asciiCurves, &asciiCurvesData );
|
||||
|
||||
RimSummaryCurvesData::appendToExportData( out, { asciiCurvesData }, showTimeAsLongString );
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -146,8 +197,8 @@ void RimSummaryCurvesData::populateSummaryCurvesData( std::vector<RimSummaryCurv
|
||||
bool isObservedCurve = curve->summaryCaseY() ? curve->summaryCaseY()->isObservedData() : false;
|
||||
|
||||
if ( !curve->isCurveVisible() ) continue;
|
||||
if ( isObservedCurve && ( curveType & CURVE_TYPE_OBSERVED ) == 0 ) continue;
|
||||
if ( !isObservedCurve && ( curveType & CURVE_TYPE_GRID ) == 0 ) continue;
|
||||
if ( isObservedCurve && ( curveType != SummaryCurveType::CURVE_TYPE_OBSERVED ) ) continue;
|
||||
if ( !isObservedCurve && ( curveType != SummaryCurveType::CURVE_TYPE_GRID ) ) continue;
|
||||
if ( !curve->summaryCaseY() ) continue;
|
||||
|
||||
QString curveCaseName = curve->summaryCaseY()->displayCaseName();
|
||||
@ -180,7 +231,7 @@ void RimSummaryCurvesData::populateSummaryCurvesData( std::vector<RimSummaryCurv
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( auto cd : curveDataList )
|
||||
for ( const auto& cd : curveDataList )
|
||||
{
|
||||
curvesData->addCurveData( curveCaseName, ensembleName, curve->timeStepsY(), cd );
|
||||
}
|
||||
@ -253,20 +304,20 @@ void RimSummaryCurvesData::appendToExportDataForCase( QString&
|
||||
if ( j == 0 )
|
||||
{
|
||||
out += "Date and time";
|
||||
for ( size_t k = 0; k < curveData.size(); k++ ) // curves
|
||||
for ( const auto& k : curveData ) // curves
|
||||
{
|
||||
out += "\t" + ( curveData[k].name );
|
||||
out += "\t" + ( k.name );
|
||||
}
|
||||
}
|
||||
out += "\n";
|
||||
out += QDateTime::fromSecsSinceEpoch( timeSteps[j] ).toUTC().toString( "yyyy-MM-dd hh:mm:ss " );
|
||||
|
||||
for ( size_t k = 0; k < curveData.size(); k++ ) // curves
|
||||
for ( const auto& k : curveData ) // curves
|
||||
{
|
||||
QString valueText;
|
||||
if ( j < curveData[k].values.size() )
|
||||
if ( j < k.values.size() )
|
||||
{
|
||||
valueText = QString::number( curveData[k].values[j], 'g', RimSummaryPlot::precision() );
|
||||
valueText = QString::number( k.values[j], 'g', RimSummaryPlot::precision() );
|
||||
}
|
||||
out += "\t" + valueText.rightJustified( 13 );
|
||||
}
|
||||
@ -303,9 +354,9 @@ void RimSummaryCurvesData::appendToExportData( QString&
|
||||
out += "Date and time";
|
||||
for ( size_t i = 0; i < data.caseIds.size(); i++ )
|
||||
{
|
||||
for ( size_t j = 0; j < data.allCurveData[i].size(); j++ )
|
||||
for ( auto& j : data.allCurveData[i] )
|
||||
{
|
||||
out += "\t" + data.allCurveData[i][j].name;
|
||||
out += "\t" + j.name;
|
||||
}
|
||||
}
|
||||
out += "\n";
|
||||
@ -380,13 +431,12 @@ void RimSummaryCurvesData::appendToExportData( QString&
|
||||
size_t& currIndex = currIndexes[i];
|
||||
bool timeStepExists = currIndex < data.timeSteps[i].size() && timeStep == data.timeSteps[i][currIndex];
|
||||
|
||||
for ( size_t j = 0; j < data.allCurveData[i].size(); j++ ) // vectors
|
||||
for ( auto& j : data.allCurveData[i] ) // vectors
|
||||
{
|
||||
QString valueText;
|
||||
if ( timeStepExists )
|
||||
{
|
||||
valueText =
|
||||
QString::number( data.allCurveData[i][j].values[currIndex], 'g', RimSummaryPlot::precision() );
|
||||
valueText = QString::number( j.values[currIndex], 'g', RimSummaryPlot::precision() );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ struct CurveData
|
||||
std::vector<double> values;
|
||||
};
|
||||
|
||||
enum SummaryCurveType
|
||||
enum class SummaryCurveType
|
||||
{
|
||||
CURVE_TYPE_GRID = 0x1,
|
||||
CURVE_TYPE_OBSERVED = 0x2
|
||||
@ -63,6 +63,13 @@ public:
|
||||
const std::vector<time_t>& curvetimeSteps,
|
||||
const std::vector<CurveData>& curveDataVector );
|
||||
|
||||
static QString createTextForExport( const std::vector<RimSummaryCurve*>& curves,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
const std::vector<RimGridTimeHistoryCurve*>& gridCurves,
|
||||
RiaQDateTimeTools::DateTimePeriod resamplingPeriod,
|
||||
bool showTimeAsLongString );
|
||||
|
||||
private:
|
||||
static void populateSummaryCurvesData( std::vector<RimSummaryCurve*> curves,
|
||||
SummaryCurveType curveType,
|
||||
RimSummaryCurvesData* curvesData );
|
||||
|
@ -307,52 +307,16 @@ QString RimSummaryPlot::asciiDataForPlotExport() const
|
||||
QString RimSummaryPlot::asciiDataForSummaryPlotExport( RiaQDateTimeTools::DateTimePeriod resamplingPeriod,
|
||||
bool showTimeAsLongString ) const
|
||||
{
|
||||
QString out;
|
||||
std::vector<RimSummaryCurve*> curves;
|
||||
this->descendantsIncludingThisOfType( curves );
|
||||
|
||||
// Summary and time history (from grid) curves
|
||||
{
|
||||
std::vector<RimSummaryCurve*> curves;
|
||||
this->descendantsIncludingThisOfType( curves );
|
||||
auto gridCurves = m_gridTimeHistoryCurves.childObjects();
|
||||
auto asciiCurves = m_asciiDataCurves.childObjects();
|
||||
|
||||
RimSummaryCurvesData summaryCurvesGridData;
|
||||
RimSummaryCurvesData summaryCurvesObsData;
|
||||
RimSummaryCurvesData::populateSummaryCurvesData( curves, CURVE_TYPE_GRID, &summaryCurvesGridData );
|
||||
RimSummaryCurvesData::populateSummaryCurvesData( curves, CURVE_TYPE_OBSERVED, &summaryCurvesObsData );
|
||||
QString text =
|
||||
RimSummaryCurvesData::createTextForExport( curves, asciiCurves, gridCurves, resamplingPeriod, showTimeAsLongString );
|
||||
|
||||
RimSummaryCurvesData timeHistoryCurvesData;
|
||||
RimSummaryCurvesData::populateTimeHistoryCurvesData( m_gridTimeHistoryCurves.childObjects(),
|
||||
&timeHistoryCurvesData );
|
||||
|
||||
// Export observed data
|
||||
RimSummaryCurvesData::appendToExportData( out, { summaryCurvesObsData }, showTimeAsLongString );
|
||||
|
||||
std::vector<RimSummaryCurvesData> exportData( 2 );
|
||||
|
||||
// Summary grid data for export
|
||||
RimSummaryCurvesData::prepareCaseCurvesForExport( resamplingPeriod,
|
||||
ResampleAlgorithm::DATA_DECIDES,
|
||||
summaryCurvesGridData,
|
||||
&exportData[0] );
|
||||
|
||||
// Time history data for export
|
||||
RimSummaryCurvesData::prepareCaseCurvesForExport( resamplingPeriod,
|
||||
ResampleAlgorithm::PERIOD_END,
|
||||
timeHistoryCurvesData,
|
||||
&exportData[1] );
|
||||
|
||||
// Export resampled summary and time history data
|
||||
RimSummaryCurvesData::appendToExportData( out, exportData, showTimeAsLongString );
|
||||
}
|
||||
|
||||
// Pasted observed data
|
||||
{
|
||||
RimSummaryCurvesData asciiCurvesData;
|
||||
RimSummaryCurvesData::populateAsciiDataCurvesData( m_asciiDataCurves.childObjects(), &asciiCurvesData );
|
||||
|
||||
RimSummaryCurvesData::appendToExportData( out, { asciiCurvesData }, showTimeAsLongString );
|
||||
}
|
||||
|
||||
return out;
|
||||
return text;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user