mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-20 11:48:35 -06:00
#3958 Refactoring: Moved code into CaseCellResultsData.
Made methods private
This commit is contained in:
parent
ccfee8f34a
commit
8e16d3ff20
@ -230,47 +230,11 @@ void RimIdenticalGridCaseGroup::loadMainCaseAndActiveCellInfo()
|
||||
computeUnionOfActiveCells();
|
||||
}
|
||||
|
||||
// Action B : Copy result meta data from main case to all other cases in grid case group
|
||||
|
||||
// This code was originally part of RimStatisticsCaseEvaluator, but moved here to be a general solution
|
||||
// for all cases
|
||||
RigCaseCellResultsData::copyResultsMetaDataFromMainCase(rigCaseData,
|
||||
poroModel,
|
||||
caseCollection->reservoirs.childObjects());
|
||||
|
||||
{
|
||||
std::vector<RigEclipseTimeStepInfo> timeStepInfos = rigCaseData->results(poroModel)->timeStepInfos(RigEclipseResultAddress(0));
|
||||
|
||||
const std::vector<RigEclipseResultInfo> resultInfos = rigCaseData->results(poroModel)->infoForEachResultIndex();
|
||||
|
||||
for (size_t i = 1; i < caseCollection()->reservoirs.size(); i++)
|
||||
{
|
||||
RimEclipseResultCase* rimReservoir = dynamic_cast<RimEclipseResultCase*>(caseCollection()->reservoirs[i]);
|
||||
if (!rimReservoir) continue; // Input reservoir
|
||||
|
||||
RigCaseCellResultsData* cellResultsStorage = rimReservoir->results(poroModel);
|
||||
|
||||
for (size_t resIdx = 0; resIdx < resultInfos.size(); resIdx++)
|
||||
{
|
||||
RiaDefines::ResultCatType resultType = resultInfos[resIdx].resultType();
|
||||
QString resultName = resultInfos[resIdx].resultName();
|
||||
bool needsToBeStored = resultInfos[resIdx].needsToBeStored();
|
||||
bool mustBeCalculated = resultInfos[resIdx].mustBeCalculated();
|
||||
|
||||
size_t scalarResultIndex = cellResultsStorage->findScalarResultIndex(resultType, resultName);
|
||||
if (scalarResultIndex == cvf::UNDEFINED_SIZE_T)
|
||||
{
|
||||
scalarResultIndex = cellResultsStorage->findOrCreateScalarResultIndex(resultType, resultName, needsToBeStored);
|
||||
|
||||
if (mustBeCalculated) cellResultsStorage->setMustBeCalculated(scalarResultIndex);
|
||||
|
||||
cellResultsStorage->setTimeStepInfos(RigEclipseResultAddress(scalarResultIndex), timeStepInfos);
|
||||
|
||||
std::vector< std::vector<double> >& dataValues = cellResultsStorage->cellScalarResults(RigEclipseResultAddress(scalarResultIndex));
|
||||
dataValues.resize(timeStepInfos.size());
|
||||
}
|
||||
}
|
||||
|
||||
cellResultsStorage->createPlaceholderResultEntries();
|
||||
}
|
||||
}
|
||||
|
||||
// "Load" the statistical cases
|
||||
|
||||
|
@ -2674,3 +2674,54 @@ RigStatisticsDataCache* RigCaseCellResultsData::statistics(const RigEclipseResul
|
||||
{
|
||||
return m_statisticsDataCache[resVarAddr.scalarResultIndex].p();
|
||||
}
|
||||
|
||||
|
||||
#include "RimEclipseResultCase.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Copy result meta data from main case to all other cases in grid case group
|
||||
/// This code was originally part of RimStatisticsCaseEvaluator, but moved here to be a general solution
|
||||
/// for all cases
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigCaseCellResultsData::copyResultsMetaDataFromMainCase(RigEclipseCaseData* mainCaseResultsData,
|
||||
RiaDefines::PorosityModelType poroModel,
|
||||
std::vector<RimEclipseCase*> destinationCases)
|
||||
{
|
||||
std::vector<RigEclipseTimeStepInfo> timeStepInfos = mainCaseResultsData->results(poroModel)->timeStepInfos(RigEclipseResultAddress(0));
|
||||
|
||||
const std::vector<RigEclipseResultInfo> resultInfos = mainCaseResultsData->results(poroModel)->infoForEachResultIndex();
|
||||
|
||||
for ( size_t i = 0; i < destinationCases.size(); i++ )
|
||||
{
|
||||
RimEclipseResultCase* rimReservoir = dynamic_cast<RimEclipseResultCase*>(destinationCases[i]);
|
||||
|
||||
if ( !rimReservoir ) continue; // Input reservoir
|
||||
if (mainCaseResultsData == rimReservoir->eclipseCaseData()) continue; // Do not copy ontop of itself
|
||||
|
||||
RigCaseCellResultsData* cellResultsStorage = rimReservoir->results(poroModel);
|
||||
|
||||
for ( size_t resIdx = 0; resIdx < resultInfos.size(); resIdx++ )
|
||||
{
|
||||
RiaDefines::ResultCatType resultType = resultInfos[resIdx].resultType();
|
||||
QString resultName = resultInfos[resIdx].resultName();
|
||||
bool needsToBeStored = resultInfos[resIdx].needsToBeStored();
|
||||
bool mustBeCalculated = resultInfos[resIdx].mustBeCalculated();
|
||||
|
||||
size_t scalarResultIndex = cellResultsStorage->findScalarResultIndex(resultType, resultName);
|
||||
if ( scalarResultIndex == cvf::UNDEFINED_SIZE_T )
|
||||
{
|
||||
scalarResultIndex = cellResultsStorage->findOrCreateScalarResultIndex(resultType, resultName, needsToBeStored);
|
||||
|
||||
if ( mustBeCalculated ) cellResultsStorage->setMustBeCalculated(scalarResultIndex);
|
||||
|
||||
cellResultsStorage->setTimeStepInfos(RigEclipseResultAddress(scalarResultIndex), timeStepInfos);
|
||||
|
||||
std::vector< std::vector<double> >& dataValues = cellResultsStorage->cellScalarResults(RigEclipseResultAddress(scalarResultIndex));
|
||||
dataValues.resize(timeStepInfos.size());
|
||||
}
|
||||
}
|
||||
|
||||
cellResultsStorage->createPlaceholderResultEntries();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "RiaDefines.h"
|
||||
#include "RiaPorosityModel.h"
|
||||
|
||||
#include "cvfCollection.h"
|
||||
|
||||
@ -29,6 +30,7 @@
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
|
||||
|
||||
class RifReaderInterface;
|
||||
class RigActiveCellInfo;
|
||||
class RigMainGrid;
|
||||
@ -37,6 +39,8 @@ class RigStatisticsDataCache;
|
||||
class RigEclipseTimeStepInfo;
|
||||
class RigEclipseCaseData;
|
||||
|
||||
class RimEclipseCase;
|
||||
|
||||
class RigEclipseResultAddress
|
||||
{
|
||||
public:
|
||||
@ -156,12 +160,16 @@ public:
|
||||
RigCaseCellResultsData* gridCellResults,
|
||||
QString porvResultName,
|
||||
std::vector<double> &activeCellsResultsTempContainer);
|
||||
static void copyResultsMetaDataFromMainCase(RigEclipseCaseData* mainCaseResultsData,
|
||||
RiaDefines::PorosityModelType poroModel,
|
||||
std::vector<RimEclipseCase*> destinationCases);
|
||||
|
||||
public:
|
||||
const std::vector<RigEclipseResultInfo>& infoForEachResultIndex();
|
||||
|
||||
private:
|
||||
bool mustBeCalculated(size_t scalarResultIndex) const;
|
||||
void setMustBeCalculated(size_t scalarResultIndex);
|
||||
public:
|
||||
void eraseAllSourSimData();
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user