mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Support multiple timesteps per day using opm_common reader (#11908)
* Fix progress window hiding time step filter dlg * Clean up reader preferences
This commit is contained in:
@@ -45,7 +45,6 @@
|
||||
#include "cvfMath.h"
|
||||
|
||||
#include <QCryptographicHash>
|
||||
#include <QDebug>
|
||||
#include <QFileInfo>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@@ -763,21 +763,54 @@ std::vector<RigEclipseTimeStepInfo> RifReaderOpmCommon::createFilteredTimeStepIn
|
||||
|
||||
auto timeStepsOnFile = readTimeSteps();
|
||||
|
||||
if ( timeStepsOnFile.size() == 0 ) return timeStepInfos;
|
||||
|
||||
auto startDayOffset = timeStepsOnFile[0].simulationTimeFromStart;
|
||||
QDate startDate( timeStepsOnFile[0].year, timeStepsOnFile[0].month, timeStepsOnFile[0].day );
|
||||
|
||||
for ( size_t i = 0; i < timeStepsOnFile.size(); i++ )
|
||||
{
|
||||
if ( isTimeStepIncludedByFilter( i ) )
|
||||
{
|
||||
QDate date( timeStepsOnFile[i].year, timeStepsOnFile[i].month, timeStepsOnFile[i].day );
|
||||
auto datetime = RiaQDateTimeTools::createDateTime( date, Qt::TimeSpec::UTC );
|
||||
auto dateTime = dateTimeFromTimeStepOnFile( timeStepsOnFile[i], startDate, startDayOffset );
|
||||
|
||||
timeStepInfos.push_back(
|
||||
RigEclipseTimeStepInfo( datetime, timeStepsOnFile[i].sequenceNumber, timeStepsOnFile[i].simulationTimeFromStart ) );
|
||||
RigEclipseTimeStepInfo( dateTime, timeStepsOnFile[i].sequenceNumber, timeStepsOnFile[i].simulationTimeFromStart ) );
|
||||
}
|
||||
}
|
||||
|
||||
return timeStepInfos;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RifReaderOpmCommon::dateTimeFromTimeStepOnFile( RifReaderOpmCommon::TimeDataFile timeOnFile, QDate startDate, double startDayOffset )
|
||||
{
|
||||
QDateTime dateTime;
|
||||
if ( timeOnFile.simulationTimeFromStart == 0 )
|
||||
{
|
||||
QDate date( timeOnFile.year, timeOnFile.month, timeOnFile.day );
|
||||
dateTime = RiaQDateTimeTools::createDateTime( date, Qt::TimeSpec::UTC );
|
||||
}
|
||||
else
|
||||
{
|
||||
dateTime = RiaQDateTimeTools::createDateTime( startDate, Qt::TimeSpec::UTC );
|
||||
|
||||
double dayDoubleValue = timeOnFile.simulationTimeFromStart;
|
||||
int dayValue = cvf::Math::floor( dayDoubleValue );
|
||||
const int adjustedDayValue = dayValue - startDayOffset;
|
||||
dateTime = dateTime.addDays( adjustedDayValue );
|
||||
|
||||
double dayFraction = dayDoubleValue - dayValue;
|
||||
double milliseconds = dayFraction * 24.0 * 60.0 * 60.0 * 1000.0;
|
||||
|
||||
dateTime = dateTime.addMSecs( milliseconds );
|
||||
}
|
||||
|
||||
return dateTime;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -785,7 +818,6 @@ void RifReaderOpmCommon::buildMetaData( RigEclipseCaseData* eclipseCaseData, caf
|
||||
{
|
||||
setupInitAndRestartAccess();
|
||||
|
||||
std::vector<QDateTime> timeSteps;
|
||||
std::vector<RigEclipseTimeStepInfo> filteredTimeStepInfos;
|
||||
|
||||
RigEclipseTimeStepInfo firstTimeStepInfo{ QDateTime(), 0, 0.0 };
|
||||
@@ -984,14 +1016,15 @@ std::vector<QDateTime> RifReaderOpmCommon::timeStepsOnFile( QString gridFileName
|
||||
|
||||
if ( m_restartFile == nullptr ) return {};
|
||||
|
||||
auto timeStepsFromFile = readTimeSteps();
|
||||
auto timeStepsOnFile = readTimeSteps();
|
||||
auto startDayOffset = timeStepsOnFile[0].simulationTimeFromStart;
|
||||
QDate startDate( timeStepsOnFile[0].year, timeStepsOnFile[0].month, timeStepsOnFile[0].day );
|
||||
|
||||
std::vector<QDateTime> dateTimes;
|
||||
|
||||
for ( const auto& timeStep : timeStepsFromFile )
|
||||
for ( const auto& timeStep : timeStepsOnFile )
|
||||
{
|
||||
QDate date( timeStep.year, timeStep.month, timeStep.day );
|
||||
QDateTime dateTime = RiaQDateTimeTools::createDateTime( date, Qt::UTC );
|
||||
auto dateTime = dateTimeFromTimeStepOnFile( timeStep, startDate, startDayOffset );
|
||||
dateTimes.push_back( dateTime );
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <QDateTime>
|
||||
|
||||
namespace Opm::EclIO
|
||||
{
|
||||
class EInit;
|
||||
@@ -101,6 +103,7 @@ private:
|
||||
};
|
||||
|
||||
std::vector<TimeDataFile> readTimeSteps();
|
||||
QDateTime dateTimeFromTimeStepOnFile( RifReaderOpmCommon::TimeDataFile timeOnFile, QDate startDate, double startDayOffset );
|
||||
|
||||
protected:
|
||||
enum class ActiveType
|
||||
|
||||
Reference in New Issue
Block a user