mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add support for radial grids
* Update radial grid operations in submodule * Optionally display cell center and cell corners when clicking on cell * Add support for import of radial grids * Modify node coordinates to match host cell
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
#include "RimExtrudedCurveIntersection.h"
|
||||
#include "RimFormationNames.h"
|
||||
#include "RimIntersectionResultDefinition.h"
|
||||
#include "RimMultipleEclipseResults.h"
|
||||
#include "RimRegularLegendConfig.h"
|
||||
#include "RimReservoirCellResultsStorage.h"
|
||||
#include "RimViewLinker.h"
|
||||
@@ -195,7 +196,7 @@ QString RiuResultTextBuilder::mainResultText()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
||||
QString RiuResultTextBuilder::geometrySelectionText( const QString& itemSeparator )
|
||||
{
|
||||
QString text;
|
||||
|
||||
@@ -234,6 +235,8 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
||||
|
||||
size_t globalCellIndex = grid->reservoirCellIndex( m_cellIndex );
|
||||
text += QString( "Global Cell Index : %4" ).arg( globalCellIndex ) + itemSeparator;
|
||||
|
||||
text += coordinatesText( grid, globalCellIndex, itemSeparator );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,10 +254,8 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
||||
if ( !t.isZero() )
|
||||
{
|
||||
cvf::Vec3d intPt = m_intersectionPointInDisplay.getTransformedPoint( t );
|
||||
formattedText = QString( "Intersection point : [E: %1, N: %2, Depth: %3]" )
|
||||
.arg( intPt.x(), 5, 'f', 2 )
|
||||
.arg( intPt.y(), 5, 'f', 2 )
|
||||
.arg( -intPt.z(), 5, 'f', 2 );
|
||||
formattedText =
|
||||
createTextFromDomainCoordinate( "Intersection point : [E: %1, N: %2, Depth: %3]", intPt );
|
||||
text += formattedText;
|
||||
}
|
||||
}
|
||||
@@ -265,10 +266,8 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
||||
cvf::ref<caf::DisplayCoordTransform> transForm = m_displayCoordView->displayCoordTransform();
|
||||
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
|
||||
|
||||
formattedText = QString( "Intersection point : [E: %1, N: %2, Depth: %3]" )
|
||||
.arg( domainCoord.x(), 5, 'f', 2 )
|
||||
.arg( domainCoord.y(), 5, 'f', 2 )
|
||||
.arg( -domainCoord.z(), 5, 'f', 2 );
|
||||
formattedText =
|
||||
createTextFromDomainCoordinate( "Intersection point : [E: %1, N: %2, Depth: %3]", domainCoord );
|
||||
text += formattedText;
|
||||
}
|
||||
}
|
||||
@@ -279,6 +278,74 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
||||
return text;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiuResultTextBuilder::coordinatesText( const RigGridBase* grid, size_t globalCellIndex, const QString& itemSeparator )
|
||||
{
|
||||
QString text;
|
||||
|
||||
bool showCenter = false;
|
||||
bool showCorner = false;
|
||||
|
||||
if ( m_eclipseView )
|
||||
{
|
||||
std::vector<RimMultipleEclipseResults*> additionalResultSettings;
|
||||
m_eclipseView->descendantsOfType( additionalResultSettings );
|
||||
if ( !additionalResultSettings.empty() )
|
||||
{
|
||||
showCenter = additionalResultSettings[0]->showCenterCoordinates();
|
||||
showCorner = additionalResultSettings[0]->showCornerCoordinates();
|
||||
}
|
||||
}
|
||||
|
||||
if ( showCenter )
|
||||
{
|
||||
auto mainGrid = grid->mainGrid();
|
||||
auto cell = mainGrid->cell( globalCellIndex );
|
||||
const auto center = cell.center();
|
||||
|
||||
text += createTextFromDomainCoordinate( "Cell Center : [%1, %2, %3]", center ) + itemSeparator;
|
||||
}
|
||||
|
||||
if ( showCorner )
|
||||
{
|
||||
auto mainGrid = grid->mainGrid();
|
||||
auto cell = mainGrid->cell( globalCellIndex );
|
||||
auto indices = cell.cornerIndices();
|
||||
|
||||
text += QString( "Cell Corners" ) + itemSeparator;
|
||||
|
||||
const std::vector<std::pair<int, std::string>> riNodeOrder{ { 0, "i- j- k+" },
|
||||
{ 1, "i+ j- k+" },
|
||||
{ 2, "i+ j+ k+" },
|
||||
{ 3, "i- j+ k+" },
|
||||
{ 4, "i- j- k-" },
|
||||
{ 5, "i+ j- k-" },
|
||||
{ 6, "i+ j+ k-" },
|
||||
{ 7, "i- j+ k-" } };
|
||||
|
||||
for ( int i = 0; i < 8; i++ )
|
||||
{
|
||||
const auto& [nodeIndex, nodeText] = riNodeOrder[i];
|
||||
auto v = mainGrid->nodes()[indices[nodeIndex]];
|
||||
|
||||
text += createTextFromDomainCoordinate( QString::fromStdString( nodeText ) + " : [%1, %2, %3]" + itemSeparator,
|
||||
v );
|
||||
}
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiuResultTextBuilder::createTextFromDomainCoordinate( const QString& formatString, const cvf::Vec3d& domainCoord )
|
||||
{
|
||||
return formatString.arg( domainCoord.x(), 5, 'f', 2 ).arg( domainCoord.y(), 5, 'f', 2 ).arg( -domainCoord.z(), 5, 'f', 2 );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmPointer.h"
|
||||
|
||||
#include "cvfStructGrid.h"
|
||||
|
||||
#include <map>
|
||||
@@ -30,6 +31,7 @@ class Rim2dIntersectionView;
|
||||
class RigEclipseCaseData;
|
||||
class RimEclipseResultDefinition;
|
||||
class RimGridView;
|
||||
class RigGridBase;
|
||||
|
||||
class QString;
|
||||
|
||||
@@ -62,7 +64,7 @@ public:
|
||||
|
||||
QString mainResultText();
|
||||
|
||||
QString geometrySelectionText( QString itemSeparator );
|
||||
QString geometrySelectionText( const QString& itemSeparator );
|
||||
|
||||
private:
|
||||
void appendDetails( QString& text, const QString& details );
|
||||
@@ -90,6 +92,10 @@ private:
|
||||
|
||||
std::pair<bool, QStringList> resultTextFromLinkedViews() const;
|
||||
|
||||
QString coordinatesText( const RigGridBase* grid, size_t globalCellIndex, const QString& itemSeparator );
|
||||
|
||||
static QString createTextFromDomainCoordinate( const QString& formatString, const cvf::Vec3d& domainCoord );
|
||||
|
||||
private:
|
||||
caf::PdmPointer<RimGridView> m_displayCoordView;
|
||||
caf::PdmPointer<RimEclipseView> m_eclipseView;
|
||||
|
||||
Reference in New Issue
Block a user