diff --git a/ApplicationCode/FileInterface/RifEclipseExportTools.cpp b/ApplicationCode/FileInterface/RifEclipseExportTools.cpp index 9c99301480..173129604f 100644 --- a/ApplicationCode/FileInterface/RifEclipseExportTools.cpp +++ b/ApplicationCode/FileInterface/RifEclipseExportTools.cpp @@ -103,8 +103,8 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c out << "\n"; //Included for debug / prototyping only + printStimPlanFractureTrans(fractures, out); printStimPlanCellsMatrixTransContributions(fractures, caseToApply, out, wellPath, simWell, mainGrid); - printBackgroundDataHeaderLine(out); @@ -235,7 +235,36 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v //-------------------------------------------------------------------------------------------------- void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std::vector& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid) { - out << "StimPlan cells' matrix transmissibility and contributing \n"; + out << "StimPlan cells' matrix transmissibility and Eclipse Cell contributions \n"; + + out << qSetFieldWidth(4); + out << "-- "; + + out << qSetFieldWidth(12); + out << "Well name "; // 1. Well name + + out << qSetFieldWidth(16); + out << "Fracture name "; + + out << qSetFieldWidth(5); + out << "Ec i"; + out << "Ec j"; + out << "Ec k"; + + out << qSetFieldWidth(10); + out << "Ecl cell"; + + out << qSetFieldWidth(5); + out << "SP i"; + out << "SP j"; + + out << qSetFieldWidth(10); + out << "Tm contr"; + + out << "\n"; + + + for (RimFracture* fracture : fractures) { RimStimPlanFractureTemplate* fracTemplateStimPlan; @@ -247,14 +276,14 @@ void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture); - //TODO: Get these more generally: std::vector stimPlanCells = fracTemplateStimPlan->getStimPlanCells(); for (RigStimPlanCell stimPlanCell : stimPlanCells) { if (stimPlanCell.getConductivtyValue() < 1e-7) { - //Adding empty fracStimPlanCell to get vectors of same length + //If conductivity in stimPlanCell is 0, contributions might not be relevant... + //continue; } RigFractureStimPlanCellData fracStimPlanCellData(stimPlanCell.getI(), stimPlanCell.getJ()); @@ -281,7 +310,6 @@ void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std out << qSetFieldWidth(16); out << fracture->name().left(15) + " "; - out << qSetFieldWidth(5); size_t ii, jj, kk; mainGrid->ijkFromCellIndex(stimPlanContributingEclipseCells[i], &ii, &jj, &kk); @@ -303,18 +331,72 @@ void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std out << QString::number(stimPlanContributingEclipseCellTransmisibilities[i], 'e', 3); out << "\n"; - } - } - - - - } return; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RifEclipseExportTools::printStimPlanFractureTrans(const std::vector& fractures, QTextStream &out) +{ + out << "StimPlan cells' fracture transmissibility \n"; + + out << qSetFieldWidth(4); + out << "-- "; + + out << qSetFieldWidth(5); + out << "SP i"; + out << "SP j"; + + out << qSetFieldWidth(10); + out << "Tf_hor"; + out << "Tf_vert"; + + out << "\n"; + + if (fractures.size() < 1) return; + RimFracture* fracture = fractures[0]; + + RimStimPlanFractureTemplate* fracTemplateStimPlan; + if (dynamic_cast(fracture->attachedFractureDefinition())) + { + fracTemplateStimPlan = dynamic_cast(fracture->attachedFractureDefinition()); + } + else return; + + std::vector stimPlanCells = fracTemplateStimPlan->getStimPlanCells(); + + for (RigStimPlanCell stimPlanCell : stimPlanCells) + { + if (stimPlanCell.getConductivtyValue() < 1e-7) + { + //If conductivity in stimPlanCell is 0, contributions might not be relevant... + continue; + } + + RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(&stimPlanCell); + + out << qSetFieldWidth(5); + size_t spi = stimPlanCell.getI(); + size_t spj = stimPlanCell.getJ(); + + out << spi; + out << spj; + + out << qSetFieldWidth(10); + out << QString::number(stimPlanCell.getVerticalTransmissibilityInFracture(), 'e', 3); + out << QString::number(stimPlanCell.getHorizontalTransmissibilityInFracture(), 'e', 3); + + out << "\n"; + } + +return; + +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/FileInterface/RifEclipseExportTools.h b/ApplicationCode/FileInterface/RifEclipseExportTools.h index 02222f5506..1646902891 100644 --- a/ApplicationCode/FileInterface/RifEclipseExportTools.h +++ b/ApplicationCode/FileInterface/RifEclipseExportTools.h @@ -53,6 +53,8 @@ public: static void performStimPlanUpscalingAndPrintResults(const std::vector& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid); static void printStimPlanCellsMatrixTransContributions(const std::vector& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid); + static void printStimPlanFractureTrans(const std::vector& fractures, QTextStream &out); + static void printCOMPDATvalues(QTextStream & out, RigFractureData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid); diff --git a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp index 767f3fd162..290a02d6e8 100644 --- a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp +++ b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.cpp @@ -727,7 +727,7 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigFractureTransCalc::computeFlowInFracture(RigStimPlanCell* stimPlanCell) +void RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(RigStimPlanCell* stimPlanCell) { std::vector polygon = stimPlanCell->getPolygon(); diff --git a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h index 23afb166d9..ac134df03d 100644 --- a/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h +++ b/ApplicationCode/ReservoirDataModel/RigFractureTransCalc.h @@ -59,7 +59,7 @@ public: void calculateStimPlanCellsMatrixTransmissibility(RigStimPlanCell* stimPlanCell, RigFractureStimPlanCellData* fracStimPlanCellData); - void computeFlowInFracture(RigStimPlanCell* stimPlanCell); + static void computeStimPlanCellTransmissibilityInFracture(RigStimPlanCell* stimPlanCell); void computeFlowIntoTransverseWell(); diff --git a/ApplicationCode/ReservoirDataModel/RigStimPlanCell.cpp b/ApplicationCode/ReservoirDataModel/RigStimPlanCell.cpp index 22da30ce22..7deaaac23e 100644 --- a/ApplicationCode/ReservoirDataModel/RigStimPlanCell.cpp +++ b/ApplicationCode/ReservoirDataModel/RigStimPlanCell.cpp @@ -53,13 +53,4 @@ void RigStimPlanCell::setTransmissibilityInFracture(double valueHorizontal, doub m_transmissibilityInFractureVertical = valueVertical; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -// void RigStimPlanCell::addContributingEclipseCell(size_t eclipseCell, double transmissibility) -// { -// contributingEclipseCells.push_back(eclipseCell); -// contributingEclipseCellTransmisibilities.push_back(transmissibility); -// -// } diff --git a/ApplicationCode/ReservoirDataModel/RigStimPlanCell.h b/ApplicationCode/ReservoirDataModel/RigStimPlanCell.h index ef32b07d36..d4f678ad17 100644 --- a/ApplicationCode/ReservoirDataModel/RigStimPlanCell.h +++ b/ApplicationCode/ReservoirDataModel/RigStimPlanCell.h @@ -42,13 +42,14 @@ public: double getDisplayValue() { return m_displayValue; } size_t getI() { return m_i; } size_t getJ() { return m_j; } + double getVerticalTransmissibilityInFracture() { return m_transmissibilityInFractureVertical; } + double getHorizontalTransmissibilityInFracture() { return m_transmissibilityInFractureHorizontal; } + void setConductivityValue(double cond) { m_concutivityValue = cond; } void setDisplayValue(double value) { m_displayValue = value; }; void setTransmissibilityInFracture(double valueHorizontal, double valueVertical); -// void addContributingEclipseCell(size_t fracCell, double transmissibility); - private: std::vector m_polygon; double m_displayValue;