From c33b1d1b683d235dbe5e739401243066b4781c31 Mon Sep 17 00:00:00 2001 From: astridkbjorke Date: Fri, 31 Mar 2017 13:59:30 +0200 Subject: [PATCH] #1364 - pre-proto - Bugfixes for A-H upscaling for flow across layers. --- .../RigFractureTransCalc.cpp | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp index 314eba8f95..0a778b8218 100644 --- a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp +++ b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp @@ -332,7 +332,7 @@ std::pair RigFractureTransCalc::flowAcrossLayersUpscaling(QStrin // RimReservoirCellResultsStorage* gridCellResults = m_case->results(porosityModel); - cvf::Vec3d localX; + cvf::Vec3d localX; //NOt used in this calculation... cvf::Vec3d localY; cvf::Vec3d localZ; std::vector > planeCellPolygons; @@ -365,9 +365,19 @@ std::pair RigFractureTransCalc::flowAcrossLayersUpscaling(QStrin std::vector upscaledConductivitiesHA; std::vector upscaledConductivitiesAH; - //Harmonic weighted mean for (std::vector planeCellPolygon : planeCellPolygons) { +// //For debug only, to compare with results in Excel: +// std::vector planeCellPolygonHacked; +// if (eclipseCellIndex == 134039) +// { +// planeCellPolygonHacked.push_back(cvf::Vec3d(-12.0, -3.5, 0.0)); +// planeCellPolygonHacked.push_back(cvf::Vec3d(12.0, -3.5, 0.0)); +// planeCellPolygonHacked.push_back(cvf::Vec3d(12.0, 19.0, 0.0)); +// planeCellPolygonHacked.push_back(cvf::Vec3d(-12.0, 19.0, 0.0)); +// planeCellPolygon = planeCellPolygonHacked; +// } + double condHA = computeHAupscale(fracTemplateStimPlan, stimPlanCells, planeCellPolygon, directionAlongLayers, directionAcrossLayers); upscaledConductivitiesHA.push_back(condHA); @@ -454,17 +464,17 @@ double RigFractureTransCalc::computeHAupscale(RimStimPlanFractureTemplate* fracT //-------------------------------------------------------------------------------------------------- double RigFractureTransCalc::computeAHupscale(RimStimPlanFractureTemplate* fracTemplateStimPlan, std::vector stimPlanCells, std::vector planeCellPolygon, cvf::Vec3d directionAlongLayers, cvf::Vec3d directionAcrossLayers) { - std::vector DcolAvg; - std::vector liColSum; - std::vector CondAritCol; + std::vector DrowAvg; + std::vector liRowSum; + std::vector CondAritRow; - for (size_t j = 0; j < fracTemplateStimPlan->stimPlanGridNumberOfColums(); j++) + for (size_t j = 0; j < fracTemplateStimPlan->stimPlanGridNumberOfRows(); j++) { std::vector conductivitiesInStimPlanCells; std::vector lengthsLiOfStimPlanCol; std::vector heightsDiOfStimPlanCells; - std::vector stimPlanCellsCol = getColOfStimPlanCells(stimPlanCells, j); + std::vector stimPlanCellsCol = getRowOfStimPlanCells(stimPlanCells, j); for (RigStimPlanCell* stimPlanCell : stimPlanCellsCol) { if (stimPlanCell->getValue() > 1e-7) @@ -498,9 +508,9 @@ double RigFractureTransCalc::computeAHupscale(RimStimPlanFractureTemplate* fracT { //Calculating art avg double dAvg = sumLiDi / sumLi; - DcolAvg.push_back(dAvg); - liColSum.push_back(sumLi); - CondAritCol.push_back(dAvg / sumLi * sumCondLiDivDi); + DrowAvg.push_back(dAvg); + liRowSum.push_back(sumLi); + CondAritRow.push_back(dAvg / sumLi * sumCondLiDivDi); } } @@ -508,11 +518,11 @@ double RigFractureTransCalc::computeAHupscale(RimStimPlanFractureTemplate* fracT double sumDiDivCondALi = 0.0; double sumDi = 0.0; double sumDiLi = 0.0; - for (int i = 0; i < CondAritCol.size(); i++) + for (int i = 0; i < CondAritRow.size(); i++) { - sumDi += DcolAvg[i]; - sumDiLi += DcolAvg[i] * liColSum[i]; - sumDiDivCondALi += DcolAvg[i] / (CondAritCol[i] * liColSum[i]); + sumDi += DrowAvg[i]; + sumDiLi += DrowAvg[i] * liRowSum[i]; + sumDiDivCondALi += DrowAvg[i] / (CondAritRow[i] * liRowSum[i]); } double Lavg = sumDiLi / sumDi;