#1787 Removing mainGrid from constructor, scaling porevolume by (1-swcr), if swcr is available in file

This commit is contained in:
astridkbjorke 2017-08-31 14:28:35 +02:00
parent f0f189b311
commit ad14863a36
3 changed files with 27 additions and 9 deletions

View File

@ -51,12 +51,12 @@ void RicCalculateNumberOfFloodedPoreVolumes::onActionTriggered(bool isChecked)
RimView* view = RiaApplication::instance()->activeReservoirView();
RimEclipseCase* caseToApply;
view->firstAncestorOrThisOfType(caseToApply);
RigMainGrid* mainGrid = caseToApply->eclipseCaseData()->mainGrid();
std::vector<QString> tracerNames;
tracerNames.push_back("SOIL");
RigNumberOfFloodedPoreVolumesCalculator calc(mainGrid, caseToApply, tracerNames);
RigNumberOfFloodedPoreVolumesCalculator calc(caseToApply, tracerNames);
std::vector<std::vector<double>> numberOfFloodedPorevolumes = calc.numberOfFloodedPorevolumes();
std::vector<std::vector<double>> cumInflow = calc.cumInflow();

View File

@ -36,10 +36,11 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator(RigMainGrid* mainGrid,
RimEclipseCase* caseToApply,
RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator(RimEclipseCase* caseToApply,
const std::vector<QString> tracerNames)
{
RigMainGrid* mainGrid = caseToApply->eclipseCaseData()->mainGrid();
RigEclipseCaseData* eclipseCaseData = caseToApply->eclipseCaseData();
RimReservoirCellResultsStorage* gridCellResults = caseToApply->results(RiaDefines::MATRIX_MODEL);
@ -49,6 +50,14 @@ RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator
size_t scalarResultIndexPorv = gridCellResults->findOrLoadScalarResult(RiaDefines::STATIC_NATIVE, "PORV");
const std::vector<double>* porvResults = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexPorv, 0));
size_t scalarResultIndexSwcr = gridCellResults->findOrLoadScalarResult(RiaDefines::STATIC_NATIVE, "SWCR");
const std::vector<double>* swcrResults = nullptr;
if (scalarResultIndexSwcr != cvf::UNDEFINED_SIZE_T)
{
swcrResults = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexSwcr, 0));
}
std::vector<size_t> scalarResultIndexTracers;
for (QString tracerName : tracerNames)
{
@ -130,6 +139,7 @@ RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator
caseToApply,
daysSinceSimulationStart,
porvResults,
swcrResults,
flowrateIatAllTimeSteps,
flowrateJatAllTimeSteps,
flowrateKatAllTimeSteps,
@ -163,6 +173,7 @@ void RigNumberOfFloodedPoreVolumesCalculator::calculate(RigMainGrid* mainGrid,
RimEclipseCase* caseToApply,
std::vector<double> daysSinceSimulationStart,
const std::vector<double>* porvResults,
const std::vector<double>* swcrResults,
std::vector<const std::vector<double>* > flowrateIatAllTimeSteps,
std::vector<const std::vector<double>* > flowrateJatAllTimeSteps,
std::vector<const std::vector<double>* > flowrateKatAllTimeSteps,
@ -231,7 +242,8 @@ void RigNumberOfFloodedPoreVolumesCalculator::calculate(RigMainGrid* mainGrid,
}
//Using porv only for active cells
//Using porv and swcr only for active cells
std::vector<double> porvResultsActiveCellsOnly;
for (size_t globalCellIndex = 0; globalCellIndex < mainGrid->globalCellArray().size(); globalCellIndex++)
{
@ -253,8 +265,14 @@ void RigNumberOfFloodedPoreVolumesCalculator::calculate(RigMainGrid* mainGrid,
std::vector<double> cumWinflowPV(numberOfActiveCells);
for (size_t cellResultIndex = 0; cellResultIndex < numberOfActiveCells; cellResultIndex++)
{
double scaledPoreVolume = porvResultsActiveCellsOnly[cellResultIndex];
if (swcrResults != nullptr && swcrResults->size() == numberOfActiveCells)
{
scaledPoreVolume = scaledPoreVolume * (1 - swcrResults->at(cellResultIndex));
}
cumWinflowPV[cellResultIndex] = cellQwInAtAllTimeSteps[timeStep][cellResultIndex]
/ porvResultsActiveCellsOnly[cellResultIndex];
/ scaledPoreVolume;
}
m_cumWinflowPVAllTimeSteps.push_back(cumWinflowPV);
}

View File

@ -34,8 +34,7 @@ class RigNumberOfFloodedPoreVolumesCalculator
{
public:
explicit RigNumberOfFloodedPoreVolumesCalculator(RigMainGrid* mainGrid,
RimEclipseCase* caseToApply,
explicit RigNumberOfFloodedPoreVolumesCalculator(RimEclipseCase* caseToApply,
const std::vector<QString> tracerNames
);
@ -52,6 +51,7 @@ private:
RimEclipseCase* caseToApply,
std::vector<double> daysSinceSimulationStart,
const std::vector<double>* porvResults,
const std::vector<double>* scwrResults,
std::vector<const std::vector<double>* > flowrateIatAllTimeSteps,
std::vector<const std::vector<double>* > flowrateJatAllTimeSteps,
std::vector<const std::vector<double>* > flowrateKatAllTimeSteps,