#6169 Element property table: invalidate Geo Mech results on changes in table.

This commit is contained in:
Kristian Bendiksen 2020-07-08 15:45:50 +02:00
parent 1e06f6ae25
commit a88191be33
5 changed files with 39 additions and 3 deletions

View File

@ -101,3 +101,11 @@ std::vector<RigFemResultAddress> RigFemPartResults::loadedResults() const
} }
return currentResults; return currentResults;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPartResults::deleteAllScalarResults()
{
resultSets.clear();
}

View File

@ -42,6 +42,7 @@ public:
RigFemScalarResultFrames* createScalarResult( const RigFemResultAddress& resVarAddr ); RigFemScalarResultFrames* createScalarResult( const RigFemResultAddress& resVarAddr );
RigFemScalarResultFrames* findScalarResult( const RigFemResultAddress& resVarAddr ); RigFemScalarResultFrames* findScalarResult( const RigFemResultAddress& resVarAddr );
void deleteScalarResult( const RigFemResultAddress& resVarAddr ); void deleteScalarResult( const RigFemResultAddress& resVarAddr );
void deleteAllScalarResults();
std::vector<RigFemResultAddress> loadedResults() const; std::vector<RigFemResultAddress> loadedResults() const;
private: private:

View File

@ -599,6 +599,17 @@ RigFemScalarResultFrames* RigFemPartResultsCollection::createScalarResult( int
return m_femPartResults[partIndex]->createScalarResult( resVarAddr ); return m_femPartResults[partIndex]->createScalarResult( resVarAddr );
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPartResultsCollection::deleteAllScalarResults()
{
for ( cvf::ref<RigFemPartResults> results : m_femPartResults )
{
results->deleteAllScalarResults();
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -147,6 +147,7 @@ public:
RigFemScalarResultFrames* findOrLoadScalarResult( int partIndex, const RigFemResultAddress& resVarAddr ); RigFemScalarResultFrames* findOrLoadScalarResult( int partIndex, const RigFemResultAddress& resVarAddr );
RigFemScalarResultFrames* createScalarResult( int partIndex, const RigFemResultAddress& resVarAddr ); RigFemScalarResultFrames* createScalarResult( int partIndex, const RigFemResultAddress& resVarAddr );
void deleteAllScalarResults();
bool isValidBiotData( const std::vector<float>& biotData, size_t elementCount ) const; bool isValidBiotData( const std::vector<float>& biotData, size_t elementCount ) const;
static std::vector<std::string> getStressComponentNames( bool includeShear = true ); static std::vector<std::string> getStressComponentNames( bool includeShear = true );

View File

@ -609,6 +609,7 @@ void RimGeoMechCase::addElementPropertyFiles( const std::vector<caf::FilePath>&
if ( m_geoMechCaseData.notNull() ) if ( m_geoMechCaseData.notNull() )
{ {
geoMechData()->femPartResults()->addElementPropertyFiles( newFileNames ); geoMechData()->femPartResults()->addElementPropertyFiles( newFileNames );
geoMechData()->femPartResults()->deleteAllScalarResults();
} }
} }
@ -747,9 +748,9 @@ void RimGeoMechCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
updateFormationNamesData(); updateFormationNamesData();
} }
RigGeoMechCaseData* rigCaseData = geoMechData();
if ( changedField == &m_cohesion || changedField == &m_frictionAngleDeg ) if ( changedField == &m_cohesion || changedField == &m_frictionAngleDeg )
{ {
RigGeoMechCaseData* rigCaseData = geoMechData();
if ( rigCaseData && rigCaseData->femPartResults() ) if ( rigCaseData && rigCaseData->femPartResults() )
{ {
rigCaseData->femPartResults()->setCalculationParameters( m_cohesion(), rigCaseData->femPartResults()->setCalculationParameters( m_cohesion(),
@ -761,7 +762,6 @@ void RimGeoMechCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
else if ( changedField == &m_biotFixedCoefficient || changedField == &m_biotCoefficientType || else if ( changedField == &m_biotFixedCoefficient || changedField == &m_biotCoefficientType ||
changedField == &m_biotResultAddress ) changedField == &m_biotResultAddress )
{ {
RigGeoMechCaseData* rigCaseData = geoMechData();
if ( rigCaseData && rigCaseData->femPartResults() ) if ( rigCaseData && rigCaseData->femPartResults() )
{ {
if ( m_biotCoefficientType() == RimGeoMechCase::BiotCoefficientType::BIOT_NONE ) if ( m_biotCoefficientType() == RimGeoMechCase::BiotCoefficientType::BIOT_NONE )
@ -810,7 +810,6 @@ void RimGeoMechCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
else if ( changedField == &m_initialPermeabilityFixed || changedField == &m_initialPermeabilityType || else if ( changedField == &m_initialPermeabilityFixed || changedField == &m_initialPermeabilityType ||
changedField == &m_initialPermeabilityResultAddress || changedField == &m_permeabilityExponent ) changedField == &m_initialPermeabilityResultAddress || changedField == &m_permeabilityExponent )
{ {
RigGeoMechCaseData* rigCaseData = geoMechData();
if ( rigCaseData && rigCaseData->femPartResults() ) if ( rigCaseData && rigCaseData->femPartResults() )
{ {
if ( m_initialPermeabilityType() == RimGeoMechCase::InitialPermeabilityType::INITIAL_PERMEABILITY_FIXED ) if ( m_initialPermeabilityType() == RimGeoMechCase::InitialPermeabilityType::INITIAL_PERMEABILITY_FIXED )
@ -861,19 +860,34 @@ void RimGeoMechCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
{ {
m_reloadElementPropertyFileCommand = false; m_reloadElementPropertyFileCommand = false;
reloadSelectedElementPropertyFiles(); reloadSelectedElementPropertyFiles();
if ( rigCaseData && rigCaseData->femPartResults() )
{
rigCaseData->femPartResults()->deleteAllScalarResults();
}
updateConnectedEditors(); updateConnectedEditors();
updateConnectedViews();
} }
else if ( changedField == &m_closeElementPropertyFileCommand ) else if ( changedField == &m_closeElementPropertyFileCommand )
{ {
m_closeElementPropertyFileCommand = false; m_closeElementPropertyFileCommand = false;
closeSelectedElementPropertyFiles(); closeSelectedElementPropertyFiles();
if ( rigCaseData && rigCaseData->femPartResults() )
{
rigCaseData->femPartResults()->deleteAllScalarResults();
}
updateConnectedEditors(); updateConnectedEditors();
updateConnectedViews();
} }
else if ( changedField == &m_importElementPropertyFileCommand ) else if ( changedField == &m_importElementPropertyFileCommand )
{ {
m_importElementPropertyFileCommand = false; m_importElementPropertyFileCommand = false;
importElementPropertyFile(); importElementPropertyFile();
if ( rigCaseData && rigCaseData->femPartResults() )
{
rigCaseData->femPartResults()->deleteAllScalarResults();
}
updateConnectedEditors(); updateConnectedEditors();
updateConnectedViews();
} }
} }
@ -1002,6 +1016,7 @@ void RimGeoMechCase::closeSelectedElementPropertyFiles()
if ( m_geoMechCaseData.notNull() ) if ( m_geoMechCaseData.notNull() )
{ {
addressesToDelete = geoMechData()->femPartResults()->removeElementPropertyFiles( filesToClose ); addressesToDelete = geoMechData()->femPartResults()->removeElementPropertyFiles( filesToClose );
geoMechData()->femPartResults()->deleteAllScalarResults();
} }
for ( RimGeoMechView* view : geoMechViews() ) for ( RimGeoMechView* view : geoMechViews() )