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() )
{
rimCase->setFormationNames( formationNames );
rimCase->updateFormationNamesData();
rimCase->updateConnectedEditors();
foundCase = true;
break;
@@ -111,6 +111,7 @@ void RicImportFormationNamesFeature::onActionTriggered( bool isChecked )
if ( ownerCase )
{
ownerCase->setFormationNames( formationName );
ownerCase->updateFormationNamesData();
ownerCase->updateConnectedEditors();
}
}
+19 -3
View File
@@ -51,7 +51,7 @@ RimCase::RimCase()
caseId.uiCapability()->setUiReadOnly( true );
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", "", "", "" );
m_timeStepFilter.uiCapability()->setUiHidden( true );
@@ -122,7 +122,15 @@ cvf::Vec3d RimCase::displayModelOffset() const
//--------------------------------------------------------------------------------------------------
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;
if ( fieldNeedingOptions == &activeFormationNames )
if ( fieldNeedingOptions == &m_activeFormationNames )
{
RimProject* proj = RiaApplication::instance()->project();
if ( proj && proj->activeOilField() && proj->activeOilField()->formationNamesCollection() )
@@ -186,3 +194,11 @@ void RimCase::initAfterRead()
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<QString> caseUserDescription;
caf::PdmPtrField<RimFormationNames*> activeFormationNames;
std::vector<Rim3dView*> views() const;
std::vector<RimGridView*> gridViews() const;
@@ -69,8 +67,9 @@ public:
virtual cvf::Vec3d displayModelOffset() const;
virtual void updateFormationNamesData() = 0;
virtual void setFormationNames( RimFormationNames* formationNames );
void setFormationNames( RimFormationNames* formationNames );
RimFormationNames* activeFormationNames() const;
virtual void updateFormationNamesData() = 0;
virtual double characteristicCellSize() const = 0;
@@ -85,14 +84,12 @@ protected:
void initAfterRead() override;
private:
caf::PdmFieldHandle* userDescriptionField() override
{
return &caseUserDescription;
}
caf::PdmFieldHandle* userDescriptionField() override;
protected:
caf::PdmChildField<RimTimeStepFilter*> m_timeStepFilter;
caf::PdmChildField<Rim2dIntersectionViewCollection*> m_2dIntersectionViewCollection;
caf::PdmPtrField<RimFormationNames*> m_activeFormationNames;
private:
bool m_isInActiveDestruction;
@@ -464,7 +464,7 @@ void RimEclipseCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
}
}
}
else if ( changedField == &activeFormationNames )
else if ( changedField == &m_activeFormationNames )
{
updateFormationNamesData();
}
@@ -480,12 +480,25 @@ void RimEclipseCase::updateFormationNamesData()
{
if ( activeFormationNames() )
{
rigEclipseCase->setActiveFormationNamesAndUpdatePlots( activeFormationNames()->formationNamesData() );
rigEclipseCase->setActiveFormationNames( activeFormationNames()->formationNamesData() );
}
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();
for ( Rim3dView* view : views )
{
@@ -951,18 +964,6 @@ double RimEclipseCase::characteristicCellSize() const
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;
void setFormationNames( RimFormationNames* formationNames ) override;
std::set<QString> sortedSimWellNames() const;
protected:
@@ -322,7 +322,7 @@ void RimEclipseInputCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
uiOrdering.add( &m_additionalFiles );
auto group = uiOrdering.addNewGroup( "Case Options" );
group->add( &activeFormationNames );
group->add( &m_activeFormationNames );
group->add( &m_flipXAxis );
group->add( &m_flipYAxis );
}
@@ -618,7 +618,7 @@ void RimEclipseResultCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd
uiOrdering.add( &m_unitSystem );
auto group = uiOrdering.addNewGroup( "Case Options" );
group->add( &activeFormationNames );
group->add( &m_activeFormationNames );
group->add( &m_flipXAxis );
group->add( &m_flipYAxis );
@@ -134,7 +134,7 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase()
// These does not work properly for statistics case, so hide for now
m_flipXAxis.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->add( &m_wellDataSourceCase );
group->add( &activeFormationNames );
group->add( &m_activeFormationNames );
group->add( &m_flipXAxis );
group->add( &m_flipYAxis );
}
@@ -2076,7 +2076,9 @@ void RimEclipseView::defineAxisLabels( cvf::String* xLabel, cvf::String* yLabel,
//--------------------------------------------------------------------------------------------------
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();
}
@@ -479,18 +479,6 @@ double RimGeoMechCase::characteristicCellSize() const
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& newValue )
{
if ( changedField == &activeFormationNames )
if ( changedField == &m_activeFormationNames )
{
updateFormationNamesData();
}
@@ -821,7 +809,7 @@ void RimGeoMechCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
uiOrdering.add( &m_caseFileName );
caf::PdmUiGroup* caseGroup = uiOrdering.addNewGroup( "Case Options" );
caseGroup->add( &activeFormationNames );
caseGroup->add( &m_activeFormationNames );
caseGroup->add( &m_cohesion );
caseGroup->add( &m_frictionAngleDeg );
@@ -80,8 +80,6 @@ public:
double characteristicCellSize() const override;
void setFormationNames( RimFormationNames* formationNames ) override;
void addElementPropertyFiles( const std::vector<caf::FilePath>& filenames );
double cohesion() const;
@@ -2843,44 +2843,44 @@ void RigCaseCellResultsData::setActiveFormationNames( RigFormationNames* activeF
{
fnData->at( cIdx ) = HUGE_VAL;
}
return;
}
size_t localCellCount = m_ownerMainGrid->cellCount();
for ( size_t cIdx = 0; cIdx < localCellCount; ++cIdx )
else
{
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 )
size_t localCellCount = m_ownerMainGrid->cellCount();
for ( size_t cIdx = 0; cIdx < localCellCount; ++cIdx )
{
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 mgrdCellIdx = m_ownerMainGrid->globalCellArray()[cIdx].mainGridCellIndex();
size_t i( cvf::UNDEFINED_SIZE_T ), j( cvf::UNDEFINED_SIZE_T ), k( cvf::UNDEFINED_SIZE_T );
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 )
{
fnData->at( cIdx ) = formNameIdx;
}
else
{
fnData->at( cIdx ) = HUGE_VAL;
int formNameIdx = activeFormationNames->formationIndexFromKLayerIdx( k );
if ( formNameIdx != -1 )
{
fnData->at( cIdx ) = formNameIdx;
}
else
{
fnData->at( cIdx ) = HUGE_VAL;
}
}
}
@@ -3047,7 +3047,11 @@ void RigCaseCellResultsData::computeAllenResults( RigCaseCellResultsData* cellRe
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();
@@ -36,10 +36,6 @@
#include "RigVirtualPerforationTransmissibilities.h"
#include "RigWellPath.h"
#include "RimFlowPlotCollection.h"
#include "RimMainPlotCollection.h"
#include "RimProject.h"
#include <QDebug>
//--------------------------------------------------------------------------------------------------
@@ -707,23 +703,6 @@ void RigEclipseCaseData::setActiveFormationNames( RigFormationNames* activeForma
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;
void setActiveFormationNames( RigFormationNames* activeFormationNames );
void setActiveFormationNamesAndUpdatePlots( RigFormationNames* activeFormationNames );
const RigFormationNames* activeFormationNames() const;
const std::vector<QString> formationNames() const;
RigAllenDiagramData* allenDiagramData();