mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1487 - pre-proto - Starting refactoring to prepare for Transmissibility condenser
This commit is contained in:
parent
ef6041379b
commit
9c4b0776d3
@ -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 << "-- ";
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
||||
};
|
Loading…
Reference in New Issue
Block a user