Improved ODB support (#8046)

* Experiments for supporting visualization of new ODB files from WIA workflow

* Some more experiments to get odb working for wia results

* More work in progress, experimenting to get wellIA result files to load properly

* Make sure all part geometries use the same global bounding box

* Clean up code

* Add some safeguards for data calculations
Move parts below grid in project tree

* Fix warnings

* Add support for C3D8RT elements
Add some more safeguards for missing data
Remove strange part handling

* Support elements with reduced number of integration points by pretending to have 8.

* Change integration point mapping to correct order (ref. Stein and Abaqus 2019 doc)

* Do not allocate too much memory for element nodal results for 20 element node types

* Code cleanup.
Revert back to old integration point numbering scheme (ref. Stein)

* And, another integration point order update...

* Update comments
This commit is contained in:
jonjenssen authored and GitHub committed 2021-09-27 12:44:29 +02:00
1 parent ed2beec359
commit d09ae4e1cb
26 files changed
+539 -123

No files matched your search

@@ -37,6 +37,8 @@
#include "RimEclipseView.h"
#include "RimGeoMechCase.h"
#include "RimGeoMechCellColors.h"
#include "RimGeoMechPart.h"
#include "RimGeoMechPartCollection.h"
#include "RimGeoMechPropertyFilterCollection.h"
#include "RimGridCollection.h"
#include "RimIntersectionCollection.h"
@@ -96,6 +98,10 @@ RimGeoMechView::RimGeoMechView( void )
m_propertyFilterCollection = new RimGeoMechPropertyFilterCollection();
m_propertyFilterCollection.uiCapability()->setUiHidden( true );
CAF_PDM_InitFieldNoDefault( &m_partsCollection, "Parts", "Parts", "", "", "" );
m_partsCollection = new RimGeoMechPartCollection();
m_partsCollection.uiCapability()->setUiHidden( true );
m_scaleTransform = new cvf::Transform();
m_vizLogic = new RivGeoMechVizLogic( this );
m_tensorPartMgr = new RivTensorResultPartMgr( this );
@@ -175,7 +181,9 @@ void RimGeoMechView::onLoadDataAndUpdate()
this->geoMechPropertyFilterCollection()->loadAndInitializePropertyFilters();
m_wellMeasurementCollection->syncWithChangesInWellMeasurementCollection();
if ( this->m_surfaceCollection ) this->m_surfaceCollection->loadData();
if ( m_surfaceCollection ) m_surfaceCollection->loadData();
if ( m_partsCollection ) m_partsCollection->syncWithCase( m_geomechCase );
this->scheduleCreateDisplayModelAndRedraw();
@@ -184,8 +192,6 @@ void RimGeoMechView::onLoadDataAndUpdate()
//--------------------------------------------------------------------------------------------------
///
/// Todo: Work in progress
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechView::onUpdateScaleTransform()
@@ -244,10 +250,16 @@ void RimGeoMechView::onCreateDisplayModel()
if ( !( m_geomechCase && m_geomechCase->geoMechData() && m_geomechCase->geoMechData()->femParts() ) ) return;
int partCount = m_geomechCase->geoMechData()->femParts()->partCount();
const auto& theParts = femParts();
int partCount = theParts->partCount();
if ( partCount <= 0 ) return;
for ( int i = 0; i < partCount; i++ )
{
theParts->part( i )->setEnabled( m_partsCollection()->isPartEnabled( i ) );
}
// Remove all existing animation frames from the viewer.
// The parts are still cached in the RivReservoir geometry and friends
@@ -956,6 +968,7 @@ void RimGeoMechView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
{
uiTreeOrdering.add( m_overlayInfoConfig() );
uiTreeOrdering.add( m_gridCollection() );
if ( m_partsCollection->shouldBeVisibleInTree() ) uiTreeOrdering.add( m_partsCollection() );
uiTreeOrdering.add( cellResult() );
uiTreeOrdering.add( m_tensorResults() );
@@ -986,3 +999,11 @@ const RimPropertyFilterCollection* RimGeoMechView::propertyFilterCollection() co
{
return geoMechPropertyFilterCollection();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const RimGeoMechPartCollection* RimGeoMechView::partsCollection() const
{
return m_partsCollection();
}