#1487 - pre-proto - Starting refactoring to prepare for Transmissibility condenser

This commit is contained in:
astridkbjorke 2017-05-16 10:55:31 +02:00
parent ef6041379b
commit 9c4b0776d3
9 changed files with 61 additions and 40 deletions

View File

@ -120,9 +120,9 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c
//TODO: Check that there is a fracture template available for given fracture....
transmissibilityCalculator.computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture();
std::vector<RigFractureData> fracDataVector = fracture->attachedRigFracture()->fractureData();
std::vector<RigFracturedEclipseCellExportData> fracDataVector = fracture->attachedRigFracture()->fractureData();
for (RigFractureData fracData : fracDataVector)
for (RigFracturedEclipseCellExportData fracData : fracDataVector)
{
printBackgroundData(out, wellPath, simWell, fracture, mainGrid, fracData);
}
@ -134,9 +134,9 @@ 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<RigFractureData> fracDataVector = fracture->attachedRigFracture()->fractureData();
std::vector<RigFracturedEclipseCellExportData> fracDataVector = fracture->attachedRigFracture()->fractureData();
for (RigFractureData fracData : fracDataVector)
for (RigFracturedEclipseCellExportData fracData : fracDataVector)
{
if (fracData.transmissibility > 0)
{
@ -174,7 +174,7 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v
{
RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture);
transmissibilityCalculator.computeUpscaledPropertyFromStimPlan(resultName, resultUnit, timeStepIndex);
std::vector<RigFractureData> fracDataVector = fracture->attachedRigFracture()->fractureData();
std::vector<RigFracturedEclipseCellExportData> fracDataVector = fracture->attachedRigFracture()->fractureData();
out << qSetFieldWidth(4);
out << "-- ";
@ -198,7 +198,7 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v
out << "\n";
for (RigFractureData fracData : fracDataVector)
for (RigFracturedEclipseCellExportData fracData : fracDataVector)
{
out << qSetFieldWidth(4);
@ -405,7 +405,7 @@ return;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifEclipseExportTools::printCOMPDATvalues(QTextStream & out, RigFractureData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid)
void RifEclipseExportTools::printCOMPDATvalues(QTextStream & out, RigFracturedEclipseCellExportData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid)
{
out << qSetFieldWidth(8);
if (fracData.transmissibility == cvf::UNDEFINED_DOUBLE || !(fracture->attachedFractureDefinition())) out << "--"; //Commenting out line in output file
@ -515,7 +515,7 @@ void RifEclipseExportTools::printBackgroundDataHeaderLine(QTextStream & out)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifEclipseExportTools::printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFractureData &fracData)
void RifEclipseExportTools::printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFracturedEclipseCellExportData &fracData)
{
out << qSetFieldWidth(4);
out << "-- ";

View File

@ -30,7 +30,7 @@
class QFile;
class QTextStream;
class RigFractureData;
class RigFracturedEclipseCellExportData;
class RigMainGrid;
class RimEclipseCase;
class RimEclipseWell;
@ -51,18 +51,16 @@ public:
static bool writeFracturesToTextFile(const QString& fileName, const std::vector<RimFracture*>& fractures, RimEclipseCase* caseToApply);
private:
static void performStimPlanUpscalingAndPrintResults(const std::vector<RimFracture *>& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid);
static void printStimPlanCellsMatrixTransContributions(const std::vector<RimFracture *>& fractures, RimEclipseCase* caseToApply, QTextStream &out, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid);
static void printStimPlanFractureTrans(const std::vector<RimFracture *>& fractures, QTextStream &out);
static void printTransmissibilityFractureToWell(const std::vector<RimFracture *>& fractures, QTextStream &out, RimEclipseCase* caseToApply);
static void printCOMPDATvalues(QTextStream & out, RigFractureData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid);
static void printCOMPDATvalues(QTextStream & out, RigFracturedEclipseCellExportData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid);
static void printBackgroundDataHeaderLine(QTextStream & out);
static void printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFractureData &fracData);
private:
static void printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFracturedEclipseCellExportData &fracData);
};

View File

@ -139,7 +139,7 @@ const std::vector<cvf::Vec3f>& RimFracture::nodeCoords() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFracture::setFractureData(std::vector<RigFractureData> fractureDataVector)
void RimFracture::setFractureData(std::vector<RigFracturedEclipseCellExportData> fractureDataVector)
{
m_rigFracture->setFractureData(fractureDataVector);
}

View File

@ -39,7 +39,7 @@ class RimEclipseCase;
class RimEllipseFractureTemplate;
class RivWellFracturePartMgr;
class RimFractureTemplate;
class RigFractureData;
class RigFracturedEclipseCellExportData;
//==================================================================================================
///
@ -85,7 +85,7 @@ public:
const std::vector<cvf::uint>& triangleIndices() const;
const std::vector<cvf::Vec3f>& nodeCoords() const;
void setFractureData(std::vector<RigFractureData> fractureDataVector);
void setFractureData(std::vector<RigFracturedEclipseCellExportData> fractureDataVector);
std::vector<size_t> getPotentiallyFracturedCells();

View File

@ -122,6 +122,6 @@ private:
caf::PdmField<QString> m_stimPlanFileName;
cvf::ref<RigStimPlanFractureDefinition> m_stimPlanFractureDefinitionData;
std::vector<RigStimPlanFracTemplateCell> m_stimPlanCells;
std::vector<RigStimPlanFracTemplateCell> m_stimPlanCells;
std::pair<size_t, size_t> wellCenterStimPlanCellIJ;
};

View File

@ -21,7 +21,7 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFractureData::RigFractureData()
RigFracturedEclipseCellExportData::RigFracturedEclipseCellExportData()
{
}
@ -79,7 +79,7 @@ const std::vector<cvf::Vec3f>& RigFracture::nodeCoords() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFracture::setFractureData(const std::vector<RigFractureData>& data)
void RigFracture::setFractureData(const std::vector<RigFracturedEclipseCellExportData>& data)
{
m_fractureData = data;
}
@ -87,7 +87,7 @@ void RigFracture::setFractureData(const std::vector<RigFractureData>& data)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<RigFractureData>& RigFracture::fractureData() const
const std::vector<RigFracturedEclipseCellExportData>& RigFracture::fractureData() const
{
return m_fractureData;
}

View File

@ -26,25 +26,28 @@
#include <vector>
class RigFractureData
class RigFracturedEclipseCellExportData
{
public:
RigFractureData();
RigFracturedEclipseCellExportData();
size_t reservoirCellIndex;
double transmissibility;
cvf::Vec3d transmissibilities;
// Compdat export data
size_t reservoirCellIndex;
double transmissibility; // Total cell to well transmissibility finally used in COMPDAT keyword
bool cellIsActive;
// General intermediate results
double NTG;
cvf::Vec3d permeabilities;
double skinFactor;
double totalArea;
// Elipse fracture related values
cvf::Vec3d transmissibilities; //matrixToFractureTransmissibilitiesXYZ
double totalArea; // Elipse cell overlap area
double fractureLenght;
cvf::Vec3d projectedAreas;
cvf::Vec3d permeabilities;
cvf::Vec3d cellSizes;
double NTG;
double skinFactor;
bool cellIsActive;
//TODO: Used for upscaling - should be moved?
double upscaledStimPlanValueHA;
@ -87,10 +90,10 @@ public:
const std::vector<cvf::uint>& triangleIndices() const;
const std::vector<cvf::Vec3f>& nodeCoords() const;
void setFractureData(const std::vector<RigFractureData>& data);
const std::vector<RigFractureData>& fractureData() const; //Access frac data
void setFractureData(const std::vector<RigFracturedEclipseCellExportData>& data);
const std::vector<RigFracturedEclipseCellExportData>& fractureData() const; //Access frac data
std::vector<RigFractureData> m_fractureData;
std::vector<RigFracturedEclipseCellExportData> m_fractureData;
void addStimPlanCellFractureCell(RigStimPlanFractureCell fracStimPlanCellData);

View File

@ -112,7 +112,7 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
std::vector<RigFractureData> fracDataVec;
std::vector<RigFracturedEclipseCellExportData> fracDataVec;
std::vector<size_t> fracCells = m_fracture->getPotentiallyFracturedCells();
for (size_t fracCell : fracCells)
@ -153,7 +153,7 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct
directionOfLength.cross(localZinFracPlane, cvf::Vec3d(0, 0, 1));
directionOfLength.normalize();
RigFractureData fracData;
RigFracturedEclipseCellExportData fracData;
fracData.reservoirCellIndex = fracCell;
std::vector<cvf::Vec3f> fracPolygon = m_fracture->attachedFractureDefinition()->fracturePolygon(m_unitForCalculation);
@ -246,8 +246,9 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFractureTransCalc::calculateStimPlanCellsMatrixTransmissibility(RigStimPlanFracTemplateCell* stimPlanCell, RigStimPlanFractureCell* fracStimPlanCellData)
void RigFractureTransCalc::calculateStimPlanCellsMatrixTransmissibility( RigStimPlanFracTemplateCell* stimPlanCell, RigStimPlanFractureCell* fracStimPlanCellData)
{
//TODO: Gjør til egen klasse / kalkulator, som kan holde eclipseCell/StimplanCell og Transm.
//Not calculating flow into fracture if stimPlan cell cond value is 0 (assumed to be outside the fracture):
if (stimPlanCell->getConductivtyValue() < 1e-7) return;
@ -693,12 +694,12 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa
RimReservoirCellResultsStorage* gridCellResults = m_case->results(porosityModel);
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
std::vector<RigFractureData> fracDataVec;
std::vector<RigFracturedEclipseCellExportData> fracDataVec;
for (size_t fracCell : fracCells)
{
RigFractureData fracData;
RigFracturedEclipseCellExportData fracData;
fracData.reservoirCellIndex = fracCell;
std::pair<double, double> upscaledCondFlowAcrossLayers = flowAcrossLayersUpscaling(resultName, resultUnit, timeStepIndex, m_unitForCalculation, fracCell);
@ -730,6 +731,7 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa
//--------------------------------------------------------------------------------------------------
void RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(const RigStimPlanFracTemplateCell& stimPlanCell)
{
//TODO: Ta inn relevante parametre, ikke hele cella
double verticalSideLength = stimPlanCell.cellSizeX();
double horisontalSideLength = stimPlanCell.cellSizeZ();
@ -745,6 +747,7 @@ void RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(const R
//--------------------------------------------------------------------------------------------------
double RigFractureTransCalc::computeRadialTransmissibilityToWellinStimPlanCell(const RigStimPlanFracTemplateCell& stimPlanCell)
{
//TODO: Ta inn relevante parametre, ikke hele brønncella
if (m_fracture->attachedFractureDefinition()->orientation == RimFractureTemplate::ALONG_WELL_PATH) return cvf::UNDEFINED_DOUBLE;
double areaScalingFactor = 1.0;
@ -769,6 +772,8 @@ double RigFractureTransCalc::computeRadialTransmissibilityToWellinStimPlanCell(c
//--------------------------------------------------------------------------------------------------
double RigFractureTransCalc::computeLinearTransmissibilityToWellinStimPlanCell(const RigStimPlanFracTemplateCell& stimPlanCell, double perforationLengthVertical, double perforationLengthHorizontal)
{
//TODO: Ta inn relevante parametre, ikke hele brønncella
double TcPrefix = 8 * cDarcy() * stimPlanCell.getConductivtyValue();
double DzPerf = perforationLengthVertical * m_fracture->perforationEfficiency();

View File

@ -79,3 +79,18 @@ private:
double cDarcy();
};
class EclipseToStimPlanCellTransmissibilityCalculator
{
public:
explicit EclipseToStimPlanCellTransmissibilityCalculator(const RimEclipseCase* caseToApply, cvf::Mat4f fractureTransform, double skinFactor, const RigStimPlanFracTemplateCell& stimPlanCell);
const std::vector<size_t>& globalIndeciesToContributingEclipseCells();
const std::vector<double>& contributingEclipseCellTransmissibilities();
private:
void calculateStimPlanCellsMatrixTransmissibility();
std::vector<size_t> m_globalIndeciesToContributingEclipseCells;
std::vector<double> m_contributingEclipseCellTransmissibilities;
};