mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#7074 Derived parameters not updated when changing input parameters
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@@ -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 );
|
||||
|
Reference in New Issue
Block a user