mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#5112 Sep Inter Res: Fixed result info text for gomech
This commit is contained in:
parent
2a3c43bcc3
commit
14d7fa3780
@ -41,18 +41,18 @@
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RiuFemResultTextBuilder::RiuFemResultTextBuilder( RimGeoMechView* reservoirView,
|
RiuFemResultTextBuilder::RiuFemResultTextBuilder( RimGridView* displayCoordView,
|
||||||
int gridIndex,
|
RimGeoMechResultDefinition* geomResDef,
|
||||||
int cellIndex,
|
int gridIndex,
|
||||||
int timeStepIndex )
|
int cellIndex,
|
||||||
|
int timeStepIndex )
|
||||||
: m_isIntersectionTriangleSet( false )
|
: m_isIntersectionTriangleSet( false )
|
||||||
{
|
{
|
||||||
CVF_ASSERT( reservoirView );
|
m_displayCoordView = displayCoordView;
|
||||||
|
m_geomResDef = geomResDef;
|
||||||
m_reservoirView = reservoirView;
|
m_gridIndex = gridIndex;
|
||||||
m_gridIndex = gridIndex;
|
m_cellIndex = cellIndex;
|
||||||
m_cellIndex = cellIndex;
|
m_timeStepIndex = timeStepIndex;
|
||||||
m_timeStepIndex = timeStepIndex;
|
|
||||||
|
|
||||||
m_intersectionPointInDisplay = cvf::Vec3d::UNDEFINED;
|
m_intersectionPointInDisplay = cvf::Vec3d::UNDEFINED;
|
||||||
m_face = cvf::StructGridInterface::NO_FACE;
|
m_face = cvf::StructGridInterface::NO_FACE;
|
||||||
@ -98,9 +98,7 @@ QString RiuFemResultTextBuilder::mainResultText()
|
|||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
|
|
||||||
RimGeoMechResultDefinition* cellResultDefinition = m_reservoirView->cellResultResultDefinition();
|
text = closestNodeResultText( m_geomResDef );
|
||||||
|
|
||||||
text = closestNodeResultText( cellResultDefinition );
|
|
||||||
|
|
||||||
if ( !text.isEmpty() ) text += "\n";
|
if ( !text.isEmpty() ) text += "\n";
|
||||||
|
|
||||||
@ -109,7 +107,7 @@ QString RiuFemResultTextBuilder::mainResultText()
|
|||||||
appendDetails( text, formationDetails() );
|
appendDetails( text, formationDetails() );
|
||||||
text += "\n";
|
text += "\n";
|
||||||
|
|
||||||
if ( cellResultDefinition->resultPositionType() != RIG_ELEMENT )
|
if ( m_geomResDef->resultPositionType() != RIG_ELEMENT )
|
||||||
{
|
{
|
||||||
appendDetails( text, gridResultDetails() );
|
appendDetails( text, gridResultDetails() );
|
||||||
}
|
}
|
||||||
@ -124,9 +122,9 @@ QString RiuFemResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
|||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
|
|
||||||
if ( m_reservoirView->geoMechCase() )
|
if ( m_geomResDef->geoMechCase() )
|
||||||
{
|
{
|
||||||
RigGeoMechCaseData* geomData = m_reservoirView->geoMechCase()->geoMechData();
|
RigGeoMechCaseData* geomData = m_geomResDef->geoMechCase()->geoMechData();
|
||||||
if ( geomData )
|
if ( geomData )
|
||||||
{
|
{
|
||||||
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
|
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
|
||||||
@ -167,14 +165,17 @@ QString RiuFemResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView->displayCoordTransform();
|
if ( m_displayCoordView )
|
||||||
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
|
{
|
||||||
|
cvf::ref<caf::DisplayCoordTransform> transForm = m_displayCoordView->displayCoordTransform();
|
||||||
|
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
|
||||||
|
|
||||||
formattedText.sprintf( "Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]",
|
formattedText.sprintf( "Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]",
|
||||||
domainCoord.x(),
|
domainCoord.x(),
|
||||||
domainCoord.y(),
|
domainCoord.y(),
|
||||||
-domainCoord.z() );
|
-domainCoord.z() );
|
||||||
text += formattedText;
|
text += formattedText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -190,16 +191,11 @@ QString RiuFemResultTextBuilder::gridResultDetails()
|
|||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
|
|
||||||
if ( m_reservoirView->geoMechCase() && m_reservoirView->geoMechCase()->geoMechData() )
|
if ( m_geomResDef->geoMechCase() && m_geomResDef->geoMechCase()->geoMechData() )
|
||||||
{
|
{
|
||||||
RigGeoMechCaseData* eclipseCaseData = m_reservoirView->geoMechCase()->geoMechData();
|
RigGeoMechCaseData* eclipseCaseData = m_geomResDef->geoMechCase()->geoMechData();
|
||||||
|
|
||||||
this->appendTextFromResultColors( eclipseCaseData,
|
this->appendTextFromResultColors( eclipseCaseData, m_gridIndex, m_cellIndex, m_timeStepIndex, m_geomResDef, &text );
|
||||||
m_gridIndex,
|
|
||||||
m_cellIndex,
|
|
||||||
m_timeStepIndex,
|
|
||||||
m_reservoirView->cellResultResultDefinition(),
|
|
||||||
&text );
|
|
||||||
|
|
||||||
if ( !text.isEmpty() )
|
if ( !text.isEmpty() )
|
||||||
{
|
{
|
||||||
@ -216,7 +212,7 @@ QString RiuFemResultTextBuilder::gridResultDetails()
|
|||||||
QString RiuFemResultTextBuilder::formationDetails()
|
QString RiuFemResultTextBuilder::formationDetails()
|
||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
RimCase* rimCase = m_reservoirView->ownerCase();
|
RimCase* rimCase = m_geomResDef->geoMechCase();
|
||||||
if ( rimCase )
|
if ( rimCase )
|
||||||
{
|
{
|
||||||
if ( rimCase->activeFormationNames() && rimCase->activeFormationNames()->formationNamesData() )
|
if ( rimCase->activeFormationNames() && rimCase->activeFormationNames()->formationNamesData() )
|
||||||
@ -225,9 +221,9 @@ QString RiuFemResultTextBuilder::formationDetails()
|
|||||||
|
|
||||||
size_t k = cvf::UNDEFINED_SIZE_T;
|
size_t k = cvf::UNDEFINED_SIZE_T;
|
||||||
{
|
{
|
||||||
if ( m_reservoirView->geoMechCase() )
|
if ( m_geomResDef->geoMechCase() )
|
||||||
{
|
{
|
||||||
RigGeoMechCaseData* geomData = m_reservoirView->geoMechCase()->geoMechData();
|
RigGeoMechCaseData* geomData = m_geomResDef->geoMechCase()->geoMechData();
|
||||||
if ( geomData )
|
if ( geomData )
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
@ -394,29 +390,31 @@ QString RiuFemResultTextBuilder::closestNodeResultText( RimGeoMechResultDefiniti
|
|||||||
|
|
||||||
if ( resultColors->hasResult() )
|
if ( resultColors->hasResult() )
|
||||||
{
|
{
|
||||||
if ( !( m_reservoirView->geoMechCase() && m_reservoirView->geoMechCase()->geoMechData() ) ) return text;
|
if ( !( m_geomResDef->geoMechCase() && m_geomResDef->geoMechCase()->geoMechData() ) ) return text;
|
||||||
|
|
||||||
RigGeoMechCaseData* geomData = m_reservoirView->geoMechCase()->geoMechData();
|
RigGeoMechCaseData* geomData = m_geomResDef->geoMechCase()->geoMechData();
|
||||||
|
|
||||||
const std::vector<float>& scalarResults = geomData->femPartResults()->resultValues( resultColors->resultAddress(),
|
const std::vector<float>& scalarResults = geomData->femPartResults()->resultValues( resultColors->resultAddress(),
|
||||||
m_gridIndex,
|
m_gridIndex,
|
||||||
m_timeStepIndex );
|
m_timeStepIndex );
|
||||||
|
|
||||||
if ( scalarResults.size() )
|
if ( scalarResults.size() && m_displayCoordView )
|
||||||
{
|
{
|
||||||
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
|
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
|
||||||
RigFemResultPosEnum activeResultPosition = resultColors->resultPositionType();
|
RigFemResultPosEnum activeResultPosition = resultColors->resultPositionType();
|
||||||
|
|
||||||
cvf::Vec3d intersectionPointInDomain = m_reservoirView->displayCoordTransform()->translateToDomainCoord(
|
cvf::Vec3d intersectionPointInDomain = m_displayCoordView->displayCoordTransform()->translateToDomainCoord(
|
||||||
m_intersectionPointInDisplay );
|
m_intersectionPointInDisplay );
|
||||||
|
|
||||||
RigFemClosestResultIndexCalculator closestIndexCalc( femPart,
|
RigFemClosestResultIndexCalculator closestIndexCalc( femPart,
|
||||||
activeResultPosition,
|
activeResultPosition,
|
||||||
m_cellIndex,
|
m_cellIndex,
|
||||||
m_face,
|
m_face,
|
||||||
intersectionPointInDomain );
|
intersectionPointInDomain );
|
||||||
int resultIndex = closestIndexCalc.resultIndexToClosestResult();
|
|
||||||
int closestNodeId = closestIndexCalc.closestNodeId();
|
int resultIndex = closestIndexCalc.resultIndexToClosestResult();
|
||||||
int closestElmNodResIdx = closestIndexCalc.closestElementNodeResIdx();
|
int closestNodeId = closestIndexCalc.closestNodeId();
|
||||||
|
int closestElmNodResIdx = closestIndexCalc.closestElementNodeResIdx();
|
||||||
|
|
||||||
float scalarValue = ( resultIndex >= 0 ) ? scalarResults[resultIndex]
|
float scalarValue = ( resultIndex >= 0 ) ? scalarResults[resultIndex]
|
||||||
: std::numeric_limits<float>::infinity();
|
: std::numeric_limits<float>::infinity();
|
||||||
|
@ -30,6 +30,7 @@ class RimEclipseCellColors;
|
|||||||
class RimGeoMechResultDefinition;
|
class RimGeoMechResultDefinition;
|
||||||
class RimGeoMechView;
|
class RimGeoMechView;
|
||||||
class Rim2dIntersectionView;
|
class Rim2dIntersectionView;
|
||||||
|
class RimGridView;
|
||||||
|
|
||||||
namespace cvf
|
namespace cvf
|
||||||
{
|
{
|
||||||
@ -43,7 +44,11 @@ class Part;
|
|||||||
class RiuFemResultTextBuilder
|
class RiuFemResultTextBuilder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RiuFemResultTextBuilder( RimGeoMechView* reservoirView, int gridIndex, int cellIndex, int timeStepIndex );
|
RiuFemResultTextBuilder( RimGridView* displayCoordView,
|
||||||
|
RimGeoMechResultDefinition* geomResDef,
|
||||||
|
int gridIndex,
|
||||||
|
int cellIndex,
|
||||||
|
int timeStepIndex );
|
||||||
void setFace( int face );
|
void setFace( int face );
|
||||||
void setIntersectionPointInDisplay( cvf::Vec3d intersectionPointInDisplay );
|
void setIntersectionPointInDisplay( cvf::Vec3d intersectionPointInDisplay );
|
||||||
void setIntersectionTriangle( const std::array<cvf::Vec3f, 3>& triangle );
|
void setIntersectionTriangle( const std::array<cvf::Vec3f, 3>& triangle );
|
||||||
@ -69,8 +74,9 @@ private:
|
|||||||
QString* resultInfoText );
|
QString* resultInfoText );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPointer<RimGeoMechView> m_reservoirView;
|
caf::PdmPointer<RimGridView> m_displayCoordView;
|
||||||
caf::PdmPointer<Rim2dIntersectionView> m_2dIntersectionView;
|
caf::PdmPointer<RimGeoMechResultDefinition> m_geomResDef;
|
||||||
|
caf::PdmPointer<Rim2dIntersectionView> m_2dIntersectionView;
|
||||||
|
|
||||||
int m_gridIndex;
|
int m_gridIndex;
|
||||||
int m_cellIndex;
|
int m_cellIndex;
|
||||||
|
@ -255,14 +255,17 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cvf::ref<caf::DisplayCoordTransform> transForm = m_displayCoordView->displayCoordTransform();
|
if ( m_displayCoordView )
|
||||||
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
|
{
|
||||||
|
cvf::ref<caf::DisplayCoordTransform> transForm = m_displayCoordView->displayCoordTransform();
|
||||||
|
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
|
||||||
|
|
||||||
formattedText.sprintf( "Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]",
|
formattedText.sprintf( "Intersection point : [E: %.2f, N: %.2f, Depth: %.2f]",
|
||||||
domainCoord.x(),
|
domainCoord.x(),
|
||||||
domainCoord.y(),
|
domainCoord.y(),
|
||||||
-domainCoord.z() );
|
-domainCoord.z() );
|
||||||
text += formattedText;
|
text += formattedText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -396,10 +399,12 @@ QString RiuResultTextBuilder::faultResultText()
|
|||||||
if ( m_eclResDef->eclipseCase() && m_eclResDef->eclipseCase()->eclipseCaseData() )
|
if ( m_eclResDef->eclipseCase() && m_eclResDef->eclipseCase()->eclipseCaseData() )
|
||||||
{
|
{
|
||||||
RigEclipseCaseData* eclipseCaseData = m_eclResDef->eclipseCase()->eclipseCaseData();
|
RigEclipseCaseData* eclipseCaseData = m_eclResDef->eclipseCase()->eclipseCaseData();
|
||||||
RigGridBase* grid = eclipseCaseData->grid( m_gridIndex );
|
|
||||||
RigMainGrid* mainGrid = grid->mainGrid();
|
RigGridBase* grid = eclipseCaseData->grid( m_gridIndex );
|
||||||
|
RigMainGrid* mainGrid = grid->mainGrid();
|
||||||
|
|
||||||
const RigFault* fault = mainGrid->findFaultFromCellIndexAndCellFace( m_cellIndex, m_face );
|
const RigFault* fault = mainGrid->findFaultFromCellIndexAndCellFace( m_cellIndex, m_face );
|
||||||
|
|
||||||
if ( fault )
|
if ( fault )
|
||||||
{
|
{
|
||||||
cvf::StructGridInterface::FaceEnum faceHelper( m_face );
|
cvf::StructGridInterface::FaceEnum faceHelper( m_face );
|
||||||
@ -434,7 +439,8 @@ QString RiuResultTextBuilder::nncResultText()
|
|||||||
|
|
||||||
if ( nncData && m_nncIndex < nncData->connections().size() )
|
if ( nncData && m_nncIndex < nncData->connections().size() )
|
||||||
{
|
{
|
||||||
const RigConnection& conn = nncData->connections()[m_nncIndex];
|
const RigConnection& conn = nncData->connections()[m_nncIndex];
|
||||||
|
|
||||||
cvf::StructGridInterface::FaceEnum face( conn.m_c1Face );
|
cvf::StructGridInterface::FaceEnum face( conn.m_c1Face );
|
||||||
|
|
||||||
if ( m_viewWithFaultsSettings && m_viewWithFaultsSettings->currentFaultResultColors() )
|
if ( m_viewWithFaultsSettings && m_viewWithFaultsSettings->currentFaultResultColors() )
|
||||||
@ -443,6 +449,7 @@ QString RiuResultTextBuilder::nncResultText()
|
|||||||
m_viewWithFaultsSettings->currentFaultResultColors()->eclipseResultAddress();
|
m_viewWithFaultsSettings->currentFaultResultColors()->eclipseResultAddress();
|
||||||
RiaDefines::ResultCatType resultType =
|
RiaDefines::ResultCatType resultType =
|
||||||
m_viewWithFaultsSettings->currentFaultResultColors()->resultType();
|
m_viewWithFaultsSettings->currentFaultResultColors()->resultType();
|
||||||
|
|
||||||
const std::vector<double>* nncValues = nullptr;
|
const std::vector<double>* nncValues = nullptr;
|
||||||
|
|
||||||
if ( resultType == RiaDefines::STATIC_NATIVE )
|
if ( resultType == RiaDefines::STATIC_NATIVE )
|
||||||
|
@ -379,26 +379,24 @@ void RiuSelectionChangedHandler::updateResultInfo( const RiuSelectionItem* itemA
|
|||||||
{
|
{
|
||||||
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>( selItem );
|
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>( selItem );
|
||||||
|
|
||||||
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>( geomSelectionItem->m_view.p() );
|
RiuFemResultTextBuilder textBuilder( geomSelectionItem->m_view,
|
||||||
|
geomSelectionItem->m_resultDefinition,
|
||||||
|
(int)geomSelectionItem->m_gridIndex,
|
||||||
|
(int)geomSelectionItem->m_cellIndex,
|
||||||
|
(int)geomSelectionItem->m_timestepIdx );
|
||||||
|
|
||||||
if ( geomView )
|
textBuilder.setIntersectionPointInDisplay( geomSelectionItem->m_localIntersectionPointInDisplay );
|
||||||
|
textBuilder.setFace( geomSelectionItem->m_elementFace );
|
||||||
|
textBuilder.set2dIntersectionView( intersectionView );
|
||||||
|
|
||||||
|
if ( geomSelectionItem->m_hasIntersectionTriangle )
|
||||||
{
|
{
|
||||||
RiuFemResultTextBuilder textBuilder( geomView,
|
textBuilder.setIntersectionTriangle( geomSelectionItem->m_intersectionTriangle );
|
||||||
(int)geomSelectionItem->m_gridIndex,
|
|
||||||
(int)geomSelectionItem->m_cellIndex,
|
|
||||||
(int)geomSelectionItem->m_timestepIdx );
|
|
||||||
|
|
||||||
textBuilder.setIntersectionPointInDisplay( geomSelectionItem->m_localIntersectionPointInDisplay );
|
|
||||||
textBuilder.setFace( geomSelectionItem->m_elementFace );
|
|
||||||
textBuilder.set2dIntersectionView( intersectionView );
|
|
||||||
|
|
||||||
if ( geomSelectionItem->m_hasIntersectionTriangle )
|
|
||||||
textBuilder.setIntersectionTriangle( geomSelectionItem->m_intersectionTriangle );
|
|
||||||
|
|
||||||
resultInfo = textBuilder.mainResultText();
|
|
||||||
|
|
||||||
pickInfo = textBuilder.geometrySelectionText( ", " );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resultInfo = textBuilder.mainResultText();
|
||||||
|
|
||||||
|
pickInfo = textBuilder.geometrySelectionText( ", " );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user