From d298963d94d23a29b5655140b2e73e54218081e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Tue, 16 May 2017 17:26:40 +0200 Subject: [PATCH] #1487 Remove vector from RigFracture --- .../FileInterface/RifEclipseExportTools.cpp | 24 ++++++++--------- .../ProjectDataModel/RimFracture.cpp | 8 ------ .../ProjectDataModel/RimFracture.h | 2 -- .../ReservoirDataModel/RigFracture.cpp | 16 ------------ .../ReservoirDataModel/RigFracture.h | 7 +---- .../RigFractureTransCalc.cpp | 26 +++++++------------ .../ReservoirDataModel/RigFractureTransCalc.h | 5 ++-- 7 files changed, 26 insertions(+), 62 deletions(-) diff --git a/ApplicationCode/FileInterface/RifEclipseExportTools.cpp b/ApplicationCode/FileInterface/RifEclipseExportTools.cpp index 8c8bc18a85..358bf1d8ba 100644 --- a/ApplicationCode/FileInterface/RifEclipseExportTools.cpp +++ b/ApplicationCode/FileInterface/RifEclipseExportTools.cpp @@ -114,13 +114,16 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c RiaLogging::debug(QString("Writing intermediate results from COMPDAT calculation")); + std::map > exportDataPrFracture; + for (RimFracture* fracture : fractures) { RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture); //TODO: Check that there is a fracture template available for given fracture.... - transmissibilityCalculator.computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture(); - std::vector fracDataVector = fracture->attachedRigFracture()->fractureData(); + + std::vector fracDataVector = transmissibilityCalculator.computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture(); + exportDataPrFracture[fracture] = fracDataVector; for (RigFracturedEclipseCellExportData fracData : fracDataVector) { @@ -134,13 +137,13 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c for (RimFracture* fracture : fractures) { RiaLogging::debug(QString("Writing COMPDAT values for fracture %1").arg(fracture->name())); - std::vector fracDataVector = fracture->attachedRigFracture()->fractureData(); + std::vector fracDataVector = exportDataPrFracture[fracture]; for (RigFracturedEclipseCellExportData fracData : fracDataVector) { - if (fracData.transmissibility > 0) + if ( fracData.transmissibility > 0 ) { - printCOMPDATvalues(out, fracData, fracture, wellPath, simWell, mainGrid); + printCOMPDATvalues(out, fracData, fracture, wellPath, simWell, mainGrid); } } @@ -161,20 +164,18 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c //-------------------------------------------------------------------------------------------------- void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::vector& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid) { - - //TODO: Get these more generally: + QString resultName = "CONDUCTIVITY"; QString resultUnit = "md-m"; size_t timeStepIndex = 0; - - for (RimFracture* fracture : fractures) //For testing upscaling... { RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture); - transmissibilityCalculator.computeUpscaledPropertyFromStimPlan(resultName, resultUnit, timeStepIndex); - std::vector fracDataVector = fracture->attachedRigFracture()->fractureData(); + + std::vector fracDataVector; + fracDataVector = transmissibilityCalculator.computeUpscaledPropertyFromStimPlan(resultName, resultUnit, timeStepIndex); out << qSetFieldWidth(4); out << "-- "; @@ -185,7 +186,6 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v out << qSetFieldWidth(16); out << "Fracture name "; - out << qSetFieldWidth(5); out << "i"; // 2. I location grid block, adding 1 to go to eclipse 1-based grid definition out << "j"; // 3. J location grid block, adding 1 to go to eclipse 1-based grid definition diff --git a/ApplicationCode/ProjectDataModel/RimFracture.cpp b/ApplicationCode/ProjectDataModel/RimFracture.cpp index 69a5af7e9f..ef3115a58d 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.cpp +++ b/ApplicationCode/ProjectDataModel/RimFracture.cpp @@ -136,14 +136,6 @@ const std::vector& RimFracture::nodeCoords() const return m_rigFracture->nodeCoords(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFracture::setFractureData(std::vector fractureDataVector) -{ - m_rigFracture->setFractureData(fractureDataVector); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFracture.h b/ApplicationCode/ProjectDataModel/RimFracture.h index c9e94be202..557bb1f74f 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.h +++ b/ApplicationCode/ProjectDataModel/RimFracture.h @@ -85,8 +85,6 @@ public: const std::vector& triangleIndices() const; const std::vector& nodeCoords() const; - void setFractureData(std::vector fractureDataVector); - std::vector getPotentiallyFracturedCells(); diff --git a/ApplicationCode/ReservoirDataModel/RigFracture.cpp b/ApplicationCode/ReservoirDataModel/RigFracture.cpp index a834cc0633..e1d3d38249 100644 --- a/ApplicationCode/ReservoirDataModel/RigFracture.cpp +++ b/ApplicationCode/ReservoirDataModel/RigFracture.cpp @@ -76,22 +76,6 @@ const std::vector& RigFracture::nodeCoords() const return m_nodeCoords; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RigFracture::setFractureData(const std::vector& data) -{ - m_fractureData = data; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -const std::vector& RigFracture::fractureData() const -{ - return m_fractureData; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ReservoirDataModel/RigFracture.h b/ApplicationCode/ReservoirDataModel/RigFracture.h index aced0e7406..131860a214 100644 --- a/ApplicationCode/ReservoirDataModel/RigFracture.h +++ b/ApplicationCode/ReservoirDataModel/RigFracture.h @@ -89,12 +89,7 @@ public: const std::vector& triangleIndices() const; const std::vector& nodeCoords() const; - - void setFractureData(const std::vector& data); - const std::vector& fractureData() const; //Access frac data - - std::vector m_fractureData; - + void addStimPlanCellFractureCell(RigStimPlanFractureCell fracStimPlanCellData); private: diff --git a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp index ebfd1cde1e..5e7d4513bc 100644 --- a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp +++ b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp @@ -82,7 +82,7 @@ RigFractureTransCalc::RigFractureTransCalc(RimEclipseCase* caseToApply, RimFract //-------------------------------------------------------------------------------------------------- /// TODO: Document equation //-------------------------------------------------------------------------------------------------- -void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture() +std::vector RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture() { if (m_fracture->attachedFractureDefinition()->fractureConductivity == RimFractureTemplate::FINITE_CONDUCTIVITY) { @@ -242,7 +242,7 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct } - m_fracture->setFractureData(fracDataVec); + return fracDataVec; } @@ -526,23 +526,26 @@ double RigFractureTransCalc::arithmeticAverage(std::vector values) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultName, QString resultUnit, size_t timeStepIndex) +std::vector RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultName, QString resultUnit, size_t timeStepIndex) { - + std::vector fracDataVec; RimStimPlanFractureTemplate* fracTemplateStimPlan; if (dynamic_cast(m_fracture->attachedFractureDefinition())) { fracTemplateStimPlan = dynamic_cast(m_fracture->attachedFractureDefinition()); } - else return; - + else + { + return fracDataVec; + } std::vector > stimPlanCellsAsPolygons; std::vector stimPlanParameterValues; fracTemplateStimPlan->getStimPlanDataAsPolygonsAndValues(stimPlanCellsAsPolygons, stimPlanParameterValues, resultName, resultUnit, timeStepIndex); //TODO: A lot of common code with function above... Can be cleaned up...? + std::vector fracCells = m_fracture->getPotentiallyFracturedCells(); RigEclipseCaseData* eclipseCaseData = m_case->eclipseCaseData(); @@ -550,11 +553,8 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa RimReservoirCellResultsStorage* gridCellResults = m_case->results(porosityModel); RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel); - std::vector fracDataVec; - for (size_t fracCell : fracCells) { - RigFracturedEclipseCellExportData fracData; fracData.reservoirCellIndex = fracCell; @@ -572,13 +572,7 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa } } - - //TODO: Hvis fracture allerede har en sånn vektor, trenger vi vel ikke en til for RigFractureTransCalc...? - //Trenger bare funksjoner for å sette / hente ut data for en gitt Eclipse celle... - m_fracture->setFractureData(fracDataVec); - - - + return fracDataVec; } diff --git a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h index efb31f35ca..d68c7643a9 100644 --- a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h +++ b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h @@ -31,6 +31,7 @@ #include #include +#include "RigFracture.h" class RimFracture; class RimEclipseCase; @@ -47,11 +48,11 @@ public: explicit RigFractureTransCalc(RimEclipseCase* caseToApply, RimFracture* fracture); // Calculations based on fracture polygon and eclipse grid cells - void computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture(); + std::vector computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture(); // Functions needed for upscaling from StimPlan grid to Eclipse Grid, for transmissibility calculations on eclipse grid // Obsolete if final calculations will be done on the stimPlan grid - void computeUpscaledPropertyFromStimPlan(QString resultName, QString resultUnit, size_t timeStepIndex); + std::vector computeUpscaledPropertyFromStimPlan(QString resultName, QString resultUnit, size_t timeStepIndex); // Calculations based on StimPlan grid static double computeStimPlanCellTransmissibilityInFracture(double conductivity, double sideLengthParallellTrans, double sideLengthNormalTrans);