Add derived summary case (#5496)

* #5488 Derived Summary Case : Refactor ensemble summary case

- Refactor ensemble summary case to be able to us as standalone derived summary case
- rename to RimDerivedSummaryCase
- allow negative values in well disk visualization

* #5488 Derived Summary Case : Add feature to create derived case
* #5487 Well Disks : Add scaling factor
This commit is contained in:
Magne Sjaastad
2020-02-10 07:13:04 +01:00
committed by GitHub
parent 51991fd4c4
commit dfe6d0b94e
22 changed files with 558 additions and 152 deletions

View File

@@ -18,17 +18,12 @@
#include "RifDerivedEnsembleReader.h"
#include "RimDerivedEnsembleCase.h"
#include "RimDerivedSummaryCase.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<time_t> RifDerivedEnsembleReader::EMPTY_TIME_STEPS_VECTOR;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifDerivedEnsembleReader::RifDerivedEnsembleReader( RimDerivedEnsembleCase* derivedCase,
RifDerivedEnsembleReader::RifDerivedEnsembleReader( RimDerivedSummaryCase* derivedCase,
RifSummaryReaderInterface* sourceSummaryReader1 )
{
CVF_ASSERT( derivedCase );
@@ -48,11 +43,17 @@ RifDerivedEnsembleReader::RifDerivedEnsembleReader( RimDerivedEnsembleCase* d
//--------------------------------------------------------------------------------------------------
const std::vector<time_t>& RifDerivedEnsembleReader::timeSteps( const RifEclipseSummaryAddress& resultAddress ) const
{
if ( !resultAddress.isValid() ) return EMPTY_TIME_STEPS_VECTOR;
if ( !resultAddress.isValid() )
{
static std::vector<time_t> empty;
return empty;
}
if ( m_derivedCase->needsCalculation( resultAddress ) )
{
m_derivedCase->calculate( resultAddress );
}
return m_derivedCase->timeSteps( resultAddress );
}
@@ -90,3 +91,18 @@ RiaEclipseUnitTools::UnitSystem RifDerivedEnsembleReader::unitSystem() const
{
return RiaEclipseUnitTools::UNITS_UNKNOWN;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifDerivedEnsembleReader::updateData( RimSummaryCase* sumCase1, RimSummaryCase* sumCase2 )
{
m_allErrorAddresses.clear();
m_allResultAddresses.clear();
if ( sumCase1 && sumCase1->summaryReader() )
{
m_allErrorAddresses = sumCase1->summaryReader()->allErrorAddresses();
m_allResultAddresses = sumCase1->summaryReader()->allResultAddresses();
}
}

View File

@@ -21,23 +21,24 @@
#include "RifEclipseSummaryAddress.h"
#include "RifSummaryReaderInterface.h"
class RimDerivedEnsembleCase;
class RimDerivedSummaryCase;
class RimSummaryCase;
//==================================================================================================
///
//==================================================================================================
class RifDerivedEnsembleReader : public RifSummaryReaderInterface
{
static const std::vector<time_t> EMPTY_TIME_STEPS_VECTOR;
public:
RifDerivedEnsembleReader( RimDerivedEnsembleCase* derivedCase, RifSummaryReaderInterface* sourceSummaryReader1 );
RifDerivedEnsembleReader( RimDerivedSummaryCase* derivedCase, RifSummaryReaderInterface* sourceSummaryReader1 );
const std::vector<time_t>& timeSteps( const RifEclipseSummaryAddress& resultAddress ) const override;
bool values( const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values ) const override;
std::string unitName( const RifEclipseSummaryAddress& resultAddress ) const override;
RiaEclipseUnitTools::UnitSystem unitSystem() const override;
void updateData( RimSummaryCase* sumCase1, RimSummaryCase* sumCase2 );
private:
RimDerivedEnsembleCase* m_derivedCase;
RimDerivedSummaryCase* m_derivedCase;
};