mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-12 16:32:12 -05:00
#11418 Fix calculation between multiple cases
This commit is contained in:
1 parent
96481d81a8
commit
ae7f29c80f
2 files changed
+19
-21
No files matched your search
@@ -304,7 +304,9 @@ std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
|||||||
auto vars = variables.value();
|
auto vars = variables.value();
|
||||||
substituteVariables( vars, addr );
|
substituteVariables( vars, addr );
|
||||||
|
|
||||||
return calculateResult( m_expression, vars, summaryCase );
|
RimSummaryCase* summaryCaseForVariableSubstitution = m_distributeToAllCases ? summaryCase : nullptr;
|
||||||
|
|
||||||
|
return calculateResult( m_expression, vars, summaryCaseForVariableSubstitution );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -313,7 +315,7 @@ std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
|||||||
std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
||||||
RimSummaryCalculation::calculateResult( const QString& expression,
|
RimSummaryCalculation::calculateResult( const QString& expression,
|
||||||
const std::vector<SummaryCalculationVariable>& variables,
|
const std::vector<SummaryCalculationVariable>& variables,
|
||||||
RimSummaryCase* summaryCase )
|
RimSummaryCase* summaryCaseForSubstitution )
|
||||||
|
|
||||||
{
|
{
|
||||||
QString leftHandSideVariableName = RimSummaryCalculation::findLeftHandSide( expression );
|
QString leftHandSideVariableName = RimSummaryCalculation::findLeftHandSide( expression );
|
||||||
@@ -324,12 +326,13 @@ std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
|||||||
{
|
{
|
||||||
SummaryCalculationVariable v = variables[i];
|
SummaryCalculationVariable v = variables[i];
|
||||||
|
|
||||||
RiaSummaryCurveDefinition curveDef( summaryCase, v.summaryAddress, false );
|
RimSummaryCase* summaryCaseForValues = v.summaryCase;
|
||||||
|
if ( summaryCaseForSubstitution ) summaryCaseForValues = summaryCaseForSubstitution;
|
||||||
|
|
||||||
|
RiaSummaryCurveDefinition curveDef( summaryCaseForValues, v.summaryAddress, false );
|
||||||
|
|
||||||
std::vector<double> curveValues = RiaSummaryCurveDefinition::resultValues( curveDef );
|
std::vector<double> curveValues = RiaSummaryCurveDefinition::resultValues( curveDef );
|
||||||
|
|
||||||
std::vector<time_t> curveTimeSteps = RiaSummaryCurveDefinition::timeSteps( curveDef );
|
std::vector<time_t> curveTimeSteps = RiaSummaryCurveDefinition::timeSteps( curveDef );
|
||||||
|
|
||||||
if ( !curveTimeSteps.empty() && !curveValues.empty() )
|
if ( !curveTimeSteps.empty() && !curveValues.empty() )
|
||||||
{
|
{
|
||||||
timeHistoryCurveMerger.addCurveData( curveTimeSteps, curveValues );
|
timeHistoryCurveMerger.addCurveData( curveTimeSteps, curveValues );
|
||||||
@@ -431,26 +434,19 @@ void RimSummaryCalculation::removeDependentObjects()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RimSummaryCalculationAddress> RimSummaryCalculation::allAddressesForSummaryCase( RimSummaryCase* summaryCase ) const
|
std::vector<RimSummaryCalculationAddress> RimSummaryCalculation::allAddressesForSummaryCase( RimSummaryCase* summaryCase ) const
|
||||||
{
|
{
|
||||||
if ( !m_distributeToAllCases )
|
|
||||||
{
|
|
||||||
for ( auto& v : m_variables )
|
|
||||||
{
|
|
||||||
if ( auto variable = dynamic_cast<RimSummaryCalculationVariable*>( v.p() ) )
|
|
||||||
{
|
|
||||||
if ( variable->summaryCase() != summaryCase )
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto variables = getVariables();
|
auto variables = getVariables();
|
||||||
if ( variables && !variables.value().empty() )
|
if ( variables && !variables.value().empty() )
|
||||||
{
|
{
|
||||||
|
auto firstVariable = variables.value().front();
|
||||||
|
|
||||||
|
if ( !m_distributeToAllCases && ( firstVariable.summaryCase != summaryCase ) )
|
||||||
|
{
|
||||||
|
// The calculation is only displayed in the summary case matching the first variable
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
// The first variable is the substituable one. Use its category to
|
// The first variable is the substituable one. Use its category to
|
||||||
// provide all available addresses.
|
// provide all available addresses.
|
||||||
auto firstVariable = variables.value().front();
|
|
||||||
if ( m_distributeToOtherItems )
|
if ( m_distributeToOtherItems )
|
||||||
{
|
{
|
||||||
auto allResultAddresses = summaryCase->summaryReader()->allResultAddresses();
|
auto allResultAddresses = summaryCase->summaryReader()->allResultAddresses();
|
||||||
|
|||||||
@@ -76,7 +76,9 @@ protected:
|
|||||||
RimSummaryCalculationVariable* createVariable() override;
|
RimSummaryCalculationVariable* createVariable() override;
|
||||||
|
|
||||||
static std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
static std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
||||||
calculateResult( const QString& expression, const std::vector<SummaryCalculationVariable>& variables, RimSummaryCase* summaryCase );
|
calculateResult( const QString& expression,
|
||||||
|
const std::vector<SummaryCalculationVariable>& variables,
|
||||||
|
RimSummaryCase* summaryCaseForSubstitution );
|
||||||
|
|
||||||
std::optional<std::pair<std::vector<double>, std::vector<time_t>>> calculateWithSubstitutions( RimSummaryCase* summaryCase,
|
std::optional<std::pair<std::vector<double>, std::vector<time_t>>> calculateWithSubstitutions( RimSummaryCase* summaryCase,
|
||||||
const RifEclipseSummaryAddress& addr );
|
const RifEclipseSummaryAddress& addr );
|
||||||
|
|||||||
Reference in new issue
Block a user