#pragma once #include "RimEclipseCase.h" #include "RimFracture.h" #include "RimStimPlanFractureTemplate.h" class RigStimPlanUpscalingCalc { public: explicit RigStimPlanUpscalingCalc(RimEclipseCase* caseToApply, RimFracture* fracture); std::vector computeUpscaledPropertyFromStimPlan(QString resultName, QString resultUnit, size_t timeStepIndex); private: std::pair flowAcrossLayersUpscaling(QString resultName, QString resultUnit, size_t timeStepIndex, RimDefines::UnitSystem unitSystem, size_t eclipseCellIndex); double computeHAupscale(RimStimPlanFractureTemplate* fracTemplateStimPlan, std::vector stimPlanCells, std::vector planeCellPolygon, cvf::Vec3d directionAlongLayers, cvf::Vec3d directionAcrossLayers); double computeAHupscale(RimStimPlanFractureTemplate* fracTemplateStimPlan, std::vector stimPlanCells, std::vector planeCellPolygon, cvf::Vec3d directionAlongLayers, cvf::Vec3d directionAcrossLayers); static double arithmeticAverage(std::vector values); static std::vector getRowOfStimPlanCells(std::vector& allStimPlanCells, size_t i); static std::vector getColOfStimPlanCells(std::vector& allStimPlanCells, size_t j); private: RimEclipseCase* m_case; RimFracture* m_fracture; RimDefines::UnitSystem m_unitForCalculation; };