#5189 Grid Case Group: Read Well Data Source when importing project

This commit is contained in:
Magne Sjaastad 2019-12-05 13:53:03 +01:00
parent cebe0485da
commit 948d193e3e
2 changed files with 34 additions and 31 deletions

View File

@ -178,6 +178,8 @@ bool RimEclipseStatisticsCase::openEclipseGridFile()
this->setReservoirData( eclipseCase.p() );
loadSimulationWellDataFromSourceCase();
if ( m_populateSelectionAfterLoadingGrid )
{
this->populateResultSelection();
@ -544,24 +546,21 @@ void RimEclipseStatisticsCase::fieldChangedByUi( const caf::PdmFieldHandle* chan
if ( &m_wellDataSourceCase == changedField )
{
// Find or load well data for given case
RimEclipseCase* sourceResultCase = caseGroup()->caseCollection()->findByDescription( m_wellDataSourceCase );
if ( sourceResultCase )
{
sourceResultCase->openEclipseGridFile();
loadSimulationWellDataFromSourceCase();
// Propagate well info to statistics case
if ( sourceResultCase->eclipseCaseData() )
{
const cvf::Collection<RigSimWellData>& sourceCaseSimWellData =
sourceResultCase->eclipseCaseData()->wellResults();
setWellResultsAndUpdateViews( sourceCaseSimWellData );
}
}
else
caf::ProgressInfo progInfo( reservoirViews().size() + 1, "Updating Well Data for Views" );
// Update views
for ( size_t i = 0; i < reservoirViews().size(); i++ )
{
cvf::Collection<RigSimWellData> sourceCaseWellResults;
setWellResultsAndUpdateViews( sourceCaseWellResults );
RimEclipseView* reservoirView = reservoirViews()[i];
CVF_ASSERT( reservoirView );
reservoirView->wellCollection()->wells.deleteAllChildObjects();
reservoirView->updateDisplayModelForWellResults();
reservoirView->wellCollection()->updateConnectedEditors();
progInfo.incrementProgress();
}
}
}
@ -569,23 +568,27 @@ void RimEclipseStatisticsCase::fieldChangedByUi( const caf::PdmFieldHandle* chan
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseStatisticsCase::setWellResultsAndUpdateViews( const cvf::Collection<RigSimWellData>& sourceCaseSimWellData )
void RimEclipseStatisticsCase::loadSimulationWellDataFromSourceCase()
{
this->eclipseCaseData()->setSimWellData( sourceCaseSimWellData );
caf::ProgressInfo progInfo( reservoirViews().size() + 1, "Updating Well Data for Views" );
// Update views
for ( size_t i = 0; i < reservoirViews().size(); i++ )
// Find or load well data for given case
RimEclipseCase* sourceResultCase = caseGroup()->caseCollection()->findByDescription( m_wellDataSourceCase );
if ( sourceResultCase )
{
RimEclipseView* reservoirView = reservoirViews()[i];
CVF_ASSERT( reservoirView );
sourceResultCase->openEclipseGridFile();
reservoirView->wellCollection()->wells.deleteAllChildObjects();
reservoirView->updateDisplayModelForWellResults();
reservoirView->wellCollection()->updateConnectedEditors();
// Propagate well info to statistics case
if ( sourceResultCase->eclipseCaseData() )
{
const cvf::Collection<RigSimWellData>& sourceCaseSimWellData =
sourceResultCase->eclipseCaseData()->wellResults();
progInfo.incrementProgress();
this->eclipseCaseData()->setSimWellData( sourceCaseSimWellData );
}
}
else
{
cvf::Collection<RigSimWellData> sourceCaseWellResults;
this->eclipseCaseData()->setSimWellData( sourceCaseWellResults );
}
}

View File

@ -87,8 +87,6 @@ private:
void updateSelectionSummaryLabel();
void updatePercentileUiVisibility();
void setWellResultsAndUpdateViews( const cvf::Collection<RigSimWellData>& sourceCaseSimWellData );
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly ) override;
@ -96,6 +94,8 @@ private:
const QVariant& oldValue,
const QVariant& newValue ) override;
void loadSimulationWellDataFromSourceCase();
void defineEditorAttribute( const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute ) override;