Enhances dual porosity result display and plotting

Improves the handling and display of dual porosity results by:

- Adds an option to display a dual porosity label in the UI tree, clarifying the porosity model being used.
- Adjusts the K index calculation for the fracture porosity model in relative permeability plots, ensuring correct indexing.
- Adds a warning message when plotting relative permeability curves for fracture cells since it is not fully supported.
- Replaces direct checks for dual-porosity results with checks against the main grid to determine dual porosity for UI element display.
This commit is contained in:
Magne Sjaastad committed 2026-02-20 09:27:20 +01:00
1 parent 33bf89d196
commit 441a0d4338
9 files changed
+78 -24

No files matched your search

@@ -34,6 +34,7 @@
#include "RigFlowDiagResultAddress.h"
#include "RigFlowDiagResults.h"
#include "RigFormationNames.h"
#include "RigMainGrid.h"
#include "ContourMap/RimContourMapProjection.h"
#include "ContourMap/RimEclipseContourMapProjection.h"
@@ -115,6 +116,8 @@ RimEclipseResultDefinition::RimEclipseResultDefinition( caf::PdmUiItemInfo::Labe
CAF_PDM_InitField( &m_divideByCellFaceArea, "DivideByCellFaceArea", false, "Divide By Area" );
CAF_PDM_InitField( &m_showDualPorosityLabel, "ShowDualPorosityLabel", true, "Show Dual Porosity Label" );
CAF_PDM_InitScriptableFieldNoDefault( &m_selectedInjectorTracers, "SelectedInjectorTracers", "Injector Tracers" );
m_selectedInjectorTracers.uiCapability()->setUiHidden( true );
@@ -1477,9 +1480,10 @@ void RimEclipseResultDefinition::defineUiOrdering( QString uiConfigName, caf::Pd
{
uiOrdering.add( &m_resultTypeUiField );
if ( hasDualPorFractureResult() )
if ( m_eclipseCase && m_eclipseCase->mainGrid() && m_eclipseCase->mainGrid()->isDualPorosity() )
{
uiOrdering.add( &m_porosityModelUiField );
uiOrdering.add( &m_showDualPorosityLabel );
}
if ( m_resultTypeUiField() == RiaDefines::ResultCatType::FLOW_DIAGNOSTICS )
@@ -1577,6 +1581,14 @@ void RimEclipseResultDefinition::defineUiOrdering( QString uiConfigName, caf::Pd
uiOrdering.skipRemainingFields( true );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::showDualPorosityLabel() const
{
return m_showDualPorosityLabel;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1611,19 +1623,6 @@ void RimEclipseResultDefinition::assignFlowSolutionFromCase()
setFlowSolution( defaultFlowDiagSolution );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::hasDualPorFractureResult()
{
if ( m_eclipseCase && m_eclipseCase->eclipseCaseData() )
{
return m_eclipseCase->eclipseCaseData()->hasFractureResults();
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1730,7 +1729,7 @@ void RimEclipseResultDefinition::updateLegendTitle( RimRegularLegendConfig* lege
title += additionalResultTextShort();
}
if ( hasDualPorFractureResult() )
if ( m_eclipseCase && m_eclipseCase->mainGrid() && m_eclipseCase->mainGrid()->isDualPorosity() )
{
QString porosityModelText = caf::AppEnum<RiaDefines::PorosityModelType>::uiText( porosityModel() );