#6595 Fracture Model: Allow azimuth orientation for fracture.

This commit is contained in:
Kristian Bendiksen 2020-09-29 14:21:16 +02:00 committed by rubenthoms
parent 2d268b9e54
commit f9ff4c73df
3 changed files with 21 additions and 4 deletions

View File

@ -58,7 +58,10 @@ bool RifFractureModelPerfsFrkExporter::writeToFile( RimFractureModelPlot* plot,
QTextStream stream( &data );
appendHeaderToStream( stream );
bool isTransverse = fractureModel->fractureOrientation() == RimFractureModel::FractureOrientation::TRANSVERSE_WELL_PATH;
bool isTransverse =
( fractureModel->fractureOrientation() == RimFractureModel::FractureOrientation::TRANSVERSE_WELL_PATH ||
fractureModel->fractureOrientation() == RimFractureModel::FractureOrientation::AZIMUTH );
appendFractureOrientationToStream( stream, isTransverse );
// Unit: meter

View File

@ -91,6 +91,7 @@ void caf::AppEnum<RimFractureModel::FractureOrientation>::setUp()
addItem( RimFractureModel::FractureOrientation::TRANSVERSE_WELL_PATH,
"TRANSVERSE_WELL_PATH",
"Transverse (normal) to Well Path" );
addItem( RimFractureModel::FractureOrientation::AZIMUTH, "AZIMUTH", "Azimuth" );
setDefault( RimFractureModel::FractureOrientation::TRANSVERSE_WELL_PATH );
}
@ -161,6 +162,7 @@ RimFractureModel::RimFractureModel()
"",
"",
"" );
CAF_PDM_InitScriptableField( &m_azimuthAngle, "AzimuthAngle", 0.0, "Azimuth Angle", "", "", "" );
CAF_PDM_InitScriptableField( &m_formationDip, "FormationDip", 0.0, "Formation Dip", "", "", "" );
m_formationDip.uiCapability()->setUiReadOnly( true );
@ -243,7 +245,7 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField
if ( changedField == &m_MD || changedField == &m_extractionType || changedField == &m_boundingBoxVertical ||
changedField == &m_boundingBoxHorizontal || changedField == &m_fractureOrientation ||
changedField == &m_autoComputeBarrier )
changedField == &m_autoComputeBarrier || changedField == &m_azimuthAngle )
{
updateThicknessDirection();
updateBarrierProperties();
@ -549,6 +551,14 @@ void RimFractureModel::updateDistanceToBarrierAndDip()
cvf::Mat3d azimuthRotation = cvf::Mat3d::fromRotation( cvf::Vec3d::Z_AXIS, cvf::Math::toRadians( 90.0 ) );
fractureDirection.transformVector( azimuthRotation );
}
else if ( m_fractureOrientation == FractureOrientation::AZIMUTH )
{
// Azimuth angle of fracture is relative to north.
double wellAzimuth = wellPathGeometry->wellPathAzimuthAngle( position );
cvf::Mat3d azimuthRotation =
cvf::Mat3d::fromRotation( cvf::Vec3d::Z_AXIS, cvf::Math::toRadians( wellAzimuth - m_azimuthAngle() - 90.0 ) );
fractureDirection.transformVector( azimuthRotation );
}
// The direction to the barrier is normal to the TST
cvf::Vec3d directionToBarrier = ( thicknessDirection() ^ fractureDirection ).getNormalized();
@ -699,6 +709,7 @@ void RimFractureModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin
{
m_thicknessDirectionWellPath.uiCapability()->setUiHidden( true );
m_barrierAnnotation.uiCapability()->setUiHidden( true );
m_azimuthAngle.uiCapability()->setUiHidden( m_fractureOrientation() != RimFractureModel::FractureOrientation::AZIMUTH );
uiOrdering.add( nameField(), caf::PdmUiOrdering::LayoutOptions( true, 3, 1 ) );
uiOrdering.add( &m_fractureModelTemplate, {true, 2, 1} );
@ -722,6 +733,7 @@ void RimFractureModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin
caf::PdmUiOrdering* perforationGroup = uiOrdering.addNewGroup( "Perforation" );
perforationGroup->add( &m_perforationLength );
perforationGroup->add( &m_fractureOrientation );
perforationGroup->add( &m_azimuthAngle );
caf::PdmUiOrdering* asymmetricGroup = uiOrdering.addNewGroup( "Asymmetric" );
asymmetricGroup->add( &m_formationDip );

View File

@ -59,7 +59,8 @@ public:
enum class FractureOrientation
{
ALONG_WELL_PATH,
TRANSVERSE_WELL_PATH
TRANSVERSE_WELL_PATH,
AZIMUTH
};
RimFractureModel( void );
@ -164,7 +165,7 @@ private:
static RigEclipseCaseData* getEclipseCaseData();
static RimEclipseCase* getEclipseCase();
void updateBarrierProperties();
void updateBarrierProperties();
void addBarrierAnnotation( const cvf::Vec3d& startPosition, const cvf::Vec3d& endPosition );
void clearBarrierAnnotation();
RimAnnotationCollection* annotationCollection();
@ -198,6 +199,7 @@ protected:
caf::PdmField<bool> m_editFractureModelTemplate;
caf::PdmField<caf::AppEnum<FractureOrientation>> m_fractureOrientation;
caf::PdmField<double> m_azimuthAngle;
caf::PdmField<double> m_perforationLength;
caf::PdmField<double> m_formationDip;