Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve reload and replace of cases #11104

Merged
merged 7 commits into from
Jan 25, 2024
Merged
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
67 changes: 66 additions & 1 deletion ApplicationLibCode/Application/Tools/RiaSummaryTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ void RiaSummaryTools::getSummaryCasesAndAddressesForCalculation( int

for ( RimUserDefinedCalculationVariable* v : calculation->allVariables() )
{
RimSummaryCalculationVariable* scv = dynamic_cast<RimSummaryCalculationVariable*>( v );
auto* scv = dynamic_cast<RimSummaryCalculationVariable*>( v );
if ( scv )
{
cases.push_back( scv->summaryCase() );
Expand Down Expand Up @@ -328,3 +328,68 @@ void RiaSummaryTools::copyCurveAxisData( RimSummaryCurve& curve, const RimSummar

curve.setLeftOrRightAxisY( otherCurve.axisY() );
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaSummaryTools::updateRequiredCalculatedCurves( RimSummaryCase* sourceSummaryCase )
{
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection();

for ( RimUserDefinedCalculation* summaryCalculation : calcColl->calculations() )
{
bool needsUpdate = RiaSummaryTools::isCalculationRequired( summaryCalculation, sourceSummaryCase );
if ( needsUpdate )
{
summaryCalculation->parseExpression();
summaryCalculation->calculate();
summaryCalculation->updateDependentObjects();
}
}
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaSummaryTools::isCalculationRequired( const RimUserDefinedCalculation* summaryCalculation, const RimSummaryCase* summaryCase )
{
std::vector<RimUserDefinedCalculationVariable*> variables = summaryCalculation->allVariables();
for ( RimUserDefinedCalculationVariable* variable : variables )
{
if ( auto* summaryVariable = dynamic_cast<RimSummaryCalculationVariable*>( variable ) )
{
return summaryVariable->summaryCase() == summaryCase;
}
}

return false;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaSummaryTools::reloadSummaryCase( RimSummaryCase* summaryCase )
{
if ( !summaryCase ) return;

summaryCase->updateAutoShortName();
summaryCase->createSummaryReaderInterface();
summaryCase->createRftReaderInterface();
summaryCase->refreshMetaData();

RiaSummaryTools::updateRequiredCalculatedCurves( summaryCase );

RimSummaryMultiPlotCollection* summaryPlotColl = RiaSummaryTools::summaryMultiPlotCollection();
for ( RimSummaryMultiPlot* multiPlot : summaryPlotColl->multiPlots() )
{
for ( RimSummaryPlot* summaryPlot : multiPlot->summaryPlots() )
{
summaryPlot->loadDataAndUpdate();

// Consider to make the zoom optional
summaryPlot->zoomAll();
}

multiPlot->updatePlotTitles();
}
}
10 changes: 8 additions & 2 deletions ApplicationLibCode/Application/Tools/RiaSummaryTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

#include <vector>

class RifEclipseSummaryAddress;
class RimSummaryPlot;
class RimSummaryMultiPlot;
class RimSummaryMultiPlotCollection;
Expand All @@ -35,8 +36,7 @@ class RimSummaryTable;
class RimSummaryTableCollection;
class RimObservedDataCollection;
class RimSummaryCurve;

class RifEclipseSummaryAddress;
class RimUserDefinedCalculation;

class QStringList;

Expand Down Expand Up @@ -85,4 +85,10 @@ class RiaSummaryTools

static void copyCurveDataSources( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );
static void copyCurveAxisData( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );

static void reloadSummaryCase( RimSummaryCase* summaryCase );

private:
static void updateRequiredCalculatedCurves( RimSummaryCase* sourceSummaryCase );
static bool isCalculationRequired( const RimUserDefinedCalculation* summaryCalculation, const RimSummaryCase* summaryCase );
};
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@
#include "RimFractureTemplate.h"
#include "RimObservedEclipseUserData.h"
#include "RimProject.h"
#include "RimReloadCaseTools.h"
#include "RimSimWellFracture.h"
#include "RimSimWellFractureCollection.h"
#include "RimSimWellInView.h"
#include "RimStimPlanFractureTemplate.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimWellPath.h"
#include "RimWellPathCompletions.h"
#include "RimWellPathFracture.h"
Expand Down Expand Up @@ -449,31 +449,27 @@ void RicExportFractureCompletionsImpl::getWellPressuresAndInitialProductionTimeS
currentDate = caseTimeSteps.back();
}

RifEclipseSummaryAddress wbhpPressureAddress = RifEclipseSummaryAddress::wellAddress( "WBHP", wellPathName.toStdString() );
RimSummaryCaseMainCollection* mainCollection = RiaSummaryTools::summaryCaseMainCollection();
if ( mainCollection )
{
RimSummaryCase* summaryCase = mainCollection->findSummaryCaseFromEclipseResultCase( resultCase );
RifEclipseSummaryAddress wbhpPressureAddress = RifEclipseSummaryAddress::wellAddress( "WBHP", wellPathName.toStdString() );

if ( summaryCase && summaryCase->summaryReader() )
auto summaryCase = RimReloadCaseTools::findSummaryCaseFromEclipseResultCase( resultCase );
if ( summaryCase && summaryCase->summaryReader() )
{
auto [isOk, values] = summaryCase->summaryReader()->values( wbhpPressureAddress );
if ( isOk )
{
auto [isOk, values] = summaryCase->summaryReader()->values( wbhpPressureAddress );
if ( isOk )
std::vector<time_t> summaryTimeSteps = summaryCase->summaryReader()->timeSteps( wbhpPressureAddress );
CVF_ASSERT( values.size() == summaryTimeSteps.size() );
for ( size_t i = 0; i < summaryTimeSteps.size(); ++i )
{
std::vector<time_t> summaryTimeSteps = summaryCase->summaryReader()->timeSteps( wbhpPressureAddress );
CVF_ASSERT( values.size() == summaryTimeSteps.size() );
for ( size_t i = 0; i < summaryTimeSteps.size(); ++i )
QDateTime summaryDate = RiaQDateTimeTools::fromTime_t( summaryTimeSteps[i] );
if ( initialProductionDate.isNull() && values[i] > 0.0 )
{
initialProductionDate = summaryDate;
*initialWellPressure = values[i];
}
if ( summaryDate <= currentDate )
{
QDateTime summaryDate = RiaQDateTimeTools::fromTime_t( summaryTimeSteps[i] );
if ( initialProductionDate.isNull() && values[i] > 0.0 )
{
initialProductionDate = summaryDate;
*initialWellPressure = values[i];
}
if ( summaryDate <= currentDate )
{
*currentWellPressure = values[i];
}
*currentWellPressure = values[i];
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void RicDeleteTemporaryLgrsFeature::deleteAllTemporaryLgrs( RimEclipseCase* ecli

if ( eclipseCase )
{
RimReloadCaseTools::reloadAllEclipseGridData( eclipseCase );
RimReloadCaseTools::reloadEclipseGrid( eclipseCase );
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,64 +18,26 @@

#include "RicImportGridModelFromSummaryCaseFeature.h"

#include "ApplicationCommands/RicShowMainWindowFeature.h"

#include "RiaEclipseFileNameTools.h"
#include "RiaImportEclipseCaseTools.h"
#include "RiaLogging.h"

#include "RimEclipseCase.h"
#include "RimFileSummaryCase.h"
#include "RimGridView.h"
#include "RimProject.h"

#include "Riu3DMainWindowTools.h"
#include "RimReloadCaseTools.h"

#include "cafSelectionManager.h"

#include <QAction>
#include <QFileInfo>

CAF_CMD_SOURCE_INIT( RicImportGridModelFromSummaryCaseFeature, "RicImportGridModelFromSummaryCaseFeature" );

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicImportGridModelFromSummaryCaseFeature::openOrImportGridModelFromSummaryCase( const RimFileSummaryCase* summaryCase )
{
if ( !summaryCase ) return false;

if ( findAndActivateFirstView( summaryCase ) ) return true;

QString summaryFileName = summaryCase->summaryHeaderFilename();
RiaEclipseFileNameTools fileHelper( summaryFileName );
auto candidateGridFileName = fileHelper.findRelatedGridFile();

if ( QFileInfo::exists( candidateGridFileName ) )
{
bool createView = true;
auto id = RiaImportEclipseCaseTools::openEclipseCaseFromFile( candidateGridFileName, createView );
if ( id > -1 )
{
RiaLogging::info( QString( "Imported %1" ).arg( candidateGridFileName ) );

return true;
}
}

RiaLogging::info( QString( "No grid case found based on summary file %1" ).arg( summaryFileName ) );

return false;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicImportGridModelFromSummaryCaseFeature::onActionTriggered( bool isChecked )
{
RimFileSummaryCase* summaryCase = caf::SelectionManager::instance()->selectedItemOfType<RimFileSummaryCase>();
auto* summaryCase = caf::SelectionManager::instance()->selectedItemOfType<RimFileSummaryCase>();

openOrImportGridModelFromSummaryCase( summaryCase );
RimReloadCaseTools::openOrImportGridModelFromSummaryCase( summaryCase );
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -85,13 +47,13 @@ void RicImportGridModelFromSummaryCaseFeature::setupActionLook( QAction* actionT
{
actionToSetup->setIcon( QIcon( ":/3DWindow.svg" ) );

RimFileSummaryCase* summaryCase = caf::SelectionManager::instance()->selectedItemOfType<RimFileSummaryCase>();
auto* summaryCase = caf::SelectionManager::instance()->selectedItemOfType<RimFileSummaryCase>();

QString summaryCaseName;
if ( summaryCase ) summaryCaseName = summaryCase->caseName();

QString txt;
auto gridCase = gridModelFromSummaryCase( summaryCase );
auto gridCase = RimReloadCaseTools::gridModelFromSummaryCase( summaryCase );
if ( gridCase )
{
txt = "Open Grid Model View";
Expand All @@ -108,44 +70,3 @@ void RicImportGridModelFromSummaryCaseFeature::setupActionLook( QAction* actionT

actionToSetup->setText( txt );
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicImportGridModelFromSummaryCaseFeature::findAndActivateFirstView( const RimFileSummaryCase* summaryCase )
{
auto gridCase = gridModelFromSummaryCase( summaryCase );
if ( gridCase )
{
if ( !gridCase->gridViews().empty() )
{
RicShowMainWindowFeature::showMainWindow();

Riu3DMainWindowTools::selectAsCurrentItem( gridCase->gridViews().front() );

return true;
}
}

return false;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RicImportGridModelFromSummaryCaseFeature::gridModelFromSummaryCase( const RimSummaryCase* summaryCase )
{
if ( summaryCase )
{
QString summaryFileName = summaryCase->summaryHeaderFilename();
RiaEclipseFileNameTools fileHelper( summaryFileName );
auto candidateGridFileName = fileHelper.findRelatedGridFile();

RimProject* project = RimProject::current();
auto gridCase = project->eclipseCaseFromGridFileName( candidateGridFileName );

return gridCase;
}

return nullptr;
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,7 @@ class RicImportGridModelFromSummaryCaseFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;

public:
static bool openOrImportGridModelFromSummaryCase( const RimFileSummaryCase* summaryCase );
static RimEclipseCase* gridModelFromSummaryCase( const RimSummaryCase* summaryCase );

protected:
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;

static bool findAndActivateFirstView( const RimFileSummaryCase* summaryCase );
};
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@

#include "RicImportGridModelFromSummaryCurveFeature.h"

#include "RicImportGridModelFromSummaryCaseFeature.h"

#include "RimFileSummaryCase.h"
#include "RimProject.h"
#include "RimReloadCaseTools.h"

#include "cafSelectionManager.h"

Expand All @@ -44,11 +43,9 @@ void RicImportGridModelFromSummaryCurveFeature::onActionTriggered( bool isChecke
{
if ( sumCase->caseId() == summaryCaseId )
{
auto fileSummaryCase = dynamic_cast<RimFileSummaryCase*>( sumCase );

if ( fileSummaryCase )
if ( auto fileSummaryCase = dynamic_cast<RimFileSummaryCase*>( sumCase ) )
{
RicImportGridModelFromSummaryCaseFeature::openOrImportGridModelFromSummaryCase( fileSummaryCase );
RimReloadCaseTools::openOrImportGridModelFromSummaryCase( fileSummaryCase );

return;
}
Expand Down
2 changes: 1 addition & 1 deletion ApplicationLibCode/Commands/RicReloadCaseFeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void RicReloadCaseFeature::onActionTriggered( bool isChecked )
timeStepFilter[0]->clearFilteredTimeSteps();
}

RimReloadCaseTools::reloadAllEclipseData( selectedCase );
RimReloadCaseTools::reloadEclipseGridAndSummary( selectedCase );
selectedCase->updateConnectedEditors();
}
}
Expand Down
Loading