Merge pull request #5303 from OPM/improve-formations

Improve formations
This commit is contained in:
Magne Sjaastad
2020-01-07 11:21:09 +01:00
committed by GitHub
15 changed files with 86 additions and 102 deletions
@@ -72,6 +72,7 @@ RicfCommandResponse RicfImportFormationNames::execute()
if ( rimCase->caseId() == m_applyToCaseId() ) if ( rimCase->caseId() == m_applyToCaseId() )
{ {
rimCase->setFormationNames( formationNames ); rimCase->setFormationNames( formationNames );
rimCase->updateFormationNamesData();
rimCase->updateConnectedEditors(); rimCase->updateConnectedEditors();
foundCase = true; foundCase = true;
break; break;
@@ -111,6 +111,7 @@ void RicImportFormationNamesFeature::onActionTriggered( bool isChecked )
if ( ownerCase ) if ( ownerCase )
{ {
ownerCase->setFormationNames( formationName ); ownerCase->setFormationNames( formationName );
ownerCase->updateFormationNamesData();
ownerCase->updateConnectedEditors(); ownerCase->updateConnectedEditors();
} }
} }
+19 -3
View File
@@ -51,7 +51,7 @@ RimCase::RimCase()
caseId.uiCapability()->setUiReadOnly( true ); caseId.uiCapability()->setUiReadOnly( true );
caseId.capability<RicfFieldHandle>()->setIOWriteable( false ); caseId.capability<RicfFieldHandle>()->setIOWriteable( false );
CAF_PDM_InitFieldNoDefault( &activeFormationNames, "DefaultFormationNames", "Formation Names File", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_activeFormationNames, "DefaultFormationNames", "Formation Names File", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_timeStepFilter, "TimeStepFilter", "Time Step Filter", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_timeStepFilter, "TimeStepFilter", "Time Step Filter", "", "", "" );
m_timeStepFilter.uiCapability()->setUiHidden( true ); m_timeStepFilter.uiCapability()->setUiHidden( true );
@@ -122,7 +122,15 @@ cvf::Vec3d RimCase::displayModelOffset() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimCase::setFormationNames( RimFormationNames* formationNames ) void RimCase::setFormationNames( RimFormationNames* formationNames )
{ {
activeFormationNames = formationNames; m_activeFormationNames = formationNames;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimFormationNames* RimCase::activeFormationNames() const
{
return m_activeFormationNames();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -156,7 +164,7 @@ QList<caf::PdmOptionItemInfo> RimCase::calculateValueOptions( const caf::PdmFiel
{ {
QList<caf::PdmOptionItemInfo> options; QList<caf::PdmOptionItemInfo> options;
if ( fieldNeedingOptions == &activeFormationNames ) if ( fieldNeedingOptions == &m_activeFormationNames )
{ {
RimProject* proj = RiaApplication::instance()->project(); RimProject* proj = RiaApplication::instance()->project();
if ( proj && proj->activeOilField() && proj->activeOilField()->formationNamesCollection() ) if ( proj && proj->activeOilField() && proj->activeOilField()->formationNamesCollection() )
@@ -186,3 +194,11 @@ void RimCase::initAfterRead()
RiaApplication::instance()->project()->assignCaseIdToCase( this ); RiaApplication::instance()->project()->assignCaseIdToCase( this );
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimCase::userDescriptionField()
{
return &caseUserDescription;
}
+5 -8
View File
@@ -53,8 +53,6 @@ public:
caf::PdmField<int> caseId; caf::PdmField<int> caseId;
caf::PdmField<QString> caseUserDescription; caf::PdmField<QString> caseUserDescription;
caf::PdmPtrField<RimFormationNames*> activeFormationNames;
std::vector<Rim3dView*> views() const; std::vector<Rim3dView*> views() const;
std::vector<RimGridView*> gridViews() const; std::vector<RimGridView*> gridViews() const;
@@ -69,8 +67,9 @@ public:
virtual cvf::Vec3d displayModelOffset() const; virtual cvf::Vec3d displayModelOffset() const;
virtual void updateFormationNamesData() = 0; void setFormationNames( RimFormationNames* formationNames );
virtual void setFormationNames( RimFormationNames* formationNames ); RimFormationNames* activeFormationNames() const;
virtual void updateFormationNamesData() = 0;
virtual double characteristicCellSize() const = 0; virtual double characteristicCellSize() const = 0;
@@ -85,14 +84,12 @@ protected:
void initAfterRead() override; void initAfterRead() override;
private: private:
caf::PdmFieldHandle* userDescriptionField() override caf::PdmFieldHandle* userDescriptionField() override;
{
return &caseUserDescription;
}
protected: protected:
caf::PdmChildField<RimTimeStepFilter*> m_timeStepFilter; caf::PdmChildField<RimTimeStepFilter*> m_timeStepFilter;
caf::PdmChildField<Rim2dIntersectionViewCollection*> m_2dIntersectionViewCollection; caf::PdmChildField<Rim2dIntersectionViewCollection*> m_2dIntersectionViewCollection;
caf::PdmPtrField<RimFormationNames*> m_activeFormationNames;
private: private:
bool m_isInActiveDestruction; bool m_isInActiveDestruction;
@@ -464,7 +464,7 @@ void RimEclipseCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
} }
} }
} }
else if ( changedField == &activeFormationNames ) else if ( changedField == &m_activeFormationNames )
{ {
updateFormationNamesData(); updateFormationNamesData();
} }
@@ -480,12 +480,25 @@ void RimEclipseCase::updateFormationNamesData()
{ {
if ( activeFormationNames() ) if ( activeFormationNames() )
{ {
rigEclipseCase->setActiveFormationNamesAndUpdatePlots( activeFormationNames()->formationNamesData() ); rigEclipseCase->setActiveFormationNames( activeFormationNames()->formationNamesData() );
} }
else else
{ {
rigEclipseCase->setActiveFormationNamesAndUpdatePlots( nullptr ); rigEclipseCase->setActiveFormationNames( nullptr );
} }
// Update plots based on formations
{
RimProject* project = RiaApplication::instance()->project();
if ( project )
{
if ( project->mainPlotCollection() )
{
project->mainPlotCollection->updatePlotsWithFormations();
}
}
}
std::vector<Rim3dView*> views = this->views(); std::vector<Rim3dView*> views = this->views();
for ( Rim3dView* view : views ) for ( Rim3dView* view : views )
{ {
@@ -951,18 +964,6 @@ double RimEclipseCase::characteristicCellSize() const
return 10.0; return 10.0;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseCase::setFormationNames( RimFormationNames* formationNames )
{
activeFormationNames = formationNames;
if ( m_rigEclipseCase.notNull() && formationNames != nullptr )
{
m_rigEclipseCase->setActiveFormationNamesAndUpdatePlots( formationNames->formationNamesData() );
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -117,8 +117,6 @@ public:
double characteristicCellSize() const override; double characteristicCellSize() const override;
void setFormationNames( RimFormationNames* formationNames ) override;
std::set<QString> sortedSimWellNames() const; std::set<QString> sortedSimWellNames() const;
protected: protected:
@@ -322,7 +322,7 @@ void RimEclipseInputCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
uiOrdering.add( &m_additionalFiles ); uiOrdering.add( &m_additionalFiles );
auto group = uiOrdering.addNewGroup( "Case Options" ); auto group = uiOrdering.addNewGroup( "Case Options" );
group->add( &activeFormationNames ); group->add( &m_activeFormationNames );
group->add( &m_flipXAxis ); group->add( &m_flipXAxis );
group->add( &m_flipYAxis ); group->add( &m_flipYAxis );
} }
@@ -618,7 +618,7 @@ void RimEclipseResultCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd
uiOrdering.add( &m_unitSystem ); uiOrdering.add( &m_unitSystem );
auto group = uiOrdering.addNewGroup( "Case Options" ); auto group = uiOrdering.addNewGroup( "Case Options" );
group->add( &activeFormationNames ); group->add( &m_activeFormationNames );
group->add( &m_flipXAxis ); group->add( &m_flipXAxis );
group->add( &m_flipYAxis ); group->add( &m_flipYAxis );
@@ -134,7 +134,7 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase()
// These does not work properly for statistics case, so hide for now // These does not work properly for statistics case, so hide for now
m_flipXAxis.uiCapability()->setUiHidden( true ); m_flipXAxis.uiCapability()->setUiHidden( true );
m_flipYAxis.uiCapability()->setUiHidden( true ); m_flipYAxis.uiCapability()->setUiHidden( true );
activeFormationNames.uiCapability()->setUiHidden( true ); m_activeFormationNames.uiCapability()->setUiHidden( true );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -426,7 +426,7 @@ void RimEclipseStatisticsCase::defineUiOrdering( QString uiConfigName, caf::PdmU
group = uiOrdering.addNewGroup( "Case Options" ); group = uiOrdering.addNewGroup( "Case Options" );
group->add( &m_wellDataSourceCase ); group->add( &m_wellDataSourceCase );
group->add( &activeFormationNames ); group->add( &m_activeFormationNames );
group->add( &m_flipXAxis ); group->add( &m_flipXAxis );
group->add( &m_flipYAxis ); group->add( &m_flipYAxis );
} }
@@ -2076,7 +2076,9 @@ void RimEclipseView::defineAxisLabels( cvf::String* xLabel, cvf::String* yLabel,
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimEclipseView::isUsingFormationNames() const bool RimEclipseView::isUsingFormationNames() const
{ {
if ( ( cellResult()->resultType() == RiaDefines::FORMATION_NAMES ) ) return true; if ( cellResult()->resultType() == RiaDefines::FORMATION_NAMES ) return true;
if ( faultResultSettings()->customFaultResult()->resultType() == RiaDefines::ALLEN_DIAGRAMS ) return true;
return eclipsePropertyFilterCollection()->isUsingFormationNames(); return eclipsePropertyFilterCollection()->isUsingFormationNames();
} }
@@ -479,18 +479,6 @@ double RimGeoMechCase::characteristicCellSize() const
return 10.0; return 10.0;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechCase::setFormationNames( RimFormationNames* formationNames )
{
activeFormationNames = formationNames;
if ( m_geoMechCaseData.notNull() && formationNames != nullptr )
{
m_geoMechCaseData->femPartResults()->setActiveFormationNames( formationNames->formationNamesData() );
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -599,7 +587,7 @@ void RimGeoMechCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
const QVariant& oldValue, const QVariant& oldValue,
const QVariant& newValue ) const QVariant& newValue )
{ {
if ( changedField == &activeFormationNames ) if ( changedField == &m_activeFormationNames )
{ {
updateFormationNamesData(); updateFormationNamesData();
} }
@@ -821,7 +809,7 @@ void RimGeoMechCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
uiOrdering.add( &m_caseFileName ); uiOrdering.add( &m_caseFileName );
caf::PdmUiGroup* caseGroup = uiOrdering.addNewGroup( "Case Options" ); caf::PdmUiGroup* caseGroup = uiOrdering.addNewGroup( "Case Options" );
caseGroup->add( &activeFormationNames ); caseGroup->add( &m_activeFormationNames );
caseGroup->add( &m_cohesion ); caseGroup->add( &m_cohesion );
caseGroup->add( &m_frictionAngleDeg ); caseGroup->add( &m_frictionAngleDeg );
@@ -80,8 +80,6 @@ public:
double characteristicCellSize() const override; double characteristicCellSize() const override;
void setFormationNames( RimFormationNames* formationNames ) override;
void addElementPropertyFiles( const std::vector<caf::FilePath>& filenames ); void addElementPropertyFiles( const std::vector<caf::FilePath>& filenames );
double cohesion() const; double cohesion() const;
@@ -2843,44 +2843,44 @@ void RigCaseCellResultsData::setActiveFormationNames( RigFormationNames* activeF
{ {
fnData->at( cIdx ) = HUGE_VAL; fnData->at( cIdx ) = HUGE_VAL;
} }
return;
} }
else
size_t localCellCount = m_ownerMainGrid->cellCount();
for ( size_t cIdx = 0; cIdx < localCellCount; ++cIdx )
{ {
size_t i( cvf::UNDEFINED_SIZE_T ), j( cvf::UNDEFINED_SIZE_T ), k( cvf::UNDEFINED_SIZE_T ); size_t localCellCount = m_ownerMainGrid->cellCount();
for ( size_t cIdx = 0; cIdx < localCellCount; ++cIdx )
if ( !m_ownerMainGrid->ijkFromCellIndex( cIdx, &i, &j, &k ) ) continue;
int formNameIdx = activeFormationNames->formationIndexFromKLayerIdx( k );
if ( formNameIdx != -1 )
{ {
fnData->at( cIdx ) = formNameIdx; size_t i( cvf::UNDEFINED_SIZE_T ), j( cvf::UNDEFINED_SIZE_T ), k( cvf::UNDEFINED_SIZE_T );
if ( !m_ownerMainGrid->ijkFromCellIndex( cIdx, &i, &j, &k ) ) continue;
int formNameIdx = activeFormationNames->formationIndexFromKLayerIdx( k );
if ( formNameIdx != -1 )
{
fnData->at( cIdx ) = formNameIdx;
}
else
{
fnData->at( cIdx ) = HUGE_VAL;
}
} }
else
for ( size_t cIdx = localCellCount; cIdx < totalGlobCellCount; ++cIdx )
{ {
fnData->at( cIdx ) = HUGE_VAL; size_t mgrdCellIdx = m_ownerMainGrid->globalCellArray()[cIdx].mainGridCellIndex();
}
}
for ( size_t cIdx = localCellCount; cIdx < totalGlobCellCount; ++cIdx ) size_t i( cvf::UNDEFINED_SIZE_T ), j( cvf::UNDEFINED_SIZE_T ), k( cvf::UNDEFINED_SIZE_T );
{
size_t mgrdCellIdx = m_ownerMainGrid->globalCellArray()[cIdx].mainGridCellIndex();
size_t i( cvf::UNDEFINED_SIZE_T ), j( cvf::UNDEFINED_SIZE_T ), k( cvf::UNDEFINED_SIZE_T ); if ( !m_ownerMainGrid->ijkFromCellIndex( mgrdCellIdx, &i, &j, &k ) ) continue;
if ( !m_ownerMainGrid->ijkFromCellIndex( mgrdCellIdx, &i, &j, &k ) ) continue; int formNameIdx = activeFormationNames->formationIndexFromKLayerIdx( k );
if ( formNameIdx != -1 )
int formNameIdx = activeFormationNames->formationIndexFromKLayerIdx( k ); {
if ( formNameIdx != -1 ) fnData->at( cIdx ) = formNameIdx;
{ }
fnData->at( cIdx ) = formNameIdx; else
} {
else fnData->at( cIdx ) = HUGE_VAL;
{ }
fnData->at( cIdx ) = HUGE_VAL;
} }
} }
@@ -3047,7 +3047,11 @@ void RigCaseCellResultsData::computeAllenResults( RigCaseCellResultsData* cellRe
val = 0.0; val = 0.0;
} }
size_t formationCount = cellResultsData->activeFormationNames()->formationNames().size(); size_t formationCount = 0;
if ( cellResultsData->activeFormationNames() )
{
formationCount = cellResultsData->activeFormationNames()->formationNames().size();
}
const std::vector<RigConnection>& nncConnections = mainGrid->nncData()->connections(); const std::vector<RigConnection>& nncConnections = mainGrid->nncData()->connections();
@@ -36,10 +36,6 @@
#include "RigVirtualPerforationTransmissibilities.h" #include "RigVirtualPerforationTransmissibilities.h"
#include "RigWellPath.h" #include "RigWellPath.h"
#include "RimFlowPlotCollection.h"
#include "RimMainPlotCollection.h"
#include "RimProject.h"
#include <QDebug> #include <QDebug>
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -707,23 +703,6 @@ void RigEclipseCaseData::setActiveFormationNames( RigFormationNames* activeForma
m_matrixModelResults->setActiveFormationNames( activeFormationNames ); m_matrixModelResults->setActiveFormationNames( activeFormationNames );
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseCaseData::setActiveFormationNamesAndUpdatePlots( RigFormationNames* activeFormationNames )
{
setActiveFormationNames( activeFormationNames );
RimProject* project = RiaApplication::instance()->project();
if ( project )
{
if ( project->mainPlotCollection() )
{
project->mainPlotCollection->updatePlotsWithFormations();
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -90,7 +90,6 @@ public:
bool hasFractureResults() const; bool hasFractureResults() const;
void setActiveFormationNames( RigFormationNames* activeFormationNames ); void setActiveFormationNames( RigFormationNames* activeFormationNames );
void setActiveFormationNamesAndUpdatePlots( RigFormationNames* activeFormationNames );
const RigFormationNames* activeFormationNames() const; const RigFormationNames* activeFormationNames() const;
const std::vector<QString> formationNames() const; const std::vector<QString> formationNames() const;
RigAllenDiagramData* allenDiagramData(); RigAllenDiagramData* allenDiagramData();