mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 14:40:26 -05:00
Refactors restart file name retrieval to use preferences for reader mode. Simplifies logic by removing separate OPM-specific retrieval methods, and instead uses a unified method that dynamically selects the appropriate reader based on user preferences. Adds fallback mechanism to read restart file paths from SMSPEC files when the RESTART keyword is missing in ESMRY files generated by ResInsight. Corrects path handling for restart files by adjusting paths relative to the header file.
95 lines
3.7 KiB
C++
95 lines
3.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) Statoil ASA
|
|
//
|
|
// ResInsight is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
|
// for more details.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#include "RiaDefines.h"
|
|
|
|
#include "ert/ecl/ecl_sum.hpp"
|
|
|
|
#include <QString>
|
|
#include <QStringList>
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class RifSummaryReaderInterface;
|
|
|
|
//==================================================================================================
|
|
//
|
|
//
|
|
//==================================================================================================
|
|
class RifRestartFileInfo
|
|
{
|
|
public:
|
|
RifRestartFileInfo()
|
|
: startDate( 0 )
|
|
, endDate( 0 )
|
|
{
|
|
}
|
|
RifRestartFileInfo( const QString& _fileName, time_t _startDate, time_t _endDate )
|
|
: fileName( _fileName )
|
|
, startDate( _startDate )
|
|
, endDate( _endDate )
|
|
{
|
|
}
|
|
bool valid() { return !fileName.isEmpty(); }
|
|
|
|
QString fileName;
|
|
time_t startDate;
|
|
time_t endDate;
|
|
};
|
|
|
|
//==================================================================================================
|
|
//
|
|
//
|
|
//
|
|
//==================================================================================================
|
|
class RifEclipseSummaryTools
|
|
{
|
|
public:
|
|
static void findSummaryHeaderFile( const QString& inputFile, QString* headerFile, bool* isFormatted );
|
|
static QString findGridCaseFileFromSummaryHeaderFile( const QString& summaryHeaderFile );
|
|
|
|
static void dumpMetaData( RifSummaryReaderInterface* readerEclipseSummary );
|
|
|
|
static std::vector<QString> getRestartFileNames( const QString& headerFileName, std::vector<QString>& warnings );
|
|
|
|
static RifRestartFileInfo getFileInfoAndTimeSteps( const QString& headerFileName );
|
|
|
|
static void closeEclSum( ecl_sum_type* ecl_sum );
|
|
static ecl_sum_type* openEclSum( const QString& inHeaderFileName, bool includeRestartFiles );
|
|
static RiaDefines::EclipseUnitSystem readUnitSystem( ecl_sum_type* ecl_sum );
|
|
static std::vector<time_t> getTimeSteps( ecl_sum_type* ecl_sum );
|
|
|
|
static std::pair<std::string, std::string> splitVectorNameAndSuffix( const std::string& vectorName );
|
|
static std::vector<std::string> nativeVectorNames( const std::vector<std::string>& vectorNames );
|
|
|
|
// Do not use this method directly, use the overload that infers the useOpmReader from Preferences
|
|
// This method is public to be able to call it from unit tests
|
|
static std::vector<QString> getRestartFileNames( const QString& headerFileName, bool useOpmReader, std::vector<QString>& warnings );
|
|
|
|
private:
|
|
static void findSummaryFiles( const QString& inputFile, QString* headerFile, QStringList* dataFiles );
|
|
static QString getRestartRelativeFilePathResdata( const QString& headerFileName );
|
|
static QString getRestartRelativeFilePathOpm( const QString& headerFileName );
|
|
static QString getRestartFilePath( const QString& headerFileName, const QString& restartCaseNameFromFile );
|
|
|
|
static void findSummaryHeaderFileInfo( const QString& inputFile, QString* headerFile, QString* path, QString* base, bool* isFormatted );
|
|
};
|