(#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);
if (view)
{
view->managedViewCollection->updateResult(this);
view->managedViewCollection->updateCellResult();
}
}

View File

@ -18,16 +18,23 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RimGeoMechResultDefinition.h"
#include "RimGeoMechView.h"
#include "RifGeoMechReaderInterface.h"
#include "RigFemPartResultsCollection.h"
#include "RigFemResultAddress.h"
#include "RigGeoMechCaseData.h"
#include "RimDefines.h"
#include "RimGeoMechCase.h"
#include "RifGeoMechReaderInterface.h"
#include "cafPdmUiListEditor.h"
#include "RigGeoMechCaseData.h"
#include "RigFemPartResultsCollection.h"
#include "RiuMainWindow.h"
#include "RimGeoMechCellColors.h"
#include "RimGeoMechPropertyFilter.h"
#include "RigFemResultAddress.h"
#include "RimGeoMechView.h"
#include "RimManagedViewCollection.h"
#include "RiuMainWindow.h"
#include "cafPdmUiListEditor.h"
namespace caf {
@ -197,6 +204,17 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
}
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 "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];
if (managedViewConfig->managedView())
RimEclipseResultDefinition* eclipseCellResultDefinition = masterEclipseView->cellResult();
for (size_t i = 0; i < managedViews.size(); i++)
{
if (managedViewConfig->syncCellResult())
RimManagedViewConfig* managedViewConfig = managedViews[i];
if (managedViewConfig->managedView())
{
RimView* rimView = managedViewConfig->managedView();
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
if (eclipeView)
if (managedViewConfig->syncCellResult())
{
eclipeView->cellResult()->setPorosityModel(resultDefinition->porosityModel());
eclipeView->cellResult()->setResultType(resultDefinition->resultType());
eclipeView->cellResult()->setResultVariable(resultDefinition->resultVariable());
RimView* rimView = managedViewConfig->managedView();
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
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();
}
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 "cafPdmObject.h"
class RimEclipseResultDefinition;
class RimManagedViewConfig;
class RiuViewer;
@ -45,7 +44,7 @@ public:
void updateViewers(RiuViewer* masterViewer);
void updateTimeStep(int timeStep);
void updateResult(RimEclipseResultDefinition* resultDefinition);
void updateCellResult();
void updateRangeFilters();
};

View File

@ -23,6 +23,7 @@
#include "RimCase.h"
#include "RimCellRangeFilterCollection.h"
#include "RimManagedViewCollection.h"
#include "RimProject.h"
#include "RimView.h"
@ -131,6 +132,19 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
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)
{
configureOverrides();
@ -147,6 +161,14 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
if (managedView)
{
managedView->rangeFilterCollection()->updateUiUpdateDisplayModel();
if (syncCellResult())
{
RimView* masterView = NULL;
firstAnchestorOrThisOfType(masterView);
masterView->managedViewCollection()->updateCellResult();
}
}
PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().rawPtr();