#3121 Non Darcy Flow : D-factor is wrong for user defined width of stim plan fractures

This commit is contained in:
Magne Sjaastad 2018-06-28 14:44:52 +02:00
parent 386726a92f
commit e2d163a710
2 changed files with 22 additions and 5 deletions

View File

@ -426,7 +426,7 @@ QList<caf::PdmOptionItemInfo> RimFractureTemplate::calculateValueOptions(const c
options.push_back(caf::PdmOptionItemInfo(caf::AppEnum<WidthEnum>::uiText(USER_DEFINED_WIDTH), USER_DEFINED_WIDTH));
auto widthAndCond = widthAndConductivityAtWellPathIntersection();
if (widthAndCond.isValid())
if (widthAndCond.isWidthAndPermeabilityDefined())
{
options.push_back(caf::PdmOptionItemInfo(caf::AppEnum<WidthEnum>::uiText(WIDTH_FROM_FRACTURE), WIDTH_FROM_FRACTURE));
}
@ -490,7 +490,7 @@ void RimFractureTemplate::prepareFieldsForUiDisplay()
// Non Darcy Flow
auto values = widthAndConductivityAtWellPathIntersection();
if (!values.isValid())
if (!values.isWidthAndPermeabilityDefined())
{
m_fractureWidthType = RimFractureTemplate::USER_DEFINED_WIDTH;
}
@ -571,9 +571,21 @@ double RimFractureTemplate::effectivePermeability() const
}
else
{
double fracPermeability = 0.0;
auto values = widthAndConductivityAtWellPathIntersection();
if (values.isWidthAndPermeabilityDefined())
{
fracPermeability = values.m_permeability;
}
else
{
auto conductivity = values.m_conductivity;
auto width = fractureWidth();
auto fracPermeability = values.m_permeability;
if (fabs(width) < 1e-10) return HUGE_VAL;
fracPermeability = conductivity / width;
}
return fracPermeability * m_relativePermeability;
}
@ -621,7 +633,7 @@ double RimFractureTemplate::kh() const
// conductivity = permeability * h
auto values = widthAndConductivityAtWellPathIntersection();
if (values.m_conductivity != HUGE_VAL)
if (values.isConductivityDefined())
{
// If conductivity is found in stim plan file, use this directly
return values.m_conductivity;

View File

@ -49,7 +49,7 @@ public:
{
}
bool isValid() const
bool isWidthAndPermeabilityDefined() const
{
if (m_width != 0.0) return true;
if (m_permeability != 0.0) return true;
@ -57,6 +57,11 @@ public:
return false;
}
bool isConductivityDefined() const
{
return (m_conductivity != HUGE_VAL);
}
// Unit : meter or feet
double m_width;