Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions ApplicationLibCode/FileInterface/RifMultipleSummaryReaders.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#include "RifMultipleSummaryReaders.h"

#include "RimCalculatedSummaryCurveReader.h"
#include "cvfAssert.h"

//--------------------------------------------------------------------------------------------------
///
Expand All @@ -39,8 +39,8 @@ void RifMultipleSummaryReaders::addReader( std::unique_ptr<RifSummaryReaderInter
// evaluates calculated reader first.
auto calculatedReaderFirst = []( const auto& first, const auto& second )
{
bool isFirstCalc = dynamic_cast<RifCalculatedSummaryCurveReader*>( first.get() ) != nullptr;
bool isSecondCalc = dynamic_cast<RifCalculatedSummaryCurveReader*>( second.get() ) != nullptr;
bool isFirstCalc = first->isCalculated();
bool isSecondCalc = second->isCalculated();
if ( isFirstCalc && !isSecondCalc ) return true;
if ( !isFirstCalc && isSecondCalc ) return false;
return first->serialNumber() < second->serialNumber();
Expand Down Expand Up @@ -153,8 +153,8 @@ void RifMultipleSummaryReaders::createAndSetAddresses()

auto nativeReaderFirst = []( const auto& first, const auto& second )
{
bool isFirstCalc = dynamic_cast<RifCalculatedSummaryCurveReader*>( first ) != nullptr;
bool isSecondCalc = dynamic_cast<RifCalculatedSummaryCurveReader*>( second ) != nullptr;
bool isFirstCalc = first->isCalculated();
bool isSecondCalc = second->isCalculated();
if ( isFirstCalc && !isSecondCalc ) return false;
if ( !isFirstCalc && isSecondCalc ) return true;
return first->serialNumber() < second->serialNumber();
Expand Down
89 changes: 24 additions & 65 deletions ApplicationLibCode/FileInterface/RifReaderEnsembleStatisticsRft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,13 @@
#include "Well/RigEclipseWellLogExtractor.h"
#include "Well/RigWellPath.h"

#include "RimSummaryCase.h"
#include "RimSummaryEnsemble.h"
#include "RimTools.h"

#include "cafAssert.h"

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderEnsembleStatisticsRft::RifReaderEnsembleStatisticsRft( const RimSummaryEnsemble* summaryCaseCollection, RimEclipseCase* eclipseCase )
: m_summaryCaseCollection( summaryCaseCollection )
RifReaderEnsembleStatisticsRft::RifReaderEnsembleStatisticsRft( std::vector<RifReaderRftInterface*> rftReaders, RimEclipseCase* eclipseCase )
: m_rftReaders( std::move( rftReaders ) )
, m_eclipseCase( eclipseCase )
{
}
Expand All @@ -44,16 +40,11 @@ RifReaderEnsembleStatisticsRft::RifReaderEnsembleStatisticsRft( const RimSummary
//--------------------------------------------------------------------------------------------------
std::set<RifEclipseRftAddress> RifReaderEnsembleStatisticsRft::eclipseRftAddresses()
{
if ( !m_summaryCaseCollection ) return {};

std::set<RifEclipseRftAddress> allAddresses;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<RifEclipseRftAddress> addresses = summaryCase->rftReader()->eclipseRftAddresses();
allAddresses.insert( addresses.begin(), addresses.end() );
}
std::set<RifEclipseRftAddress> addresses = reader->eclipseRftAddresses();
allAddresses.insert( addresses.begin(), addresses.end() );
}

std::set<RifEclipseRftAddress> statisticsAddresses;
Expand Down Expand Up @@ -84,7 +75,7 @@ std::set<RifEclipseRftAddress> RifReaderEnsembleStatisticsRft::eclipseRftAddress
//--------------------------------------------------------------------------------------------------
void RifReaderEnsembleStatisticsRft::values( const RifEclipseRftAddress& rftAddress, std::vector<double>* values )
{
if ( !m_summaryCaseCollection ) return;
if ( m_rftReaders.empty() ) return;

auto it = m_cachedValues.find( rftAddress );
if ( it == m_cachedValues.end() )
Expand All @@ -102,16 +93,11 @@ void RifReaderEnsembleStatisticsRft::values( const RifEclipseRftAddress& rftAddr
//--------------------------------------------------------------------------------------------------
std::set<QDateTime> RifReaderEnsembleStatisticsRft::availableTimeSteps( const QString& wellName )
{
if ( !m_summaryCaseCollection ) return {};

std::set<QDateTime> allTimeSteps;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<QDateTime> timeSteps = summaryCase->rftReader()->availableTimeSteps( wellName );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
std::set<QDateTime> timeSteps = reader->availableTimeSteps( wellName );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
return allTimeSteps;
}
Expand All @@ -122,16 +108,11 @@ std::set<QDateTime> RifReaderEnsembleStatisticsRft::availableTimeSteps( const QS
std::set<QDateTime> RifReaderEnsembleStatisticsRft::availableTimeSteps( const QString& wellName,
const RifEclipseRftAddress::RftWellLogChannelType& wellLogChannelName )
{
if ( !m_summaryCaseCollection ) return {};

std::set<QDateTime> allTimeSteps;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<QDateTime> timeSteps = summaryCase->rftReader()->availableTimeSteps( wellName, wellLogChannelName );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
std::set<QDateTime> timeSteps = reader->availableTimeSteps( wellName, wellLogChannelName );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
return allTimeSteps;
}
Expand All @@ -143,16 +124,11 @@ std::set<QDateTime>
RifReaderEnsembleStatisticsRft::availableTimeSteps( const QString& wellName,
const std::set<RifEclipseRftAddress::RftWellLogChannelType>& relevantChannels )
{
if ( !m_summaryCaseCollection ) return {};

std::set<QDateTime> allTimeSteps;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<QDateTime> timeSteps = summaryCase->rftReader()->availableTimeSteps( wellName, relevantChannels );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
std::set<QDateTime> timeSteps = reader->availableTimeSteps( wellName, relevantChannels );
allTimeSteps.insert( timeSteps.begin(), timeSteps.end() );
}
return allTimeSteps;
}
Expand All @@ -162,17 +138,11 @@ std::set<QDateTime>
//--------------------------------------------------------------------------------------------------
std::set<RifEclipseRftAddress::RftWellLogChannelType> RifReaderEnsembleStatisticsRft::availableWellLogChannels( const QString& wellName )
{
if ( !m_summaryCaseCollection ) return {};

std::set<RifEclipseRftAddress::RftWellLogChannelType> allWellLogChannels;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<RifEclipseRftAddress::RftWellLogChannelType> wellLogChannels =
summaryCase->rftReader()->availableWellLogChannels( wellName );
allWellLogChannels.insert( wellLogChannels.begin(), wellLogChannels.end() );
}
std::set<RifEclipseRftAddress::RftWellLogChannelType> wellLogChannels = reader->availableWellLogChannels( wellName );
allWellLogChannels.insert( wellLogChannels.begin(), wellLogChannels.end() );
}
return allWellLogChannels;
}
Expand All @@ -182,16 +152,11 @@ std::set<RifEclipseRftAddress::RftWellLogChannelType> RifReaderEnsembleStatistic
//--------------------------------------------------------------------------------------------------
std::set<QString> RifReaderEnsembleStatisticsRft::wellNames()
{
if ( !m_summaryCaseCollection ) return {};

std::set<QString> allWellNames;
for ( auto summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
if ( summaryCase->rftReader() )
{
std::set<QString> wellNames = summaryCase->rftReader()->wellNames();
allWellNames.insert( wellNames.begin(), wellNames.end() );
}
std::set<QString> wellNames = reader->wellNames();
allWellNames.insert( wellNames.begin(), wellNames.end() );
}
return allWellNames;
}
Expand All @@ -201,7 +166,7 @@ std::set<QString> RifReaderEnsembleStatisticsRft::wellNames()
//--------------------------------------------------------------------------------------------------
void RifReaderEnsembleStatisticsRft::calculateStatistics( const QString& wellName, const QDateTime& timeStep )
{
if ( !m_summaryCaseCollection ) return;
if ( m_rftReaders.empty() ) return;

using ChannelType = RifEclipseRftAddress::RftWellLogChannelType;
RifEclipseRftAddress pressAddress = RifEclipseRftAddress::createAddress( wellName, timeStep, ChannelType::PRESSURE );
Expand All @@ -218,11 +183,8 @@ void RifReaderEnsembleStatisticsRft::calculateStatistics( const QString& wellNam
RiaCurveMerger<double> curveMerger( RiaCurveDefines::InterpolationMethod::LINEAR );
RiaWeightedMeanCalculator<size_t> dataSetSizeCalc;

for ( RimSummaryCase* summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
auto reader = summaryCase->rftReader();
if ( !reader ) continue;

std::vector<double> pressures;
reader->values( pressAddress, &pressures );

Expand All @@ -246,11 +208,8 @@ void RifReaderEnsembleStatisticsRft::calculateStatistics( const QString& wellNam
RiaWeightedMeanCalculator<size_t> dataSetSizeCalc;
RifEclipseRftAddress tvdAddress = RifEclipseRftAddress::createAddress( wellName, timeStep, ChannelType::TVD );

for ( RimSummaryCase* summaryCase : m_summaryCaseCollection->allSummaryCases() )
for ( auto reader : m_rftReaders )
{
auto reader = summaryCase->rftReader();
if ( !reader ) continue;

std::vector<double> pressures;
reader->values( pressAddress, &pressures );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@
#include "RiaCurveMerger.h"
#include "RiaWeightedMeanCalculator.h"

class RimSummaryEnsemble;
#include <vector>

class RifReaderRftInterface;
class RimEclipseCase;
class RigWellPath;

class RifReaderEnsembleStatisticsRft : public RifReaderRftInterface
{
public:
RifReaderEnsembleStatisticsRft( const RimSummaryEnsemble* summaryCaseCollection, RimEclipseCase* eclipseCase );
RifReaderEnsembleStatisticsRft( std::vector<RifReaderRftInterface*> rftReaders, RimEclipseCase* eclipseCase );

std::set<RifEclipseRftAddress> eclipseRftAddresses() override;
void values( const RifEclipseRftAddress& rftAddress, std::vector<double>* values ) override;
Expand All @@ -56,8 +58,8 @@ class RifReaderEnsembleStatisticsRft : public RifReaderRftInterface
void clearCache( const QString& wellName, const QDateTime& timeStep );

private:
const RimSummaryEnsemble* m_summaryCaseCollection;
RimEclipseCase* m_eclipseCase;
std::vector<RifReaderRftInterface*> m_rftReaders;
RimEclipseCase* m_eclipseCase;

std::map<RifEclipseRftAddress, std::vector<double>> m_cachedValues;
};
16 changes: 4 additions & 12 deletions ApplicationLibCode/FileInterface/RifReaderRegularGridModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,15 @@
#include "RigEclipseCaseData.h"
#include "RigEclipseResultAddress.h"

#include "RimEclipseCase.h"

#include <QDir>
#include <QFileInfo>

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifReaderRegularGridModel::writeCache( const QString& fileName, RimEclipseCase* eclipseCase )
void RifReaderRegularGridModel::writeCache( const QString& fileName, RigCaseCellResultsData* rigCellResults, RigEclipseCaseData* eclipseCaseData )
{
if ( !eclipseCase ) return;
if ( !rigCellResults || !eclipseCaseData ) return;

QFileInfo storageFileInfo( fileName );
if ( storageFileInfo.exists() )
Expand All @@ -58,9 +56,6 @@ void RifReaderRegularGridModel::writeCache( const QString& fileName, RimEclipseC
return;
}

auto rigCellResults = eclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL );
if ( !rigCellResults ) return;

auto resultNames = rigCellResults->resultNames( RiaDefines::ResultCatType::GENERATED );

std::vector<QString> keywords;
Expand All @@ -70,7 +65,7 @@ void RifReaderRegularGridModel::writeCache( const QString& fileName, RimEclipseC
}

const bool writeEchoKeywords = false;
if ( !RifEclipseInputFileTools::exportKeywords( fileName, eclipseCase->eclipseCaseData(), keywords, writeEchoKeywords ) )
if ( !RifEclipseInputFileTools::exportKeywords( fileName, eclipseCaseData, keywords, writeEchoKeywords ) )
{
RiaLogging::error( "Error detected when writing the cache file : " + fileName );
}
Expand All @@ -79,11 +74,8 @@ void RifReaderRegularGridModel::writeCache( const QString& fileName, RimEclipseC
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifReaderRegularGridModel::ensureDataIsReadFromCache( const QString& fileName, RimEclipseCase* eclipseCase )
void RifReaderRegularGridModel::ensureDataIsReadFromCache( const QString& fileName, RigCaseCellResultsData* rigCellResults )
{
if ( !eclipseCase ) return;

auto rigCellResults = eclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL );
if ( !rigCellResults ) return;

// Early return if we have already read the data from the cache
Expand Down
7 changes: 4 additions & 3 deletions ApplicationLibCode/FileInterface/RifReaderRegularGridModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@

#include <QString>

class RimEclipseCase;
class RigCaseCellResultsData;
class RigEclipseCaseData;

namespace RifReaderRegularGridModel
{
void writeCache( const QString& fileName, RimEclipseCase* eclipseCase );
void ensureDataIsReadFromCache( const QString& fileName, RimEclipseCase* eclipseCase );
void writeCache( const QString& fileName, RigCaseCellResultsData* rigCellResults, RigEclipseCaseData* eclipseCaseData );
void ensureDataIsReadFromCache( const QString& fileName, RigCaseCellResultsData* rigCellResults );

}; // namespace RifReaderRegularGridModel
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,18 @@

#include "RiaEclipseUnitTools.h"

#include "RimStimPlanModel.h"

#include <QFile>
#include <QTextStream>

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifStimPlanModelAsymmetricFrkExporter::writeToFile( RimStimPlanModel* stimPlanModel, const QString& filepath )
bool RifStimPlanModelAsymmetricFrkExporter::writeToFile( double formationDip,
bool hasBarrier,
double distanceToBarrier,
double barrierDip,
int wellPenetrationLayer,
const QString& filepath )
{
QFile data( filepath );
if ( !data.open( QFile::WriteOnly | QFile::Truncate ) )
Expand All @@ -39,13 +42,7 @@ bool RifStimPlanModelAsymmetricFrkExporter::writeToFile( RimStimPlanModel* stimP
QTextStream stream( &data );
appendHeaderToStream( stream );

double bedDipDeg = stimPlanModel->formationDip();
bool hasBarrier = stimPlanModel->hasBarrier();
double distanceToBarrier = stimPlanModel->distanceToBarrier();
double barrierDip = stimPlanModel->barrierDip();
int wellPenetrationLayer = stimPlanModel->wellPenetrationLayer();

appendBarrierDataToStream( stream, bedDipDeg, hasBarrier, RiaEclipseUnitTools::meterToFeet( distanceToBarrier ), barrierDip, wellPenetrationLayer );
appendBarrierDataToStream( stream, formationDip, hasBarrier, RiaEclipseUnitTools::meterToFeet( distanceToBarrier ), barrierDip, wellPenetrationLayer );

appendFooterToStream( stream );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@

#pragma once

class RimStimPlanModel;

class QString;
class QTextStream;

Expand All @@ -29,7 +27,12 @@ class QTextStream;
class RifStimPlanModelAsymmetricFrkExporter
{
public:
static bool writeToFile( RimStimPlanModel* stimPlanModel, const QString& filepath );
static bool writeToFile( double formationDip,
bool hasBarrier,
double distanceToBarrier,
double barrierDip,
int wellPenetrationLayer,
const QString& filepath );

private:
static void appendHeaderToStream( QTextStream& stream );
Expand Down
Loading
Loading