mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-12 16:32:12 -05:00
#2455 Non-Darcy Flow : Add support for user defined D-factor
This commit is contained in:
1 parent
dda9bd11ea
commit
8dfe181cc3
2 files changed
+63
-15
No files matched your search
@@ -71,6 +71,16 @@ namespace caf
|
||||
|
||||
setDefault(RimFractureTemplate::WIDTH_FROM_FRACTURE);
|
||||
}
|
||||
|
||||
template<>
|
||||
void caf::AppEnum<RimFractureTemplate::NonDarcyFlowEnum>::setUp()
|
||||
{
|
||||
addItem(RimFractureTemplate::NON_DARCY_NONE, "None", "None");
|
||||
addItem(RimFractureTemplate::NON_DARCY_COMPUTED, "Computed", "Computed by Parameters");
|
||||
addItem(RimFractureTemplate::NON_DARCY_USER_DEFINED, "UserDefined", "User Defined Value");
|
||||
|
||||
setDefault(RimFractureTemplate::NON_DARCY_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Move to cafPdmObject.h
|
||||
@@ -107,7 +117,9 @@ RimFractureTemplate::RimFractureTemplate()
|
||||
m_fractureContainment.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
// Non-Darcy Flow options
|
||||
CAF_PDM_InitField_Basic(&m_useNonDarcyFlow, "UseNonDarcyFlow", false, "Use Non-Darcy Flow");
|
||||
CAF_PDM_InitFieldNoDefault(&m_nonDarcyFlowType, "NonDarcyFlowType", "Non-Darcy Flow", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_userDefinedDFactor, "UserDefinedDFactor", 1.0, "D Factor", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_fractureWidthType, "FractureWidthType", "Type", "", "", "");
|
||||
CAF_PDM_InitField_Basic(&m_fractureWidth, "FractureWidth", 0.1, "Fracture Width (h)");
|
||||
@@ -274,8 +286,15 @@ void RimFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
|
||||
prepareFieldsForUiDisplay();
|
||||
|
||||
auto nonDarcyFlowGroup = uiOrdering.addNewGroup("Non-Darcy Flow");
|
||||
nonDarcyFlowGroup->setCollapsedByDefault(true);
|
||||
nonDarcyFlowGroup->add(&m_useNonDarcyFlow);
|
||||
nonDarcyFlowGroup->add(&m_nonDarcyFlowType);
|
||||
|
||||
if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_USER_DEFINED)
|
||||
{
|
||||
nonDarcyFlowGroup->add(&m_userDefinedDFactor);
|
||||
}
|
||||
|
||||
if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_COMPUTED)
|
||||
{
|
||||
nonDarcyFlowGroup->add(&m_inertialCoefficient);
|
||||
|
||||
{
|
||||
@@ -300,8 +319,10 @@ void RimFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
|
||||
group->setCollapsedByDefault(true);
|
||||
group->add(&m_dFactorSummaryText);
|
||||
}
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_fractureTemplateUnit);
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -380,20 +401,31 @@ void RimFractureTemplate::prepareFieldsForUiDisplay()
|
||||
}
|
||||
|
||||
// Non Darcy Flow
|
||||
m_inertialCoefficient.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
|
||||
m_fractureWidthType.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
m_fractureWidth.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
bool hideNonDarcyFlowParams = false;
|
||||
if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_COMPUTED) hideNonDarcyFlowParams = false;
|
||||
|
||||
m_permeabilityType.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
m_relativePermeability.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
m_userDefinedEffectivePermeability.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
|
||||
m_relativeGasDensity.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
m_gasViscosity.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow);
|
||||
|
||||
if (m_useNonDarcyFlow)
|
||||
if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_USER_DEFINED)
|
||||
{
|
||||
m_userDefinedDFactor.uiCapability()->setUiHidden(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_userDefinedDFactor.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
|
||||
m_inertialCoefficient.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
|
||||
m_fractureWidthType.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
m_fractureWidth.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
|
||||
m_permeabilityType.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
m_relativePermeability.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
m_userDefinedEffectivePermeability.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
|
||||
m_relativeGasDensity.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
m_gasViscosity.uiCapability()->setUiHidden(hideNonDarcyFlowParams);
|
||||
|
||||
if (m_fractureWidthType == RimFractureTemplate::USER_DEFINED_WIDTH)
|
||||
{
|
||||
m_fractureWidth.uiCapability()->setUiReadOnly(false);
|
||||
@@ -406,6 +438,8 @@ void RimFractureTemplate::prepareFieldsForUiDisplay()
|
||||
m_fractureWidth.uiCapability()->setUiReadOnly(true);
|
||||
}
|
||||
|
||||
if (hideNonDarcyFlowParams)
|
||||
{
|
||||
if (m_permeabilityType == RimFractureTemplate::USER_DEFINED_PERMEABILITY)
|
||||
{
|
||||
m_relativePermeability.uiCapability()->setUiHidden(true);
|
||||
@@ -485,6 +519,11 @@ double RimFractureTemplate::effectivePermeability() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
double RimFractureTemplate::computeDFactor() const
|
||||
{
|
||||
if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_USER_DEFINED)
|
||||
{
|
||||
return m_userDefinedDFactor;
|
||||
}
|
||||
|
||||
auto alpha = RiaDefines::nonDarcyFlowAlpha(m_fractureTemplateUnit());
|
||||
auto beta = m_inertialCoefficient;
|
||||
auto effPerm = effectivePermeability();
|
||||
|
||||
@@ -85,6 +85,14 @@ public:
|
||||
WIDTH_FROM_FRACTURE,
|
||||
};
|
||||
|
||||
enum NonDarcyFlowEnum
|
||||
{
|
||||
NON_DARCY_NONE,
|
||||
NON_DARCY_COMPUTED,
|
||||
NON_DARCY_USER_DEFINED,
|
||||
};
|
||||
|
||||
|
||||
public:
|
||||
RimFractureTemplate();
|
||||
virtual ~RimFractureTemplate();
|
||||
@@ -145,7 +153,8 @@ protected:
|
||||
caf::PdmField<caf::AppEnum<FracConductivityEnum>> m_conductivityType;
|
||||
caf::PdmChildField<RimFractureContainment*> m_fractureContainment;
|
||||
|
||||
caf::PdmField<bool> m_useNonDarcyFlow;
|
||||
caf::PdmField<caf::AppEnum<NonDarcyFlowEnum>> m_nonDarcyFlowType;
|
||||
caf::PdmField<double> m_userDefinedDFactor;
|
||||
|
||||
caf::PdmField<caf::AppEnum<WidthEnum>> m_fractureWidthType;
|
||||
caf::PdmField<double> m_fractureWidth;
|
||||
|
||||
Reference in new issue
Block a user