#2600 Well CF Visualization: Improve result info text content

This commit is contained in:
Magne Sjaastad
2018-03-19 21:09:54 +01:00
parent 241bf0364c
commit 0dc48db993
3 changed files with 72 additions and 22 deletions

View File

@@ -61,6 +61,44 @@ RiuResultTextBuilder::RiuResultTextBuilder(RimEclipseView* reservoirView, size_t
m_face = cvf::StructGridInterface::NO_FACE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuResultTextBuilder::RiuResultTextBuilder(RimEclipseView* reservoirView, size_t reservoirCellIndex, size_t timeStepIndex)
{
CVF_ASSERT(reservoirView);
m_reservoirView = reservoirView;
m_gridIndex = 0;
m_cellIndex = 0;
RimEclipseCase* eclipseCase = nullptr;
reservoirView->firstAncestorOrThisOfType(eclipseCase);
if (eclipseCase && eclipseCase->eclipseCaseData())
{
RigEclipseCaseData* caseData = eclipseCase->eclipseCaseData();
RigMainGrid* mainGrid = caseData->mainGrid();
const RigCell& cell = caseData->mainGrid()->globalCellArray()[reservoirCellIndex];
for (size_t i = 0; i < mainGrid->gridCount(); i++)
{
if (mainGrid->gridByIndex(i) == cell.hostGrid())
{
m_gridIndex = i;
m_cellIndex = cell.gridLocalCellIndex();
}
}
}
m_timeStepIndex = timeStepIndex;
m_nncIndex = cvf::UNDEFINED_SIZE_T;
m_intersectionPoint = cvf::Vec3d::UNDEFINED;
m_face = cvf::StructGridInterface::NO_FACE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -169,11 +207,14 @@ QString RiuResultTextBuilder::geometrySelectionText(QString itemSeparator)
j++;
k++;
cvf::StructGridInterface::FaceEnum faceEnum(m_face);
if (m_face != cvf::StructGridInterface::NO_FACE)
{
cvf::StructGridInterface::FaceEnum faceEnum(m_face);
QString faceText = faceEnum.text();
QString faceText = faceEnum.text();
text += QString("Face : %1").arg(faceText) + itemSeparator;
text += QString("Face : %1").arg(faceText) + itemSeparator;
}
QString gridName = QString::fromStdString(grid->gridName());
text += QString("Grid : %1 [%2]").arg(gridName).arg(m_gridIndex) + itemSeparator;
@@ -185,28 +226,31 @@ QString RiuResultTextBuilder::geometrySelectionText(QString itemSeparator)
}
}
cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView->displayCoordTransform();
cvf::Vec3d domainCoord = transForm->translateToDomainCoord(m_intersectionPoint);
QString formattedText;
if (m_2dIntersectionView)
if (m_intersectionPoint != cvf::Vec3d::UNDEFINED)
{
formattedText.sprintf("Horizontal length from well start: %.2f", m_intersectionPoint.x());
text += formattedText + itemSeparator;
cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView->displayCoordTransform();
cvf::Vec3d domainCoord = transForm->translateToDomainCoord(m_intersectionPoint);
cvf::Mat4d t = m_2dIntersectionView->flatIntersectionPartMgr()->unflattenTransformMatrix(m_intersectionPoint);
if (!t.isZero())
QString formattedText;
if (m_2dIntersectionView)
{
cvf::Vec3d intPt = m_intersectionPoint.getTransformedPoint(t);
formattedText.sprintf("Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]", intPt.x(), intPt.y(), -intPt.z());
formattedText.sprintf("Horizontal length from well start: %.2f", m_intersectionPoint.x());
text += formattedText + itemSeparator;
cvf::Mat4d t = m_2dIntersectionView->flatIntersectionPartMgr()->unflattenTransformMatrix(m_intersectionPoint);
if (!t.isZero())
{
cvf::Vec3d intPt = m_intersectionPoint.getTransformedPoint(t);
formattedText.sprintf("Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]", intPt.x(), intPt.y(), -intPt.z());
text += formattedText;
}
}
else
{
formattedText.sprintf("Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]", domainCoord.x(), domainCoord.y(), -domainCoord.z());
text += formattedText;
}
}
else
{
formattedText.sprintf("Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]", domainCoord.x(), domainCoord.y(), -domainCoord.z());
text += formattedText;
}
}
}

View File

@@ -42,6 +42,8 @@ class RiuResultTextBuilder
{
public:
RiuResultTextBuilder(RimEclipseView* reservoirView, size_t gridIndex, size_t cellIndex, size_t timeStepIndex);
RiuResultTextBuilder(RimEclipseView* reservoirView, size_t reservoirCellIndex, size_t timeStepIndex);
void setFace(cvf::StructGridInterface::FaceType face);
void setNncIndex(size_t nncIndex);
void setIntersectionPoint(cvf::Vec3d intersectionPoint);

View File

@@ -62,6 +62,7 @@
#include "Rim2dIntersectionView.h"
#include "RiuMainWindow.h"
#include "RiuResultTextBuilder.h"
#include "RiuSelectionManager.h"
#include "RiuViewer.h"
@@ -657,11 +658,14 @@ void RiuViewerCommands::handlePickAction(int winPosX, int winPosY, Qt::KeyboardM
if (!completionDataItems.empty())
{
QString resultInfoText;
resultInfoText += QString("<b>Well Connection Factor :</b> %1<br><br>").arg(connectionFactor);
// For now, only report the fist completion and not the combined completion if more than one
// completion contributes into a cell
{
RiuResultTextBuilder textBuilder(eclipseView, globalCellIndex, eclipseView->currentTimeStep());
resultInfoText += textBuilder.geometrySelectionText("<br>");
}
resultInfoText += QString("Well Connection Factor : %1").arg(connectionFactor);
resultInfoText += "<br><br>Details : <br>";
for (const auto& completionData : completionDataItems)