#15021: Fix D-factor unit mismatch for field units

Use well radius and ellipse width in feet for fractures and perforations when computing the D-factor, as the field alpha expects feet.
This commit is contained in:
Magne Sjaastad committed 2026-10-24 20:30:43 +02:00
1 parent ce9ae46a91
commit e128e6dd3e
3 files changed
+16 -3

No files matched your search

@@ -249,13 +249,18 @@ double RicTransmissibilityCalculator::calculateDFactor( RimEclipseCase*
porosity,
nonDarcyParameters->porosityScalingFactor() );
const double alpha = RiaDefines::nonDarcyFlowAlpha( eclipseCase->eclipseCaseData()->unitsType() );
const auto unitsType = eclipseCase->eclipseCaseData()->unitsType();
const double alpha = RiaDefines::nonDarcyFlowAlpha( unitsType );
// The well radius is entered in meters, while the field alpha expects feet
double wellRadius = nonDarcyParameters->wellRadius();
if ( unitsType == RiaDefines::EclipseUnitSystem::UNITS_FIELD ) wellRadius = RiaEclipseUnitTools::meterToFeet( wellRadius );
return EQ::dFactor( alpha,
betaFactor,
effectivePermeability,
effectiveH,
nonDarcyParameters->wellRadius(),
wellRadius,
nonDarcyParameters->relativeGasDensity(),
nonDarcyParameters->gasViscosity() );
}
@@ -244,7 +244,9 @@ cvf::cref<RigFractureGrid> RimEllipseFractureTemplate::createFractureGrid( doubl
WellFractureIntersectionData RimEllipseFractureTemplate::wellFractureIntersectionData( const RimFracture* fractureInstance ) const
{
WellFractureIntersectionData values;
values.m_width = m_width;
// Width is in inches for field units, but length unit (feet) is required for conductivity and D-factor
values.m_width = ( fractureTemplateUnit() == RiaDefines::EclipseUnitSystem::UNITS_FIELD ) ? RiaEclipseUnitTools::inchToFeet( m_width )
: m_width;
values.m_permeability = m_permeability;
return values;
@@ -624,7 +624,13 @@ double RimFractureTemplate::computeWellRadiusForDFactorCalculation( const RimFra
}
else
{
// Well diameter is in meter for metric and inches for field. Radius must be in meter/feet to be consistent with
// fracture width and the unit dependent alpha
radius = m_wellDiameter / 2.0;
if ( m_fractureTemplateUnit() == RiaDefines::EclipseUnitSystem::UNITS_FIELD )
{
radius = RiaEclipseUnitTools::inchToFeet( radius );
}
}
return radius;