mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improve UI for RFT segment curves (#9061)
* Make sure all curve values are set correctly for plot orientation * Make sure depth zoom is propagated to the Qwt plot * Expand min/max value range to allow more space around curves * Use int values to represent RFT segment branch number
This commit is contained in:
@@ -21,24 +21,29 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseRftAddress::RifEclipseRftAddress( QString wellName, QDateTime timeStep, RftWellLogChannelType wellLogChannelName )
|
||||
RifEclipseRftAddress::RifEclipseRftAddress( const QString& wellName,
|
||||
const QDateTime& timeStep,
|
||||
RftWellLogChannelType wellLogChannelName,
|
||||
const QString& segmentResultName,
|
||||
int segmentBranchNumber )
|
||||
: m_wellName( wellName )
|
||||
, m_timeStep( timeStep )
|
||||
, m_wellLogChannel( wellLogChannelName )
|
||||
, m_segmentBranchNumber( -1 )
|
||||
, m_segmentResultName( segmentResultName )
|
||||
, m_segmentBranchNumber( segmentBranchNumber )
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseRftAddress RifEclipseRftAddress::createSegmentResult( const QString& wellName,
|
||||
const QDateTime& dateTime,
|
||||
const QString& resultName )
|
||||
RifEclipseRftAddress RifEclipseRftAddress::createAddress( const QString& wellName,
|
||||
const QDateTime& timeStep,
|
||||
RftWellLogChannelType wellLogChannel )
|
||||
{
|
||||
auto adr = RifEclipseRftAddress( wellName, dateTime, RifEclipseRftAddress::RftWellLogChannelType::SEGMENT_VALUES );
|
||||
|
||||
adr.setSegmentResultName( resultName );
|
||||
auto segmentResultName = "";
|
||||
auto segmentBranchNumber = -1;
|
||||
auto adr = RifEclipseRftAddress( wellName, timeStep, wellLogChannel, segmentResultName, segmentBranchNumber );
|
||||
|
||||
return adr;
|
||||
}
|
||||
@@ -46,9 +51,18 @@ RifEclipseRftAddress RifEclipseRftAddress::createSegmentResult( const QString&
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifEclipseRftAddress::setSegmentResultName( const QString& resultName )
|
||||
RifEclipseRftAddress RifEclipseRftAddress::createSegmentAddress( const QString& wellName,
|
||||
const QDateTime& dateTime,
|
||||
const QString& resultName,
|
||||
int segmentBranchNumber )
|
||||
{
|
||||
m_segmentResultName = resultName;
|
||||
auto adr = RifEclipseRftAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::SEGMENT_VALUES,
|
||||
resultName,
|
||||
segmentBranchNumber );
|
||||
|
||||
return adr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -59,14 +73,6 @@ QString RifEclipseRftAddress::segmentResultName() const
|
||||
return m_segmentResultName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifEclipseRftAddress::setSegmentBranchNumber( int branchNumber )
|
||||
{
|
||||
m_segmentBranchNumber = branchNumber;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -52,15 +52,16 @@ public:
|
||||
};
|
||||
|
||||
public:
|
||||
RifEclipseRftAddress( QString wellName, QDateTime timeStep, RftWellLogChannelType wellLogChannel );
|
||||
|
||||
static RifEclipseRftAddress
|
||||
createSegmentResult( const QString& wellName, const QDateTime& dateTime, const QString& resultName );
|
||||
createAddress( const QString& wellName, const QDateTime& timeStep, RftWellLogChannelType wellLogChannel );
|
||||
|
||||
static RifEclipseRftAddress createSegmentAddress( const QString& wellName,
|
||||
const QDateTime& dateTime,
|
||||
const QString& resultName,
|
||||
int segmentBranchNumber );
|
||||
|
||||
QString segmentResultName() const;
|
||||
|
||||
void setSegmentBranchNumber( int branchNumber );
|
||||
int segmentBranchNumber() const;
|
||||
int segmentBranchNumber() const;
|
||||
|
||||
const QString& wellName() const;
|
||||
QDateTime timeStep() const;
|
||||
@@ -70,7 +71,11 @@ public:
|
||||
static std::set<RftWellLogChannelType> pltPlotChannelTypes();
|
||||
|
||||
private:
|
||||
void setSegmentResultName( const QString& resultName );
|
||||
RifEclipseRftAddress( const QString& wellName,
|
||||
const QDateTime& timeStep,
|
||||
RftWellLogChannelType wellLogChannel,
|
||||
const QString& segmentResultName,
|
||||
int segmentBranchNumber );
|
||||
|
||||
private:
|
||||
QString m_wellName;
|
||||
|
||||
@@ -89,39 +89,47 @@ void RifReaderEclipseRft::open()
|
||||
QDateTime timeStep = RiaQDateTimeTools::createUtcDateTime();
|
||||
timeStep.setTime_t( timeStepTime_t );
|
||||
|
||||
RifEclipseRftAddress addressPressure( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
RifEclipseRftAddress addressPressure =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
m_eclipseRftAddresses.insert( addressPressure );
|
||||
m_rftAddressToLibeclNodeIdx[addressPressure] = i;
|
||||
|
||||
RifEclipseRftAddress addressDepth( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
RifEclipseRftAddress addressDepth =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
m_eclipseRftAddresses.insert( addressDepth );
|
||||
m_rftAddressToLibeclNodeIdx[addressDepth] = i;
|
||||
|
||||
if ( ecl_rft_node_is_RFT( node ) )
|
||||
{
|
||||
RifEclipseRftAddress addressSwat( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SWAT );
|
||||
RifEclipseRftAddress addressSwat =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SWAT );
|
||||
m_eclipseRftAddresses.insert( addressSwat );
|
||||
m_rftAddressToLibeclNodeIdx[addressSwat] = i;
|
||||
|
||||
RifEclipseRftAddress addressSoil( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SOIL );
|
||||
RifEclipseRftAddress addressSoil =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SOIL );
|
||||
m_eclipseRftAddresses.insert( addressSoil );
|
||||
m_rftAddressToLibeclNodeIdx[addressSoil] = i;
|
||||
|
||||
RifEclipseRftAddress addressSgas( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SGAS );
|
||||
RifEclipseRftAddress addressSgas =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::SGAS );
|
||||
m_eclipseRftAddresses.insert( addressSgas );
|
||||
m_rftAddressToLibeclNodeIdx[addressSgas] = i;
|
||||
}
|
||||
else if ( ecl_rft_node_is_PLT( node ) )
|
||||
{
|
||||
RifEclipseRftAddress addressWrat( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::WRAT );
|
||||
RifEclipseRftAddress addressWrat =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::WRAT );
|
||||
m_eclipseRftAddresses.insert( addressWrat );
|
||||
m_rftAddressToLibeclNodeIdx[addressWrat] = i;
|
||||
|
||||
RifEclipseRftAddress addressOrat( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::ORAT );
|
||||
RifEclipseRftAddress addressOrat =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::ORAT );
|
||||
m_eclipseRftAddresses.insert( addressOrat );
|
||||
m_rftAddressToLibeclNodeIdx[addressOrat] = i;
|
||||
|
||||
RifEclipseRftAddress addressGrat( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::GRAT );
|
||||
RifEclipseRftAddress addressGrat =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::GRAT );
|
||||
m_eclipseRftAddresses.insert( addressGrat );
|
||||
m_rftAddressToLibeclNodeIdx[addressGrat] = i;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ std::set<RifEclipseRftAddress> RifReaderEnsembleStatisticsRft::eclipseRftAddress
|
||||
for ( auto channel : statChannels )
|
||||
{
|
||||
statisticsAddresses.insert(
|
||||
RifEclipseRftAddress( regularAddress.wellName(), regularAddress.timeStep(), channel ) );
|
||||
RifEclipseRftAddress::createAddress( regularAddress.wellName(), regularAddress.timeStep(), channel ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,13 +192,19 @@ void RifReaderEnsembleStatisticsRft::calculateStatistics( const RifEclipseRftAdd
|
||||
{
|
||||
const QString& wellName = rftAddress.wellName();
|
||||
const QDateTime& timeStep = rftAddress.timeStep();
|
||||
RifEclipseRftAddress depthAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
RifEclipseRftAddress pressAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
RifEclipseRftAddress depthAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
RifEclipseRftAddress pressAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
|
||||
RifEclipseRftAddress p10Address( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P10 );
|
||||
RifEclipseRftAddress p50Address( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P50 );
|
||||
RifEclipseRftAddress p90Address( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P90 );
|
||||
RifEclipseRftAddress meanAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_MEAN );
|
||||
RifEclipseRftAddress p10Address =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P10 );
|
||||
RifEclipseRftAddress p50Address =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P50 );
|
||||
RifEclipseRftAddress p90Address =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_P90 );
|
||||
RifEclipseRftAddress meanAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName, timeStep, RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_MEAN );
|
||||
|
||||
RiaCurveMerger<double> curveMerger;
|
||||
|
||||
|
||||
@@ -195,14 +195,20 @@ std::set<RifEclipseRftAddress> RifReaderFmuRft::eclipseRftAddresses()
|
||||
{
|
||||
if ( observation.valid() )
|
||||
{
|
||||
RifEclipseRftAddress tvdAddress( wellName, dateTime, RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
RifEclipseRftAddress mdAddress( wellName, dateTime, RifEclipseRftAddress::RftWellLogChannelType::MD );
|
||||
RifEclipseRftAddress pressureAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
RifEclipseRftAddress pressureErrorAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_ERROR );
|
||||
RifEclipseRftAddress tvdAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::TVD );
|
||||
RifEclipseRftAddress mdAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName, dateTime, RifEclipseRftAddress::RftWellLogChannelType::MD );
|
||||
RifEclipseRftAddress pressureAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::PRESSURE );
|
||||
RifEclipseRftAddress pressureErrorAddress =
|
||||
RifEclipseRftAddress::createAddress( wellName,
|
||||
dateTime,
|
||||
RifEclipseRftAddress::RftWellLogChannelType::PRESSURE_ERROR );
|
||||
allAddresses.insert( tvdAddress );
|
||||
allAddresses.insert( mdAddress );
|
||||
allAddresses.insert( pressureAddress );
|
||||
|
||||
@@ -276,10 +276,10 @@ void RifReaderOpmRft::buildMetaData()
|
||||
|
||||
auto dt = RiaQDateTimeTools::createUtcDateTime( QDate( y, m, d ) );
|
||||
|
||||
auto channelTypes = identifyChannelType( resultDataName );
|
||||
if ( channelTypes != RifEclipseRftAddress::RftWellLogChannelType::NONE )
|
||||
auto channelType = identifyChannelType( resultDataName );
|
||||
if ( channelType != RifEclipseRftAddress::RftWellLogChannelType::NONE )
|
||||
{
|
||||
auto adr = RifEclipseRftAddress( QString::fromStdString( wellName ), dt, channelTypes );
|
||||
auto adr = RifEclipseRftAddress::createAddress( QString::fromStdString( wellName ), dt, channelType );
|
||||
m_addresses.insert( adr );
|
||||
}
|
||||
}
|
||||
@@ -310,16 +310,18 @@ void RifReaderOpmRft::buildMetaData()
|
||||
if ( static_cast<size_t>( resultValueCount ) != segmentCount ) continue;
|
||||
|
||||
auto resultName = std::get<0>( resultNameAndSize );
|
||||
auto adr = RifEclipseRftAddress::createSegmentResult( QString::fromStdString( wellName ),
|
||||
dt,
|
||||
QString::fromStdString( resultName ) );
|
||||
auto adr = RifEclipseRftAddress::createSegmentAddress( QString::fromStdString( wellName ),
|
||||
dt,
|
||||
QString::fromStdString( resultName ),
|
||||
-1 );
|
||||
|
||||
m_addresses.insert( adr );
|
||||
}
|
||||
|
||||
auto adr = RifEclipseRftAddress::createSegmentResult( QString::fromStdString( wellName ),
|
||||
dt,
|
||||
RiaDefines::segmentNumberResultName() );
|
||||
auto adr = RifEclipseRftAddress::createSegmentAddress( QString::fromStdString( wellName ),
|
||||
dt,
|
||||
RiaDefines::segmentNumberResultName(),
|
||||
-1 );
|
||||
|
||||
m_addresses.insert( adr );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user