#9470 User defined perf length for azimuth fractures

Fractures: Add UI for user-defined perforation length for az fractures
Add user defined perforation length for azimuth fractures.
Janitor: remove duplication
This commit is contained in:
Kristian Bendiksen
2022-11-24 10:42:26 +01:00
committed by GitHub
parent 4345cb3a70
commit e8789f3d4b
14 changed files with 171 additions and 64 deletions

View File

@@ -489,6 +489,7 @@ void RimEllipseFractureTemplate::defineUiOrdering( QString uiConfigName, caf::Pd
group->add( &m_permeability );
group->add( &m_width );
group->add( &m_skinFactor );
group->add( &m_userDefinedPerforationLength );
group->add( &m_perforationLength );
group->add( &m_perforationEfficiency );
group->add( &m_wellDiameter );

View File

@@ -133,6 +133,10 @@ RimFractureTemplate::RimFractureTemplate()
caf::AppEnum<FracOrientationEnum>( TRANSVERSE_WELL_PATH ),
"Fracture Orientation" );
CAF_PDM_InitScriptableField( &m_userDefinedPerforationLength,
"UserDefinedPerforationLength",
false,
"User-defined Perforation Length" );
CAF_PDM_InitScriptableField( &m_azimuthAngle, "AzimuthAngle", 0.0f, "Azimuth Angle" );
CAF_PDM_InitField( &m_skinFactor, "SkinFactor", 0.0f, "Skin Factor" );
@@ -496,10 +500,12 @@ void RimFractureTemplate::prepareFieldsForUiDisplay()
m_orientationType == RimFractureTemplate::TRANSVERSE_WELL_PATH )
{
m_azimuthAngle.uiCapability()->setUiHidden( true );
m_userDefinedPerforationLength.uiCapability()->setUiHidden( true );
}
else if ( m_orientationType == RimFractureTemplate::AZIMUTH )
{
m_azimuthAngle.uiCapability()->setUiHidden( false );
m_userDefinedPerforationLength.uiCapability()->setUiHidden( false );
}
if ( m_orientationType == RimFractureTemplate::ALONG_WELL_PATH )
@@ -510,7 +516,10 @@ void RimFractureTemplate::prepareFieldsForUiDisplay()
else
{
m_perforationEfficiency.uiCapability()->setUiHidden( true );
m_perforationLength.uiCapability()->setUiHidden( true );
bool hidePerforationLength =
!( m_orientationType == RimFractureTemplate::AZIMUTH && m_userDefinedPerforationLength() );
m_perforationLength.uiCapability()->setUiHidden( hidePerforationLength );
}
if ( m_conductivityType == FINITE_CONDUCTIVITY )
@@ -939,6 +948,14 @@ double RimFractureTemplate::perforationLength() const
return m_perforationLength;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimFractureTemplate::useUserDefinedPerforationLength() const
{
return m_userDefinedPerforationLength;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -138,6 +138,7 @@ public:
double wellDiameter() const;
FracConductivityEnum conductivityType() const;
double perforationLength() const;
bool useUserDefinedPerforationLength() const;
double wellPathDepthAtFracture() const;
virtual std::pair<double, double> wellPathDepthAtFractureRange() const = 0;
@@ -215,6 +216,7 @@ protected:
caf::PdmField<caf::AppEnum<FracOrientationEnum>> m_orientationType;
caf::PdmField<float> m_azimuthAngle;
caf::PdmField<float> m_skinFactor;
caf::PdmField<bool> m_userDefinedPerforationLength;
caf::PdmField<double> m_perforationLength;
caf::PdmField<double> m_perforationEfficiency;
caf::PdmField<double> m_wellDiameter;

View File

@@ -28,6 +28,7 @@
#include "RigFractureCell.h"
#include "RigFractureGrid.h"
#include "RigTransmissibilityEquations.h"
#include "RigWellPath.h"
#include "RigWellPathStimplanIntersector.h"
#include "RimEclipseView.h"
@@ -275,7 +276,10 @@ WellFractureIntersectionData RimMeshFractureTemplate::wellFractureIntersectionDa
RiaWeightedMeanCalculator<double> conductivityCalc;
RiaWeightedGeometricMeanCalculator betaFactorCalc;
RigWellPathStimplanIntersector intersector( rimWellPath->wellPathGeometry(), fractureInstance );
std::vector<cvf::Vec3d> wellPathPoints =
rimWellPath->wellPathGeometry()->wellPathPointsIncludingInterpolatedIntersectionPoint(
fractureInstance->fractureMD() );
RigWellPathStimplanIntersector intersector( wellPathPoints, fractureInstance );
for ( const auto& v : intersector.intersections() )
{
size_t fractureGlobalCellIndex = v.first;
@@ -498,6 +502,7 @@ void RimMeshFractureTemplate::defineUiOrdering( QString uiConfigName, caf::PdmUi
group->add( &m_conductivityResultNameOnFile );
group->add( &m_conductivityType );
group->add( &m_skinFactor );
group->add( &m_userDefinedPerforationLength );
group->add( &m_perforationLength );
group->add( &m_perforationEfficiency );
group->add( &m_wellDiameter );