#5112 Sep Inter Res: Fixed result info text for gomech

This commit is contained in:
Jacob Støren 2019-11-28 09:18:19 +01:00
parent 2a3c43bcc3
commit 14d7fa3780
4 changed files with 80 additions and 71 deletions

View File

@ -41,15 +41,15 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuFemResultTextBuilder::RiuFemResultTextBuilder( RimGeoMechView* reservoirView,
RiuFemResultTextBuilder::RiuFemResultTextBuilder( RimGridView* displayCoordView,
RimGeoMechResultDefinition* geomResDef,
int gridIndex,
int cellIndex,
int timeStepIndex )
: m_isIntersectionTriangleSet( false )
{
CVF_ASSERT( reservoirView );
m_reservoirView = reservoirView;
m_displayCoordView = displayCoordView;
m_geomResDef = geomResDef;
m_gridIndex = gridIndex;
m_cellIndex = cellIndex;
m_timeStepIndex = timeStepIndex;
@ -98,9 +98,7 @@ QString RiuFemResultTextBuilder::mainResultText()
{
QString text;
RimGeoMechResultDefinition* cellResultDefinition = m_reservoirView->cellResultResultDefinition();
text = closestNodeResultText( cellResultDefinition );
text = closestNodeResultText( m_geomResDef );
if ( !text.isEmpty() ) text += "\n";
@ -109,7 +107,7 @@ QString RiuFemResultTextBuilder::mainResultText()
appendDetails( text, formationDetails() );
text += "\n";
if ( cellResultDefinition->resultPositionType() != RIG_ELEMENT )
if ( m_geomResDef->resultPositionType() != RIG_ELEMENT )
{
appendDetails( text, gridResultDetails() );
}
@ -124,9 +122,9 @@ QString RiuFemResultTextBuilder::geometrySelectionText( QString itemSeparator )
{
QString text;
if ( m_reservoirView->geoMechCase() )
if ( m_geomResDef->geoMechCase() )
{
RigGeoMechCaseData* geomData = m_reservoirView->geoMechCase()->geoMechData();
RigGeoMechCaseData* geomData = m_geomResDef->geoMechCase()->geoMechData();
if ( geomData )
{
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
@ -167,7 +165,9 @@ QString RiuFemResultTextBuilder::geometrySelectionText( QString itemSeparator )
}
else
{
cvf::ref<caf::DisplayCoordTransform> transForm = m_reservoirView->displayCoordTransform();
if ( m_displayCoordView )
{
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]",
@ -179,6 +179,7 @@ QString RiuFemResultTextBuilder::geometrySelectionText( QString itemSeparator )
}
}
}
}
return text;
}
@ -190,16 +191,11 @@ QString RiuFemResultTextBuilder::gridResultDetails()
{
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,
m_gridIndex,
m_cellIndex,
m_timeStepIndex,
m_reservoirView->cellResultResultDefinition(),
&text );
this->appendTextFromResultColors( eclipseCaseData, m_gridIndex, m_cellIndex, m_timeStepIndex, m_geomResDef, &text );
if ( !text.isEmpty() )
{
@ -216,7 +212,7 @@ QString RiuFemResultTextBuilder::gridResultDetails()
QString RiuFemResultTextBuilder::formationDetails()
{
QString text;
RimCase* rimCase = m_reservoirView->ownerCase();
RimCase* rimCase = m_geomResDef->geoMechCase();
if ( rimCase )
{
if ( rimCase->activeFormationNames() && rimCase->activeFormationNames()->formationNamesData() )
@ -225,9 +221,9 @@ QString RiuFemResultTextBuilder::formationDetails()
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 )
{
size_t i = 0;
@ -394,26 +390,28 @@ QString RiuFemResultTextBuilder::closestNodeResultText( RimGeoMechResultDefiniti
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(),
m_gridIndex,
m_timeStepIndex );
if ( scalarResults.size() )
if ( scalarResults.size() && m_displayCoordView )
{
RigFemPart* femPart = geomData->femParts()->part( m_gridIndex );
RigFemResultPosEnum activeResultPosition = resultColors->resultPositionType();
cvf::Vec3d intersectionPointInDomain = m_reservoirView->displayCoordTransform()->translateToDomainCoord(
cvf::Vec3d intersectionPointInDomain = m_displayCoordView->displayCoordTransform()->translateToDomainCoord(
m_intersectionPointInDisplay );
RigFemClosestResultIndexCalculator closestIndexCalc( femPart,
activeResultPosition,
m_cellIndex,
m_face,
intersectionPointInDomain );
int resultIndex = closestIndexCalc.resultIndexToClosestResult();
int closestNodeId = closestIndexCalc.closestNodeId();
int closestElmNodResIdx = closestIndexCalc.closestElementNodeResIdx();

View File

@ -30,6 +30,7 @@ class RimEclipseCellColors;
class RimGeoMechResultDefinition;
class RimGeoMechView;
class Rim2dIntersectionView;
class RimGridView;
namespace cvf
{
@ -43,7 +44,11 @@ class Part;
class RiuFemResultTextBuilder
{
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 setIntersectionPointInDisplay( cvf::Vec3d intersectionPointInDisplay );
void setIntersectionTriangle( const std::array<cvf::Vec3f, 3>& triangle );
@ -69,7 +74,8 @@ private:
QString* resultInfoText );
private:
caf::PdmPointer<RimGeoMechView> m_reservoirView;
caf::PdmPointer<RimGridView> m_displayCoordView;
caf::PdmPointer<RimGeoMechResultDefinition> m_geomResDef;
caf::PdmPointer<Rim2dIntersectionView> m_2dIntersectionView;
int m_gridIndex;

View File

@ -254,6 +254,8 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
}
}
else
{
if ( m_displayCoordView )
{
cvf::ref<caf::DisplayCoordTransform> transForm = m_displayCoordView->displayCoordTransform();
cvf::Vec3d domainCoord = transForm->translateToDomainCoord( m_intersectionPointInDisplay );
@ -267,6 +269,7 @@ QString RiuResultTextBuilder::geometrySelectionText( QString itemSeparator )
}
}
}
}
return text;
}
@ -396,10 +399,12 @@ QString RiuResultTextBuilder::faultResultText()
if ( m_eclResDef->eclipseCase() && m_eclResDef->eclipseCase()->eclipseCaseData() )
{
RigEclipseCaseData* eclipseCaseData = m_eclResDef->eclipseCase()->eclipseCaseData();
RigGridBase* grid = eclipseCaseData->grid( m_gridIndex );
RigMainGrid* mainGrid = grid->mainGrid();
const RigFault* fault = mainGrid->findFaultFromCellIndexAndCellFace( m_cellIndex, m_face );
if ( fault )
{
cvf::StructGridInterface::FaceEnum faceHelper( m_face );
@ -435,6 +440,7 @@ QString RiuResultTextBuilder::nncResultText()
if ( nncData && m_nncIndex < nncData->connections().size() )
{
const RigConnection& conn = nncData->connections()[m_nncIndex];
cvf::StructGridInterface::FaceEnum face( conn.m_c1Face );
if ( m_viewWithFaultsSettings && m_viewWithFaultsSettings->currentFaultResultColors() )
@ -443,6 +449,7 @@ QString RiuResultTextBuilder::nncResultText()
m_viewWithFaultsSettings->currentFaultResultColors()->eclipseResultAddress();
RiaDefines::ResultCatType resultType =
m_viewWithFaultsSettings->currentFaultResultColors()->resultType();
const std::vector<double>* nncValues = nullptr;
if ( resultType == RiaDefines::STATIC_NATIVE )

View File

@ -379,11 +379,8 @@ void RiuSelectionChangedHandler::updateResultInfo( const RiuSelectionItem* itemA
{
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>( selItem );
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>( geomSelectionItem->m_view.p() );
if ( geomView )
{
RiuFemResultTextBuilder textBuilder( geomView,
RiuFemResultTextBuilder textBuilder( geomSelectionItem->m_view,
geomSelectionItem->m_resultDefinition,
(int)geomSelectionItem->m_gridIndex,
(int)geomSelectionItem->m_cellIndex,
(int)geomSelectionItem->m_timestepIdx );
@ -393,14 +390,15 @@ void RiuSelectionChangedHandler::updateResultInfo( const RiuSelectionItem* itemA
textBuilder.set2dIntersectionView( intersectionView );
if ( geomSelectionItem->m_hasIntersectionTriangle )
{
textBuilder.setIntersectionTriangle( geomSelectionItem->m_intersectionTriangle );
}
resultInfo = textBuilder.mainResultText();
pickInfo = textBuilder.geometrySelectionText( ", " );
}
}
}
RiuMainWindow* mainWnd = RiuMainWindow::instance();
mainWnd->statusBar()->showMessage( pickInfo );