#3638 2d Maps: Update info box when result and aggregation changes and change sampleSpacing to be relative

This commit is contained in:
Gaute Lindkvist 2018-11-06 13:39:23 +01:00
parent c67469b410
commit e07f4ea37f
4 changed files with 39 additions and 37 deletions

View File

@ -155,6 +155,11 @@ void Rim2dEclipseView::updateCurrentTimeStep()
m_grid2dProjectionPartMgr->appendProjectionToModel(grid2dProjectionModelBasicList.p(), transForm.p());
grid2dProjectionModelBasicList->updateBoundingBoxesRecursive();
frameScene->addModel(grid2dProjectionModelBasicList.p());
if (m_overlayInfoConfig->isActive())
{
m_overlayInfoConfig()->update3DInfo();
}
}
}

View File

@ -64,8 +64,8 @@ Rim2dGridProjection::Rim2dGridProjection()
{
CAF_PDM_InitObject("Rim2dGridProjection", ":/draw_style_meshlines_24x24.png", "", "");
CAF_PDM_InitField(&m_sampleSpacing, "SampleSpacing", -1.0, "Sample Spacing", "", "", "");
m_sampleSpacing.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitField(&m_relativeSampleSpacing, "SampleSpacing", 0.75, "Sample Spacing Factor", "", "", "");
m_relativeSampleSpacing.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&m_resultAggregation, "ResultAggregation", "Result Aggregation", "", "", "");
@ -91,7 +91,7 @@ Rim2dGridProjection::~Rim2dGridProjection()
cvf::BoundingBox Rim2dGridProjection::expandedBoundingBox() const
{
cvf::BoundingBox boundingBox = eclipseCase()->activeCellsBoundingBox();
boundingBox.expand(m_sampleSpacing * 0.5);
boundingBox.expand(sampleSpacing() * 0.5);
return boundingBox;
}
@ -100,8 +100,6 @@ cvf::BoundingBox Rim2dGridProjection::expandedBoundingBox() const
//--------------------------------------------------------------------------------------------------
void Rim2dGridProjection::generateGridMapping()
{
updateDefaultSampleSpacingFromGrid();
calculateCellRangeVisibility();
calculatePropertyFilterVisibility();
@ -347,7 +345,7 @@ double Rim2dGridProjection::sumAllValues() const
//--------------------------------------------------------------------------------------------------
double Rim2dGridProjection::sampleSpacing() const
{
return m_sampleSpacing;
return m_relativeSampleSpacing * mainGrid()->characteristicIJCellSize();
}
//--------------------------------------------------------------------------------------------------
@ -358,17 +356,6 @@ bool Rim2dGridProjection::showContourLines() const
return m_showContourLines();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim2dGridProjection::updateDefaultSampleSpacingFromGrid()
{
if (m_sampleSpacing < 0.0)
{
m_sampleSpacing = mainGrid()->characteristicIJCellSize() * 0.5;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -590,8 +577,8 @@ cvf::Vec2ui Rim2dGridProjection::surfaceGridSize() const
cvf::BoundingBox boundingBox = expandedBoundingBox();
cvf::Vec3d gridExtent = boundingBox.extent();
uint projectionSizeX = static_cast<uint>(std::ceil(gridExtent.x() / m_sampleSpacing)) + 1u;
uint projectionSizeY = static_cast<uint>(std::ceil(gridExtent.y() / m_sampleSpacing)) + 1u;
uint projectionSizeX = static_cast<uint>(std::ceil(gridExtent.x() / sampleSpacing())) + 1u;
uint projectionSizeY = static_cast<uint>(std::ceil(gridExtent.y() / sampleSpacing())) + 1u;
return cvf::Vec2ui(projectionSizeX, projectionSizeY);
}
@ -750,7 +737,7 @@ std::vector<std::pair<size_t, float>> Rim2dGridProjection::visibleCellsAndWeight
cvf::BoundingBox gridBoundingBox = expandedBoundingBox();
cvf::Vec3d top2dElementCentroid(globalPos2d, gridBoundingBox.max().z());
cvf::Vec3d bottom2dElementCentroid(globalPos2d, gridBoundingBox.min().z());
cvf::Vec3d planarDiagonalVector(0.5 * m_sampleSpacing, 0.5 * m_sampleSpacing, 0.0);
cvf::Vec3d planarDiagonalVector(0.5 * sampleSpacing(), 0.5 * sampleSpacing(), 0.0);
cvf::Vec3d topNECorner = top2dElementCentroid + planarDiagonalVector;
cvf::Vec3d bottomSWCorner = bottom2dElementCentroid - planarDiagonalVector;
@ -1073,14 +1060,13 @@ void Rim2dGridProjection::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
//--------------------------------------------------------------------------------------------------
void Rim2dGridProjection::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
{
if (&m_sampleSpacing == field)
if (&m_relativeSampleSpacing == field)
{
caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>(attribute);
if (myAttr)
{
double characteristicSize = mainGrid()->characteristicIJCellSize();
myAttr->m_minimum = 0.3333 * characteristicSize;
myAttr->m_maximum = 2.0 * characteristicSize;
myAttr->m_minimum = 0.5;
myAttr->m_maximum = 2.0;
}
}
}

View File

@ -73,7 +73,6 @@ public:
double sampleSpacing() const;
bool showContourLines() const;
void updateDefaultSampleSpacingFromGrid();
const std::vector<double>& aggregatedResults() const;
bool isSummationResult() const;
bool isColumnResult() const;
@ -121,7 +120,7 @@ protected:
void initAfterRead() override;
protected:
caf::PdmField<double> m_sampleSpacing;
caf::PdmField<double> m_relativeSampleSpacing;
caf::PdmField<ResultAggregation> m_resultAggregation;
caf::PdmField<bool> m_showContourLines;

View File

@ -582,7 +582,7 @@ QString Rim3dOverlayInfoConfig::resultInfoText(const HistogramData& histData, Ri
{
QString propName = eclipseView->cellResult()->resultVariableUiShortName();
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
infoText += QString("<br><b>Statistics:</b> ");
infoText += QString("<br><b>Statistics:</b> Current Time Step and Visible Cells");
infoText += QString("<table border=0 cellspacing=5 >"
"<tr> <td>Min</td> <td>Mean</td> <td>Max</td> <td>Sum</td> </tr>"
"<tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> </tr>"
@ -814,26 +814,38 @@ void Rim3dOverlayInfoConfig::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
{
caf::PdmUiGroup* visGroup = uiOrdering.addNewGroup("Visibility");
RimEclipseView * eclipseView = dynamic_cast<RimEclipseView*>(m_viewDef.p());
Rim2dEclipseView* contourMap = dynamic_cast<Rim2dEclipseView*>(eclipseView);
RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p());
visGroup->add(&m_showAnimProgress);
visGroup->add(&m_showCaseInfo);
visGroup->add(&m_showResultInfo);
RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p());
if (!geoMechView)
if (!geoMechView && !contourMap)
{
visGroup->add(&m_showVolumeWeightedMean);
}
visGroup->add(&m_showHistogram);
caf::PdmUiGroup* statGroup = uiOrdering.addNewGroup("Statistics Options");
RimEclipseView * eclipseView = dynamic_cast<RimEclipseView*>(m_viewDef.p());
if (!eclipseView || !eclipseView->cellResult()->isFlowDiagOrInjectionFlooding())
if (!contourMap)
{
statGroup->add(&m_statisticsTimeRange);
visGroup->add(&m_showHistogram);
}
statGroup->add(&m_statisticsCellRange);
if (contourMap)
{
m_statisticsTimeRange = Rim3dOverlayInfoConfig::CURRENT_TIMESTEP;
m_statisticsCellRange = Rim3dOverlayInfoConfig::VISIBLE_CELLS;
}
else
{
caf::PdmUiGroup* statGroup = uiOrdering.addNewGroup("Statistics Options");
if (!eclipseView || !eclipseView->cellResult()->isFlowDiagOrInjectionFlooding())
{
statGroup->add(&m_statisticsTimeRange);
}
statGroup->add(&m_statisticsCellRange);
}
uiOrdering.skipRemainingFields(true);
}