(#395) Added support for control of geo mech results

This commit is contained in:
Magne Sjaastad 2015-08-27 14:57:04 +02:00
parent 3ef65ab8f9
commit b7d04375c8
5 changed files with 105 additions and 21 deletions

View File

@ -149,7 +149,7 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
this->firstAnchestorOrThisOfType(view); this->firstAnchestorOrThisOfType(view);
if (view) if (view)
{ {
view->managedViewCollection->updateResult(this); view->managedViewCollection->updateCellResult();
} }
} }

View File

@ -18,16 +18,23 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#include "RimGeoMechResultDefinition.h" #include "RimGeoMechResultDefinition.h"
#include "RimGeoMechView.h"
#include "RifGeoMechReaderInterface.h"
#include "RigFemPartResultsCollection.h"
#include "RigFemResultAddress.h"
#include "RigGeoMechCaseData.h"
#include "RimDefines.h" #include "RimDefines.h"
#include "RimGeoMechCase.h" #include "RimGeoMechCase.h"
#include "RifGeoMechReaderInterface.h" #include "RimGeoMechCellColors.h"
#include "cafPdmUiListEditor.h"
#include "RigGeoMechCaseData.h"
#include "RigFemPartResultsCollection.h"
#include "RiuMainWindow.h"
#include "RimGeoMechPropertyFilter.h" #include "RimGeoMechPropertyFilter.h"
#include "RigFemResultAddress.h" #include "RimGeoMechView.h"
#include "RimManagedViewCollection.h"
#include "RiuMainWindow.h"
#include "cafPdmUiListEditor.h"
namespace caf { namespace caf {
@ -197,6 +204,17 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
} }
reservoirView()->scheduleCreateDisplayModelAndRedraw(); reservoirView()->scheduleCreateDisplayModelAndRedraw();
if (dynamic_cast<RimGeoMechCellColors*>(this))
{
RimView* view = NULL;
this->firstAnchestorOrThisOfType(view);
if (view)
{
view->managedViewCollection->updateCellResult();
}
}
} }
} }

View File

@ -29,6 +29,9 @@
#include "cvfCamera.h" #include "cvfCamera.h"
#include "cvfMatrix4.h" #include "cvfMatrix4.h"
#include "RimGeoMechView.h"
#include "RimGeoMechResultDefinition.h"
#include "RimGeoMechCellColors.h"
@ -95,22 +98,55 @@ void RimManagedViewCollection::updateTimeStep(int timeStep)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimManagedViewCollection::updateResult(RimEclipseResultDefinition* resultDefinition) void RimManagedViewCollection::updateCellResult()
{ {
for (size_t i = 0; i < managedViews.size(); i++) RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
RimEclipseView* masterEclipseView = dynamic_cast<RimEclipseView*>(masterView);
if (masterEclipseView && masterEclipseView->cellResult())
{ {
RimManagedViewConfig* managedViewConfig = managedViews[i]; RimEclipseResultDefinition* eclipseCellResultDefinition = masterEclipseView->cellResult();
if (managedViewConfig->managedView())
for (size_t i = 0; i < managedViews.size(); i++)
{ {
if (managedViewConfig->syncCellResult()) RimManagedViewConfig* managedViewConfig = managedViews[i];
if (managedViewConfig->managedView())
{ {
RimView* rimView = managedViewConfig->managedView(); if (managedViewConfig->syncCellResult())
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
if (eclipeView)
{ {
eclipeView->cellResult()->setPorosityModel(resultDefinition->porosityModel()); RimView* rimView = managedViewConfig->managedView();
eclipeView->cellResult()->setResultType(resultDefinition->resultType()); RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
eclipeView->cellResult()->setResultVariable(resultDefinition->resultVariable()); if (eclipeView)
{
eclipeView->cellResult()->setPorosityModel(eclipseCellResultDefinition->porosityModel());
eclipeView->cellResult()->setResultType(eclipseCellResultDefinition->resultType());
eclipeView->cellResult()->setResultVariable(eclipseCellResultDefinition->resultVariable());
}
}
}
}
}
RimGeoMechView* masterGeoView = dynamic_cast<RimGeoMechView*>(masterView);
if (masterGeoView && masterGeoView->cellResult())
{
RimGeoMechResultDefinition* geoMechResultDefinition = masterGeoView->cellResult();
for (size_t i = 0; i < managedViews.size(); i++)
{
RimManagedViewConfig* managedViewConfig = managedViews[i];
if (managedViewConfig->managedView())
{
if (managedViewConfig->syncCellResult())
{
RimView* rimView = managedViewConfig->managedView();
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
if (geoView)
{
geoView->cellResult()->setResultAddress(geoMechResultDefinition->resultAddress());
geoView->scheduleCreateDisplayModelAndRedraw();
}
} }
} }
} }
@ -138,6 +174,15 @@ void RimManagedViewCollection::updateRangeFilters()
eclipeView->scheduleCreateDisplayModelAndRedraw(); eclipeView->scheduleCreateDisplayModelAndRedraw();
} }
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
if (geoView)
{
geoView->scheduleGeometryRegen(RANGE_FILTERED);
geoView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
geoView->scheduleCreateDisplayModelAndRedraw();
}
} }
} }
} }

View File

@ -25,7 +25,6 @@
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
class RimEclipseResultDefinition;
class RimManagedViewConfig; class RimManagedViewConfig;
class RiuViewer; class RiuViewer;
@ -45,7 +44,7 @@ public:
void updateViewers(RiuViewer* masterViewer); void updateViewers(RiuViewer* masterViewer);
void updateTimeStep(int timeStep); void updateTimeStep(int timeStep);
void updateResult(RimEclipseResultDefinition* resultDefinition); void updateCellResult();
void updateRangeFilters(); void updateRangeFilters();
}; };

View File

@ -23,6 +23,7 @@
#include "RimCase.h" #include "RimCase.h"
#include "RimCellRangeFilterCollection.h" #include "RimCellRangeFilterCollection.h"
#include "RimManagedViewCollection.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimView.h" #include "RimView.h"
@ -131,6 +132,19 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
masterView->viewer()->update(); masterView->viewer()->update();
} }
else if (changedField == &syncCellResult)
{
// When cell result is activated, update cell result in managed views
// Original result Will not be restored when cell result is disabled
if (syncCellResult())
{
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
masterView->managedViewCollection()->updateCellResult();
}
}
else if (changedField == &syncRangeFilters) else if (changedField == &syncRangeFilters)
{ {
configureOverrides(); configureOverrides();
@ -147,6 +161,14 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
if (managedView) if (managedView)
{ {
managedView->rangeFilterCollection()->updateUiUpdateDisplayModel(); managedView->rangeFilterCollection()->updateUiUpdateDisplayModel();
if (syncCellResult())
{
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
masterView->managedViewCollection()->updateCellResult();
}
} }
PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().rawPtr(); PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().rawPtr();