#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)); options.push_back(caf::PdmOptionItemInfo(caf::AppEnum<WidthEnum>::uiText(USER_DEFINED_WIDTH), USER_DEFINED_WIDTH));
auto widthAndCond = widthAndConductivityAtWellPathIntersection(); auto widthAndCond = widthAndConductivityAtWellPathIntersection();
if (widthAndCond.isValid()) if (widthAndCond.isWidthAndPermeabilityDefined())
{ {
options.push_back(caf::PdmOptionItemInfo(caf::AppEnum<WidthEnum>::uiText(WIDTH_FROM_FRACTURE), WIDTH_FROM_FRACTURE)); 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 // Non Darcy Flow
auto values = widthAndConductivityAtWellPathIntersection(); auto values = widthAndConductivityAtWellPathIntersection();
if (!values.isValid()) if (!values.isWidthAndPermeabilityDefined())
{ {
m_fractureWidthType = RimFractureTemplate::USER_DEFINED_WIDTH; m_fractureWidthType = RimFractureTemplate::USER_DEFINED_WIDTH;
} }
@ -571,9 +571,21 @@ double RimFractureTemplate::effectivePermeability() const
} }
else else
{ {
double fracPermeability = 0.0;
auto values = widthAndConductivityAtWellPathIntersection(); 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; return fracPermeability * m_relativePermeability;
} }
@ -621,7 +633,7 @@ double RimFractureTemplate::kh() const
// conductivity = permeability * h // conductivity = permeability * h
auto values = widthAndConductivityAtWellPathIntersection(); auto values = widthAndConductivityAtWellPathIntersection();
if (values.m_conductivity != HUGE_VAL) if (values.isConductivityDefined())
{ {
// If conductivity is found in stim plan file, use this directly // If conductivity is found in stim plan file, use this directly
return values.m_conductivity; 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_width != 0.0) return true;
if (m_permeability != 0.0) return true; if (m_permeability != 0.0) return true;
@ -57,6 +57,11 @@ public:
return false; return false;
} }
bool isConductivityDefined() const
{
return (m_conductivity != HUGE_VAL);
}
// Unit : meter or feet // Unit : meter or feet
double m_width; double m_width;