Adjustments for release

* Show segment plots in Well Log Plot collection
* Improve menu text for operations related to segment plots
* Show reservoir rates for annulus and device
* Make sure curve objects are visible in the Project Tree
* When importing the first summary case, expand case in project tree
* Bump version
This commit is contained in:
Magne Sjaastad 2023-03-13 08:10:33 +01:00
parent f89803a224
commit b6281c364d
11 changed files with 67 additions and 58 deletions

View File

@ -463,6 +463,14 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPl
summaryMultiPlot->updateAllRequiredEditors(); summaryMultiPlot->updateAllRequiredEditors();
RiuPlotMainWindowTools::selectAsCurrentItem( plot ); RiuPlotMainWindowTools::selectAsCurrentItem( plot );
if ( !plot->curveSets().empty() )
{
RiuPlotMainWindowTools::setExpanded( plot->curveSets().front() );
}
else if ( !plot->summaryCurves().empty() )
{
RiuPlotMainWindowTools::setExpanded( plot->summaryCurves().front() );
}
return summaryMultiPlot; return summaryMultiPlot;
} }
@ -526,7 +534,16 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( con
if ( !plots.empty() ) if ( !plots.empty() )
{ {
RiuPlotMainWindowTools::selectAsCurrentItem( plots[0] ); auto* plot = plots.front();
RiuPlotMainWindowTools::selectAsCurrentItem( plot );
if ( !plot->curveSets().empty() )
{
RiuPlotMainWindowTools::setExpanded( plot->curveSets().front() );
}
else if ( !plot->summaryCurves().empty() )
{
RiuPlotMainWindowTools::setExpanded( plot->summaryCurves().front() );
}
} }
else else
{ {
@ -541,25 +558,9 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( con
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSingleSummaryMultiPlot( RimSummaryPlot* plot ) RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSingleSummaryMultiPlot( RimSummaryPlot* plot )
{ {
auto* plotCollection = RimMainPlotCollection::current()->summaryMultiPlotCollection(); std::vector<RimSummaryPlot*> plots{ plot };
auto* summaryMultiPlot = new RimSummaryMultiPlot(); return createAndAppendSummaryMultiPlot( plots );
summaryMultiPlot->setColumnCount( RiaDefines::ColumnCount::COLUMNS_1 );
summaryMultiPlot->setRowCount( RiaDefines::RowCount::ROWS_1 );
summaryMultiPlot->setAsPlotMdiWindow();
plotCollection->addSummaryMultiPlot( summaryMultiPlot );
appendPlotsToSummaryMultiPlot( summaryMultiPlot, { plot } );
summaryMultiPlot->setDefaultRangeAggregationSteppingDimension();
plotCollection->updateAllRequiredEditors();
summaryMultiPlot->loadDataAndUpdate();
summaryMultiPlot->updateAllRequiredEditors();
RiuPlotMainWindowTools::selectAsCurrentItem( plot );
return summaryMultiPlot;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -217,9 +217,17 @@ void RicImportSummaryCasesFeature::addSummaryCases( const std::vector<RimSummary
RiaApplication* app = RiaApplication::instance(); RiaApplication* app = RiaApplication::instance();
RimProject* proj = app->project(); RimProject* proj = app->project();
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr; RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
if ( !sumCaseColl ) return;
bool expandFirstCase = sumCaseColl->allSummaryCases().empty();
sumCaseColl->addCases( cases ); sumCaseColl->addCases( cases );
sumCaseColl->updateAllRequiredEditors(); sumCaseColl->updateAllRequiredEditors();
if ( expandFirstCase && !cases.empty() )
{
RiuPlotMainWindowTools::setExpanded( cases.front() );
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -75,22 +75,20 @@ void RicNewMultiPhaseRftSegmentPlotFeature::onActionTriggered( bool isChecked )
auto wellNames = rftReader->wellNames(); auto wellNames = rftReader->wellNames();
if ( !wellNames.empty() ) wellName = *wellNames.begin(); if ( !wellNames.empty() ) wellName = *wellNames.begin();
appendTrackAndCurveForBranchType( plot, // Reservoir rates can be available on both annulus and device
"Reservoir Rates", for ( auto branchType : { RiaDefines::RftBranchType::RFT_ANNULUS, RiaDefines::RftBranchType::RFT_DEVICE } )
{ "CONGRAT", "CONORAT", "CONWRAT" },
wellName,
RiaDefines::RftBranchType::RFT_ANNULUS,
summaryCase );
{ {
for ( auto branchType : QString trackName = "Reservoir Rates - " + caf::AppEnum<RiaDefines::RftBranchType>::uiText( branchType );
{ RiaDefines::RftBranchType::RFT_ANNULUS, RiaDefines::RftBranchType::RFT_DEVICE, RiaDefines::RftBranchType::RFT_TUBING } ) appendTrackAndCurveForBranchType( plot, trackName, { "CONGRAT", "CONORAT", "CONWRAT" }, wellName, branchType, summaryCase );
{ }
QString trackName = caf::AppEnum<RiaDefines::RftBranchType>::uiText( branchType );
trackName += " Rates";
appendTrackAndCurveForBranchType( plot, trackName, { "SEGGRAT", "SEGORAT", "SEGWRAT" }, wellName, branchType, summaryCase ); for ( auto branchType :
} { RiaDefines::RftBranchType::RFT_ANNULUS, RiaDefines::RftBranchType::RFT_DEVICE, RiaDefines::RftBranchType::RFT_TUBING } )
{
QString trackName = caf::AppEnum<RiaDefines::RftBranchType>::uiText( branchType );
trackName += " Rates";
appendTrackAndCurveForBranchType( plot, trackName, { "SEGGRAT", "SEGORAT", "SEGWRAT" }, wellName, branchType, summaryCase );
} }
RicNewRftSegmentWellLogPlotFeature::appendPressureTrack( plot, wellName, summaryCase ); RicNewRftSegmentWellLogPlotFeature::appendPressureTrack( plot, wellName, summaryCase );
@ -145,6 +143,6 @@ void RicNewMultiPhaseRftSegmentPlotFeature::appendTrackAndCurveForBranchType( Ri
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicNewMultiPhaseRftSegmentPlotFeature::setupActionLook( QAction* actionToSetup ) void RicNewMultiPhaseRftSegmentPlotFeature::setupActionLook( QAction* actionToSetup )
{ {
actionToSetup->setText( "Create RFT Multi Phase Segment Plot" ); actionToSetup->setText( "Create Multi Phase Segment Plot" );
actionToSetup->setIcon( QIcon( ":/WellLogCurve16x16.png" ) ); actionToSetup->setIcon( QIcon( ":/WellLogCurve16x16.png" ) );
} }

View File

@ -75,12 +75,16 @@ void RicNewRftSegmentWellLogPlotFeature::onActionTriggered( bool isChecked )
auto wellNames = rftReader->wellNames(); auto wellNames = rftReader->wellNames();
if ( !wellNames.empty() ) wellName = *wellNames.begin(); if ( !wellNames.empty() ) wellName = *wellNames.begin();
// Reservoir rates can be available on both annulus and device
for ( auto branchType : { RiaDefines::RftBranchType::RFT_ANNULUS, RiaDefines::RftBranchType::RFT_DEVICE } )
{ {
QString trackName = "Reservoir Rates - " + caf::AppEnum<RiaDefines::RftBranchType>::uiText( branchType );
RimWellLogTrack* plotTrack = RicNewWellLogPlotFeatureImpl::createWellLogTrackWithAutoUpdate(); RimWellLogTrack* plotTrack = RicNewWellLogPlotFeatureImpl::createWellLogTrackWithAutoUpdate();
plot->addPlot( plotTrack ); plot->addPlot( plotTrack );
plotTrack->setDescription( "Reservoir Rates" ); plotTrack->setDescription( trackName );
auto curve = createAndAddCurve( plotTrack, "CONGRAT", wellName, RiaDefines::RftBranchType::RFT_ANNULUS, summaryCase ); auto curve = createAndAddCurve( plotTrack, "CONGRAT", wellName, branchType, summaryCase );
curve->setScaleFactor( 1e-3 ); curve->setScaleFactor( 1e-3 );
curve->setFillStyle( Qt::SolidPattern ); curve->setFillStyle( Qt::SolidPattern );
} }
@ -320,6 +324,6 @@ RimSummaryCase* RicNewRftSegmentWellLogPlotFeature::getSelectedOrFirstRftCase()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicNewRftSegmentWellLogPlotFeature::setupActionLook( QAction* actionToSetup ) void RicNewRftSegmentWellLogPlotFeature::setupActionLook( QAction* actionToSetup )
{ {
actionToSetup->setText( "Create RFT Segment Plot" ); actionToSetup->setText( "Create Segment Plot" );
actionToSetup->setIcon( QIcon( ":/WellLogCurve16x16.png" ) ); actionToSetup->setIcon( QIcon( ":/WellLogCurve16x16.png" ) );
} }

View File

@ -87,20 +87,7 @@ RimWellBoreStabilityPlot* RicNewWellLogPlotFeatureImpl::createWellBoreStabilityP
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimWellLogPlot* RicNewWellLogPlotFeatureImpl::createRftSegmentPlot() RimWellLogPlot* RicNewWellLogPlotFeatureImpl::createRftSegmentPlot()
{ {
auto rftPlotCollection = RimMainPlotCollection::current()->rftPlotCollection(); auto plot = createWellLogPlot();
CVF_ASSERT( rftPlotCollection );
// Make sure the summary plot window is created
RiaGuiApplication::instance()->getOrCreateMainPlotWindow();
RimWellLogPlot* plot = new RimWellLogPlot();
plot->setAsPlotMdiWindow();
rftPlotCollection->addPlot( plot );
plot->nameConfig()->setCustomName( QString( "RFT Segment Plot %1" ).arg( rftPlotCollection->plotCount() ) );
rftPlotCollection->updateConnectedEditors();
plot->setDepthOrientation( RiaDefines::Orientation::HORIZONTAL ); plot->setDepthOrientation( RiaDefines::Orientation::HORIZONTAL );
plot->setNamingMethod( RiaDefines::ObjectNamingMethod::TEMPLATE ); plot->setNamingMethod( RiaDefines::ObjectNamingMethod::TEMPLATE );

View File

@ -538,6 +538,8 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "Separator"; menuBuilder << "Separator";
menuBuilder << "RicNewWellLogPlotFeature"; menuBuilder << "RicNewWellLogPlotFeature";
menuBuilder << "RicNewWellBoreStabilityPlotFeature"; menuBuilder << "RicNewWellBoreStabilityPlotFeature";
menuBuilder << "RicNewMultiPhaseRftSegmentPlotFeature";
menuBuilder << "RicNewRftSegmentWellLogPlotFeature";
} }
else if ( dynamic_cast<RimRftPlotCollection*>( firstUiItem ) ) else if ( dynamic_cast<RimRftPlotCollection*>( firstUiItem ) )
{ {

View File

@ -66,7 +66,7 @@ RimFileSummaryCase::RimFileSummaryCase()
CAF_PDM_InitFieldNoDefault( &m_additionalSummaryFilePath, "AdditionalSummaryFilePath", "Additional File Path (set invisible when ready)" ); CAF_PDM_InitFieldNoDefault( &m_additionalSummaryFilePath, "AdditionalSummaryFilePath", "Additional File Path (set invisible when ready)" );
m_additionalSummaryFilePath.uiCapability()->setUiHidden( true ); m_additionalSummaryFilePath.uiCapability()->setUiHidden( true );
CAF_PDM_InitFieldNoDefault( &m_rftCase, "RftCase", "RFT Case" ); CAF_PDM_InitFieldNoDefault( &m_rftCase, "RftCase", "RFT Data" );
m_rftCase = new RimRftCase; m_rftCase = new RimRftCase;
} }

View File

@ -37,7 +37,7 @@ CAF_PDM_SOURCE_INIT( RimRftCase, "RimRftCase" );
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimRftCase::RimRftCase() RimRftCase::RimRftCase()
{ {
CAF_PDM_InitObject( "RFT Case ", ":/SummaryCases16x16.png", "", "" ); CAF_PDM_InitObject( "RFT Data", ":/SummaryCases16x16.png", "", "" );
CAF_PDM_InitFieldNoDefault( &m_rftFilePath, "RftFilePath", "Rft File" ); CAF_PDM_InitFieldNoDefault( &m_rftFilePath, "RftFilePath", "Rft File" );
m_rftFilePath.uiCapability()->setUiReadOnly( true ); m_rftFilePath.uiCapability()->setUiReadOnly( true );

View File

@ -165,13 +165,13 @@ void RimSummaryAddressCollection::updateFolderStructure( const std::set<RifEclip
if ( addresses.empty() ) return; if ( addresses.empty() ) return;
auto* fields = getOrCreateSubfolder( CollectionContentType::FIELD ); auto* fields = getOrCreateSubfolder( CollectionContentType::FIELD );
auto* wells = getOrCreateSubfolder( CollectionContentType::WELL_FOLDER );
auto* aquifer = getOrCreateSubfolder( CollectionContentType::AQUIFER ); auto* aquifer = getOrCreateSubfolder( CollectionContentType::AQUIFER );
auto* network = getOrCreateSubfolder( CollectionContentType::NETWORK ); auto* network = getOrCreateSubfolder( CollectionContentType::NETWORK );
auto* misc = getOrCreateSubfolder( CollectionContentType::MISC ); auto* misc = getOrCreateSubfolder( CollectionContentType::MISC );
auto* regions = getOrCreateSubfolder( CollectionContentType::REGION_FOLDER ); auto* regions = getOrCreateSubfolder( CollectionContentType::REGION_FOLDER );
auto* region2region = getOrCreateSubfolder( CollectionContentType::REGION_2_REGION ); auto* region2region = getOrCreateSubfolder( CollectionContentType::REGION_2_REGION );
auto* groups = getOrCreateSubfolder( CollectionContentType::GROUP_FOLDER ); auto* groups = getOrCreateSubfolder( CollectionContentType::GROUP_FOLDER );
auto* wells = getOrCreateSubfolder( CollectionContentType::WELL_FOLDER );
auto* completion = getOrCreateSubfolder( CollectionContentType::WELL_COMPLETION ); auto* completion = getOrCreateSubfolder( CollectionContentType::WELL_COMPLETION );
auto* segment = getOrCreateSubfolder( CollectionContentType::WELL_SEGMENT ); auto* segment = getOrCreateSubfolder( CollectionContentType::WELL_SEGMENT );
auto* blocks = getOrCreateSubfolder( CollectionContentType::BLOCK ); auto* blocks = getOrCreateSubfolder( CollectionContentType::BLOCK );

View File

@ -26,6 +26,7 @@
#include "RiaResultNames.h" #include "RiaResultNames.h"
#include "RiaRftDefines.h" #include "RiaRftDefines.h"
#include "RiaSimWellBranchTools.h" #include "RiaSimWellBranchTools.h"
#include "RiaStatisticsTools.h"
#include "RiaSummaryTools.h" #include "RiaSummaryTools.h"
#include "RiaTextStringTools.h" #include "RiaTextStringTools.h"
@ -664,7 +665,15 @@ void RimWellLogRftCurve::onLoadDataAndUpdate( bool updateParentPlot )
std::vector<double> errors = errorValues(); std::vector<double> errors = errorValues();
std::vector<QString> perPointLabels; std::vector<QString> perPointLabels;
if ( values.empty() || values.size() != tvDepthVector.size() ) auto anyValidValuesPresent = []( const std::vector<double>& values ) -> bool {
for ( const auto& v : values )
{
if ( RiaStatisticsTools::isValidNumber<double>( v ) ) return true;
}
return false;
};
if ( !anyValidValuesPresent( values ) || ( values.size() != tvDepthVector.size() ) )
{ {
clearCurveData(); clearCurveData();
this->detach( true ); this->detach( true );

View File

@ -1,11 +1,11 @@
set(RESINSIGHT_MAJOR_VERSION 2023) set(RESINSIGHT_MAJOR_VERSION 2023)
set(RESINSIGHT_MINOR_VERSION 01) set(RESINSIGHT_MINOR_VERSION 03)
set(RESINSIGHT_PATCH_VERSION 1) set(RESINSIGHT_PATCH_VERSION 0)
# Opional text with no restrictions # Opional text with no restrictions
#set(RESINSIGHT_VERSION_TEXT "-dev") #set(RESINSIGHT_VERSION_TEXT "-dev")
set(RESINSIGHT_VERSION_TEXT "-RC_02") set(RESINSIGHT_VERSION_TEXT "-RC_01")
# Optional text # Optional text
# Must be unique and increasing within one combination of major/minor/patch version # Must be unique and increasing within one combination of major/minor/patch version