mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -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();
|
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
|
RigCaseCellResultsData::copyResultsMetaDataFromMainCase(rigCaseData,
|
||||||
// for all cases
|
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
|
// "Load" the statistical cases
|
||||||
|
|
||||||
|
@ -2674,3 +2674,54 @@ RigStatisticsDataCache* RigCaseCellResultsData::statistics(const RigEclipseResul
|
|||||||
{
|
{
|
||||||
return m_statisticsDataCache[resVarAddr.scalarResultIndex].p();
|
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
|
#pragma once
|
||||||
|
|
||||||
#include "RiaDefines.h"
|
#include "RiaDefines.h"
|
||||||
|
#include "RiaPorosityModel.h"
|
||||||
|
|
||||||
#include "cvfCollection.h"
|
#include "cvfCollection.h"
|
||||||
|
|
||||||
@ -29,6 +30,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
||||||
class RifReaderInterface;
|
class RifReaderInterface;
|
||||||
class RigActiveCellInfo;
|
class RigActiveCellInfo;
|
||||||
class RigMainGrid;
|
class RigMainGrid;
|
||||||
@ -37,6 +39,8 @@ class RigStatisticsDataCache;
|
|||||||
class RigEclipseTimeStepInfo;
|
class RigEclipseTimeStepInfo;
|
||||||
class RigEclipseCaseData;
|
class RigEclipseCaseData;
|
||||||
|
|
||||||
|
class RimEclipseCase;
|
||||||
|
|
||||||
class RigEclipseResultAddress
|
class RigEclipseResultAddress
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -156,12 +160,16 @@ public:
|
|||||||
RigCaseCellResultsData* gridCellResults,
|
RigCaseCellResultsData* gridCellResults,
|
||||||
QString porvResultName,
|
QString porvResultName,
|
||||||
std::vector<double> &activeCellsResultsTempContainer);
|
std::vector<double> &activeCellsResultsTempContainer);
|
||||||
|
static void copyResultsMetaDataFromMainCase(RigEclipseCaseData* mainCaseResultsData,
|
||||||
|
RiaDefines::PorosityModelType poroModel,
|
||||||
|
std::vector<RimEclipseCase*> destinationCases);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const std::vector<RigEclipseResultInfo>& infoForEachResultIndex();
|
const std::vector<RigEclipseResultInfo>& infoForEachResultIndex();
|
||||||
|
private:
|
||||||
bool mustBeCalculated(size_t scalarResultIndex) const;
|
bool mustBeCalculated(size_t scalarResultIndex) const;
|
||||||
void setMustBeCalculated(size_t scalarResultIndex);
|
void setMustBeCalculated(size_t scalarResultIndex);
|
||||||
|
public:
|
||||||
void eraseAllSourSimData();
|
void eraseAllSourSimData();
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user