From bac0073605028f7c3d588aef4fdc7f924a0532b3 Mon Sep 17 00:00:00 2001 From: Jon Jenssen Date: Thu, 15 Feb 2024 17:36:38 +0100 Subject: [PATCH] Fix data access crash when no temp is available Change element node order --- ...ultReactivationDataAccessorTemperature.cpp | 13 ++++++---- .../Faults/RimFaultReactivationModel.cpp | 6 ----- .../Faults/RimFaultReactivationModel.h | 2 -- .../RigFaultReactivationModel.cpp | 9 ------- .../RigFaultReactivationModel.h | 1 - .../RigFaultReactivationModelGenerator.cpp | 2 +- .../ReservoirDataModel/RigGriddedPart3d.cpp | 26 +++++-------------- .../ReservoirDataModel/RigGriddedPart3d.h | 1 - 8 files changed, 16 insertions(+), 44 deletions(-) diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationDataAccessorTemperature.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationDataAccessorTemperature.cpp index be00bf1743..be16499b68 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationDataAccessorTemperature.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationDataAccessorTemperature.cpp @@ -75,12 +75,15 @@ void RimFaultReactivationDataAccessorTemperature::updateResultAccessor() m_resultAccessor = RigResultAccessorFactory::createFromResultAddress( m_caseData, 0, RiaDefines::PorosityModelType::MATRIX_MODEL, m_timeStep, resVarAddress ); - auto [wellPaths, extractors] = - RimFaultReactivationDataAccessorWellLogExtraction::createEclipseWellPathExtractors( *m_model, *m_caseData, m_seabedDepth ); - m_wellPaths = wellPaths; - m_extractors = extractors; + if ( m_resultAccessor.notNull() ) + { + auto [wellPaths, extractors] = + RimFaultReactivationDataAccessorWellLogExtraction::createEclipseWellPathExtractors( *m_model, *m_caseData, m_seabedDepth ); + m_wellPaths = wellPaths; + m_extractors = extractors; - m_gradient = computeGradient(); + m_gradient = computeGradient(); + } } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp index e0e552bc72..74040d85dd 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp @@ -99,8 +99,6 @@ RimFaultReactivationModel::RimFaultReactivationModel() CAF_PDM_InitField( &m_faultZoneCells, "FaultZoneCells", 0, "Fault Zone Width [cells]" ); CAF_PDM_InitField( &m_showModelPlane, "ShowModelPlane", true, "Show 2D Model" ); - CAF_PDM_InitField( &m_flipNodeOrderFW, "FlipNodeOrderFW", false, "FW: Flip Node Order" ); - CAF_PDM_InitField( &m_flipNodeOrderHW, "FlipNodeOrderHW", false, "HW: Flip Node Order" ); CAF_PDM_InitFieldNoDefault( &m_fault, "Fault", "Fault" ); m_fault.uiCapability()->setUiReadOnly( true ); @@ -344,7 +342,6 @@ void RimFaultReactivationModel::updateVisualization() m_2Dmodel->setGenerator( generator ); m_2Dmodel->updateGeometry( m_startCellIndex, (cvf::StructGridInterface::FaceType)m_startCellFace() ); m_2Dmodel->postProcessElementSets( eclipseCase() ); - m_2Dmodel->flipNodeOrder( m_flipNodeOrderFW, m_flipNodeOrderHW ); view->scheduleCreateDisplayModelAndRedraw(); } @@ -475,9 +472,6 @@ void RimFaultReactivationModel::defineUiOrdering( QString uiConfigName, caf::Pdm gridModelGrp->add( &m_modelThickness ); - gridModelGrp->add( &m_flipNodeOrderFW ); - gridModelGrp->add( &m_flipNodeOrderHW ); - auto appModelGrp = modelGrp->addNewGroup( "Appearance" ); appModelGrp->setCollapsedByDefault(); appModelGrp->add( &m_modelPart1Color ); diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h index 846e6d666f..6d85ed2be9 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h @@ -162,8 +162,6 @@ class RimFaultReactivationModel : public RimCheckableNamedObject, public RimPoly caf::PdmField m_modelPart2Color; caf::PdmField m_showModelPlane; - caf::PdmField m_flipNodeOrderFW; - caf::PdmField m_flipNodeOrderHW; caf::PdmField m_modelExtentFromAnchor; caf::PdmField m_modelMinZ; diff --git a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.cpp b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.cpp index 7f2b70db9e..286e91b986 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.cpp @@ -264,12 +264,3 @@ void RigFaultReactivationModel::postProcessElementSets( const RimEclipseCase* eC m_3dparts[part]->postProcessElementSets( eCase->mainGrid(), cellInfo ); } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RigFaultReactivationModel::flipNodeOrder( bool flipFW, bool flipHW ) -{ - if ( flipFW ) m_3dparts[GridPart::FW]->flipNodeOrder(); - if ( flipHW ) m_3dparts[GridPart::HW]->flipNodeOrder(); -} \ No newline at end of file diff --git a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.h b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.h index 5072902375..97a0417660 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.h +++ b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModel.h @@ -87,7 +87,6 @@ class RigFaultReactivationModel : public cvf::Object RimFaultReactivation::GridPart normalPointsAt() const; void postProcessElementSets( const RimEclipseCase* eCase ); - void flipNodeOrder( bool flipFW, bool flipHW ); private: std::shared_ptr m_generator; diff --git a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModelGenerator.cpp b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModelGenerator.cpp index a2b6d31524..aac975721e 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModelGenerator.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigFaultReactivationModelGenerator.cpp @@ -590,7 +590,7 @@ void RigFaultReactivationModelGenerator::generateGeometry( size_t sta m_horizontalPartition, m_modelThickness, m_topReservoirBack.z(), - m_modelNormal, + -1.0 * m_modelNormal, m_faultZoneCells ); frontPart->generateLocalNodes( m_localCoordTransform ); diff --git a/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.cpp b/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.cpp index 518405cc74..f98e3c19f8 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.cpp @@ -400,15 +400,15 @@ void RigGriddedPart3d::generateGeometry( const std::array& input { for ( int t = 0; t < nThicknessCells; t++, elementIdx++ ) { - m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i ); - m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + nThicknessOff ); - m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + nThicknessOff + 1 ); - m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + 1 ); - m_elementIndices[elementIdx].push_back( t + i ); - m_elementIndices[elementIdx].push_back( t + i + nThicknessOff ); - m_elementIndices[elementIdx].push_back( t + i + nThicknessOff + 1 ); m_elementIndices[elementIdx].push_back( t + i + 1 ); + m_elementIndices[elementIdx].push_back( t + i + nThicknessOff + 1 ); + m_elementIndices[elementIdx].push_back( t + i + nThicknessOff ); + + m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i ); + m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + 1 ); + m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + nThicknessOff + 1 ); + m_elementIndices[elementIdx].push_back( t + nextLayerIdxOff + i + nThicknessOff ); if ( v == 0 ) { @@ -767,15 +767,3 @@ void RigGriddedPart3d::updateElementSet( ElementSets elSet, } } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RigGriddedPart3d::flipNodeOrder() -{ - for ( auto& nodes : m_elementIndices ) - { - std::swap( nodes[1], nodes[3] ); - std::swap( nodes[5], nodes[7] ); - } -} \ No newline at end of file diff --git a/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.h b/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.h index dfcaa7d500..49f44269c8 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.h +++ b/ApplicationLibCode/ReservoirDataModel/RigGriddedPart3d.h @@ -61,7 +61,6 @@ class RigGriddedPart3d : public cvf::Object void setUseLocalCoordinates( bool useLocalCoordinates ); void postProcessElementSets( const RigMainGrid* mainGrid, const RigActiveCellInfo* cellInfo ); - void flipNodeOrder(); bool useLocalCoordinates() const; double topHeight() const;