#7074 Derived parameters not updated when changing input parameters

This commit is contained in:
Magne Sjaastad
2021-01-31 18:24:34 +01:00
parent acc9afdb71
commit 55cbe69222
2 changed files with 39 additions and 19 deletions

View File

@@ -332,16 +332,20 @@ void RigFemPartResultsCollection::setCalculationParameters( double cohesion, dou
m_cohesion = cohesion;
m_frictionAngleRad = frictionAngleRad;
// Todo, delete all dependent results
this->deleteResult( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "SFI", RigFemResultAddress::allTimeLapsesValue() ) );
this->deleteResult(
RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "SFI", RigFemResultAddress::allTimeLapsesValue() ) );
this->deleteResult( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "DSM", RigFemResultAddress::allTimeLapsesValue() ) );
this->deleteResult(
RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "DSM", RigFemResultAddress::allTimeLapsesValue() ) );
this->deleteResult( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "FOS", RigFemResultAddress::allTimeLapsesValue() ) );
this->deleteResult(
RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "FOS", RigFemResultAddress::allTimeLapsesValue() ) );
std::vector<RigFemResultAddress> dependentResults;
dependentResults.push_back( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "SFI" ) );
dependentResults.push_back( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "DSM" ) );
dependentResults.push_back( RigFemResultAddress( RIG_ELEMENT_NODAL, "SE", "FOS" ) );
dependentResults.push_back( RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "SFI" ) );
dependentResults.push_back( RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "DSM" ) );
dependentResults.push_back( RigFemResultAddress( RIG_INTEGRATION_POINT, "SE", "FOS" ) );
dependentResults.push_back( RigFemResultAddress( RIG_ELEMENT_NODAL_FACE, "SE", "FAULTMOB" ) );
dependentResults.push_back( RigFemResultAddress( RIG_ELEMENT_NODAL_FACE, "SE", "PCRIT" ) );
deleteResultForAllTimeSteps( dependentResults );
}
//--------------------------------------------------------------------------------------------------
@@ -353,18 +357,16 @@ void RigFemPartResultsCollection::setBiotCoefficientParameters( double biotFixed
m_biotResultAddress = biotResultAddress;
// Invalidate all results which depends on biot coefficient (directly or indirectly)
std::vector<RigFemResultAddress> dependentResults;
for ( auto elementType : { RIG_ELEMENT_NODAL, RIG_INTEGRATION_POINT } )
{
deleteResult(
RigFemResultAddress( elementType, "COMPRESSIBILITY", "PORE", RigFemResultAddress::allTimeLapsesValue() ) );
deleteResult(
RigFemResultAddress( elementType, "COMPRESSIBILITY", "VERTICAL", RigFemResultAddress::allTimeLapsesValue() ) );
deleteResult( RigFemResultAddress( elementType,
"COMPRESSIBILITY",
"VERTICAL-RATIO",
RigFemResultAddress::allTimeLapsesValue() ) );
dependentResults.push_back( RigFemResultAddress( elementType, "COMPRESSIBILITY", "PORE" ) );
dependentResults.push_back( RigFemResultAddress( elementType, "COMPRESSIBILITY", "VERTICAL" ) );
dependentResults.push_back( RigFemResultAddress( elementType, "COMPRESSIBILITY", "VERTICAL-RATIO" ) );
}
deleteResultForAllTimeSteps( dependentResults );
// Depends on COMRESSIBILITY.PORE which depends on biot coefficient
std::set<RigFemResultAddress> initPermResults = initialPermeabilityDependentResults();
for ( auto result : initPermResults )
@@ -987,6 +989,21 @@ void RigFemPartResultsCollection::deleteResult( const RigFemResultAddress& resVa
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPartResultsCollection::deleteResultForAllTimeSteps( const std::vector<RigFemResultAddress>& addresses )
{
for ( const auto& res : addresses )
{
auto resToDelete = res;
resToDelete.timeLapseBaseFrameIdx = RigFemResultAddress::allTimeLapsesValue();
deleteResult( resToDelete );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -117,8 +117,11 @@ public:
std::map<std::string, std::vector<std::string>> scalarFieldAndComponentNames( RigFemResultPosEnum resPos );
std::vector<std::string> filteredStepNames() const;
bool assertResultsLoaded( const RigFemResultAddress& resVarAddr );
void deleteResult( const RigFemResultAddress& resVarAddr );
void deleteResult( const RigFemResultAddress& resVarAddr );
void deleteResultForAllTimeSteps( const std::vector<RigFemResultAddress>& addresses );
void deleteResultFrame( const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex );
std::vector<RigFemResultAddress> loadedResults() const;
const std::vector<float>& resultValues( const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex );