#5547 Derived Summary Case : Allow missing data for either of the two source cases

This commit is contained in:
Magne Sjaastad
2020-02-13 11:16:13 +01:00
parent fb1be5b84b
commit 54bb752682

View File

@@ -142,13 +142,37 @@ void RimDerivedSummaryCase::calculate( const RifEclipseSummaryAddress& address )
RifSummaryReaderInterface* reader2 = m_summaryCase2 ? m_summaryCase2->summaryReader() : nullptr;
if ( !reader1 || !reader2 ) return;
if ( !reader1->hasAddress( address ) || !reader2->hasAddress( address ) )
if ( !reader1->hasAddress( address ) && !reader2->hasAddress( address ) )
{
std::string text = address.uiText();
return;
}
else if ( reader1->hasAddress( address ) && !reader2->hasAddress( address ) )
{
std::vector<double> summaryValues;
reader1->values( address, &summaryValues );
RiaLogging::warning(
"Derived Ensemble : At least one of the ensembles does not contain the summary address : " +
QString::fromStdString( text ) );
auto& dataItem = m_dataCache[address];
dataItem.first = reader1->timeSteps( address );
dataItem.second = summaryValues;
return;
}
else if ( !reader1->hasAddress( address ) && reader2->hasAddress( address ) )
{
std::vector<double> summaryValues;
reader2->values( address, &summaryValues );
if ( m_operator() == DerivedSummaryOperator::DERIVED_OPERATOR_SUB )
{
for ( auto& v : summaryValues )
{
v = -v;
}
}
auto& dataItem = m_dataCache[address];
dataItem.first = reader2->timeSteps( address );
dataItem.second = summaryValues;
return;
}