diff --git a/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.cpp b/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.cpp index 1b9c9490b7..0c7b72cd02 100644 --- a/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.cpp +++ b/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.cpp @@ -50,20 +50,22 @@ void RigTofAccumulatedPhaseFractionsCalculator::computeTOFaccumulations() size_t scalarResultIndexSgas = gridCellResults->findOrLoadScalarResult(RiaDefines::DYNAMIC_NATIVE, "SGAS"); size_t scalarResultIndexPorv = gridCellResults->findOrLoadScalarResult(RiaDefines::STATIC_NATIVE, "PORV"); - std::vector& swatResults = eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSwat, m_timeStep); - std::vector& soilResults = eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSoil, m_timeStep); - std::vector& sgasResults = eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSgas, m_timeStep); - std::vector& porvResults = eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexPorv, m_timeStep); + const std::vector* swatResults = &(eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSwat, m_timeStep)); + const std::vector* soilResults = &(eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSoil, m_timeStep)); + const std::vector* sgasResults = &(eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexSgas, m_timeStep)); + const std::vector* porvResults = &(eclipseCaseData->results(RifReaderInterface::MATRIX_RESULTS)->cellScalarResults(scalarResultIndexPorv, m_timeStep)); const RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel); std::string resultNameTof = "TOF"; - const std::vector* tofData = m_flowDiagSolution->flowDiagResults()->resultValues(RigFlowDiagResultAddress(resultNameTof, m_wellName.toStdString()), - m_timeStep); + const std::vector* tofData = m_flowDiagSolution->flowDiagResults()->resultValues(RigFlowDiagResultAddress(resultNameTof, + m_wellName.toStdString()), + m_timeStep); std::string resultNameFraction = "Fraction"; - const std::vector* fractionData = m_flowDiagSolution->flowDiagResults()->resultValues(RigFlowDiagResultAddress(resultNameFraction, m_wellName.toStdString()), - m_timeStep); + const std::vector* fractionData = m_flowDiagSolution->flowDiagResults()->resultValues(RigFlowDiagResultAddress(resultNameFraction, + m_wellName.toStdString()), + m_timeStep); sortTofAndCalculateAccPhaseFraction(tofData, fractionData, porvResults, swatResults, soilResults, sgasResults); @@ -75,7 +77,12 @@ void RigTofAccumulatedPhaseFractionsCalculator::computeTOFaccumulations() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigTofAccumulatedPhaseFractionsCalculator::sortTofAndCalculateAccPhaseFraction(const std::vector* tofData, const std::vector* fractionData, std::vector& porvResults, std::vector& swatResults, std::vector& soilResults, std::vector& sgasResults) +void RigTofAccumulatedPhaseFractionsCalculator::sortTofAndCalculateAccPhaseFraction(const std::vector* tofData, + const std::vector* fractionData, + const std::vector* porvResults, + const std::vector* swatResults, + const std::vector* soilResults, + const std::vector* sgasResults) { std::map tofAndIndexMap; @@ -102,10 +109,10 @@ void RigTofAccumulatedPhaseFractionsCalculator::sortTofAndCalculateAccPhaseFract double tofValue = element.first; tofInIncreasingOrder.push_back(tofValue); - fractionPorvSum += fractionData->at(index) * porvResults[index]; - fractionPorvPhaseSumSwat += fractionData->at(index) * porvResults[index] * swatResults[index]; - fractionPorvPhaseSumSoil += fractionData->at(index) * porvResults[index] * soilResults[index]; - fractionPorvPhaseSumSgas += fractionData->at(index) * porvResults[index] * sgasResults[index]; + fractionPorvSum += fractionData->at(index) * porvResults->at(index); + fractionPorvPhaseSumSwat += fractionData->at(index) * porvResults->at(index) * swatResults->at(index); + fractionPorvPhaseSumSoil += fractionData->at(index) * porvResults->at(index) * soilResults->at(index); + fractionPorvPhaseSumSgas += fractionData->at(index) * porvResults->at(index) * sgasResults->at(index); accumulatedPhaseFractionSwat.push_back(fractionPorvPhaseSumSwat / fractionPorvSum); accumulatedPhaseFractionSoil.push_back(fractionPorvPhaseSumSoil / fractionPorvSum); diff --git a/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.h b/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.h index 1cfb3b7a4e..e92ead9b29 100644 --- a/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.h +++ b/ApplicationCode/ReservoirDataModel/RigTofAccumulatedPhaseFractionsCalculator.h @@ -40,7 +40,12 @@ class RigTofAccumulatedPhaseFractionsCalculator public: void computeTOFaccumulations(); - void sortTofAndCalculateAccPhaseFraction(const std::vector* tofData, const std::vector* fractionData, std::vector& porvResults, std::vector& swatResults, std::vector& soilResults, std::vector& sgasResults); + static void sortTofAndCalculateAccPhaseFraction(const std::vector* tofData, + const std::vector* fractionData, + const std::vector* porvResults, + const std::vector* swatResults, + const std::vector* soilResults, + const std::vector* sgasResults); private: RimEclipseCase* m_case; diff --git a/ApplicationCode/UnitTests/RigTofAccumulatedPhaseFractionsCalculator-Test.cpp b/ApplicationCode/UnitTests/RigTofAccumulatedPhaseFractionsCalculator-Test.cpp index d17bf6624e..0e3096ddce 100644 --- a/ApplicationCode/UnitTests/RigTofAccumulatedPhaseFractionsCalculator-Test.cpp +++ b/ApplicationCode/UnitTests/RigTofAccumulatedPhaseFractionsCalculator-Test.cpp @@ -23,7 +23,44 @@ //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -TEST(RigTofAccumulatedPhaseFractionsCalculator, sortTofAndCalculateAccPhaseFraction) +TEST(RigTofAccumulatedPhaseFractionsCalculator, sortTofAndCalculateAccPhaseFractionTest) { -//TODO + std::vector tofDataVector; + tofDataVector.push_back(0.001); + tofDataVector.push_back(0.1); + tofDataVector.push_back(0.01); + + std::vector fractionDataVector; + fractionDataVector.push_back(0.002); + fractionDataVector.push_back(0.2); + fractionDataVector.push_back(0.02); + + std::vector porvResultVector; + porvResultVector.push_back(0.002); + porvResultVector.push_back(0.2); + porvResultVector.push_back(0.02); + + std::vector swatResultVector; + swatResultVector.push_back(0.1); + swatResultVector.push_back(0.3); + swatResultVector.push_back(0.6); + + std::vector soilResultVector; + soilResultVector.push_back(0.3); + soilResultVector.push_back(0.6); + soilResultVector.push_back(0.1); + + std::vector sgasResultVector; + sgasResultVector.push_back(0.6); + sgasResultVector.push_back(0.1); + sgasResultVector.push_back(0.3); + + RigTofAccumulatedPhaseFractionsCalculator::sortTofAndCalculateAccPhaseFraction(&(tofDataVector), + &(fractionDataVector), + &(porvResultVector), + &(swatResultVector), + &(soilResultVector), + &(sgasResultVector)); + + EXPECT_EQ(1, 1); } \ No newline at end of file