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....
|
//TODO: Check that there is a fracture template available for given fracture....
|
||||||
transmissibilityCalculator.computeTransmissibilityFromPolygonWithInfiniteConductivityInFracture();
|
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);
|
printBackgroundData(out, wellPath, simWell, fracture, mainGrid, fracData);
|
||||||
}
|
}
|
||||||
@ -134,9 +134,9 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c
|
|||||||
for (RimFracture* fracture : fractures)
|
for (RimFracture* fracture : fractures)
|
||||||
{
|
{
|
||||||
RiaLogging::debug(QString("Writing COMPDAT values for fracture %1").arg(fracture->name()));
|
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)
|
if (fracData.transmissibility > 0)
|
||||||
{
|
{
|
||||||
@ -174,7 +174,7 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v
|
|||||||
{
|
{
|
||||||
RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture);
|
RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture);
|
||||||
transmissibilityCalculator.computeUpscaledPropertyFromStimPlan(resultName, resultUnit, timeStepIndex);
|
transmissibilityCalculator.computeUpscaledPropertyFromStimPlan(resultName, resultUnit, timeStepIndex);
|
||||||
std::vector<RigFractureData> fracDataVector = fracture->attachedRigFracture()->fractureData();
|
std::vector<RigFracturedEclipseCellExportData> fracDataVector = fracture->attachedRigFracture()->fractureData();
|
||||||
|
|
||||||
out << qSetFieldWidth(4);
|
out << qSetFieldWidth(4);
|
||||||
out << "-- ";
|
out << "-- ";
|
||||||
@ -198,7 +198,7 @@ void RifEclipseExportTools::performStimPlanUpscalingAndPrintResults(const std::v
|
|||||||
|
|
||||||
out << "\n";
|
out << "\n";
|
||||||
|
|
||||||
for (RigFractureData fracData : fracDataVector)
|
for (RigFracturedEclipseCellExportData fracData : fracDataVector)
|
||||||
{
|
{
|
||||||
|
|
||||||
out << qSetFieldWidth(4);
|
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);
|
out << qSetFieldWidth(8);
|
||||||
if (fracData.transmissibility == cvf::UNDEFINED_DOUBLE || !(fracture->attachedFractureDefinition())) out << "--"; //Commenting out line in output file
|
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 << qSetFieldWidth(4);
|
||||||
out << "-- ";
|
out << "-- ";
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
class QFile;
|
class QFile;
|
||||||
class QTextStream;
|
class QTextStream;
|
||||||
class RigFractureData;
|
class RigFracturedEclipseCellExportData;
|
||||||
class RigMainGrid;
|
class RigMainGrid;
|
||||||
class RimEclipseCase;
|
class RimEclipseCase;
|
||||||
class RimEclipseWell;
|
class RimEclipseWell;
|
||||||
@ -51,18 +51,16 @@ public:
|
|||||||
|
|
||||||
static bool writeFracturesToTextFile(const QString& fileName, const std::vector<RimFracture*>& fractures, RimEclipseCase* caseToApply);
|
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 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 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 printStimPlanFractureTrans(const std::vector<RimFracture *>& fractures, QTextStream &out);
|
||||||
static void printTransmissibilityFractureToWell(const std::vector<RimFracture *>& fractures, QTextStream &out, RimEclipseCase* caseToApply);
|
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 printBackgroundDataHeaderLine(QTextStream & out);
|
||||||
|
|
||||||
static void printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFractureData &fracData);
|
static void printBackgroundData(QTextStream & out, RimWellPath* wellPath, RimEclipseWell* simWell, RimFracture* fracture, const RigMainGrid* mainGrid, RigFracturedEclipseCellExportData &fracData);
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
};
|
};
|
||||||
|
@ -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);
|
m_rigFracture->setFractureData(fractureDataVector);
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class RimEclipseCase;
|
|||||||
class RimEllipseFractureTemplate;
|
class RimEllipseFractureTemplate;
|
||||||
class RivWellFracturePartMgr;
|
class RivWellFracturePartMgr;
|
||||||
class RimFractureTemplate;
|
class RimFractureTemplate;
|
||||||
class RigFractureData;
|
class RigFracturedEclipseCellExportData;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@ -85,7 +85,7 @@ public:
|
|||||||
|
|
||||||
const std::vector<cvf::uint>& triangleIndices() const;
|
const std::vector<cvf::uint>& triangleIndices() const;
|
||||||
const std::vector<cvf::Vec3f>& nodeCoords() 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();
|
std::vector<size_t> getPotentiallyFracturedCells();
|
||||||
|
@ -122,6 +122,6 @@ private:
|
|||||||
|
|
||||||
caf::PdmField<QString> m_stimPlanFileName;
|
caf::PdmField<QString> m_stimPlanFileName;
|
||||||
cvf::ref<RigStimPlanFractureDefinition> m_stimPlanFractureDefinitionData;
|
cvf::ref<RigStimPlanFractureDefinition> m_stimPlanFractureDefinitionData;
|
||||||
std::vector<RigStimPlanFracTemplateCell> m_stimPlanCells;
|
std::vector<RigStimPlanFracTemplateCell> m_stimPlanCells;
|
||||||
std::pair<size_t, size_t> wellCenterStimPlanCellIJ;
|
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;
|
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;
|
return m_fractureData;
|
||||||
}
|
}
|
||||||
|
@ -26,25 +26,28 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class RigFractureData
|
class RigFracturedEclipseCellExportData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RigFractureData();
|
RigFracturedEclipseCellExportData();
|
||||||
|
|
||||||
|
// Compdat export data
|
||||||
size_t reservoirCellIndex;
|
size_t reservoirCellIndex;
|
||||||
double transmissibility;
|
double transmissibility; // Total cell to well transmissibility finally used in COMPDAT keyword
|
||||||
cvf::Vec3d transmissibilities;
|
bool cellIsActive;
|
||||||
|
|
||||||
double totalArea;
|
// General intermediate results
|
||||||
|
double NTG;
|
||||||
|
cvf::Vec3d permeabilities;
|
||||||
|
double skinFactor;
|
||||||
|
|
||||||
|
// Elipse fracture related values
|
||||||
|
cvf::Vec3d transmissibilities; //matrixToFractureTransmissibilitiesXYZ
|
||||||
|
double totalArea; // Elipse cell overlap area
|
||||||
double fractureLenght;
|
double fractureLenght;
|
||||||
cvf::Vec3d projectedAreas;
|
cvf::Vec3d projectedAreas;
|
||||||
|
|
||||||
cvf::Vec3d permeabilities;
|
|
||||||
cvf::Vec3d cellSizes;
|
cvf::Vec3d cellSizes;
|
||||||
double NTG;
|
|
||||||
double skinFactor;
|
|
||||||
|
|
||||||
bool cellIsActive;
|
|
||||||
|
|
||||||
//TODO: Used for upscaling - should be moved?
|
//TODO: Used for upscaling - should be moved?
|
||||||
double upscaledStimPlanValueHA;
|
double upscaledStimPlanValueHA;
|
||||||
@ -87,10 +90,10 @@ public:
|
|||||||
const std::vector<cvf::uint>& triangleIndices() const;
|
const std::vector<cvf::uint>& triangleIndices() const;
|
||||||
const std::vector<cvf::Vec3f>& nodeCoords() const;
|
const std::vector<cvf::Vec3f>& nodeCoords() const;
|
||||||
|
|
||||||
void setFractureData(const std::vector<RigFractureData>& data);
|
void setFractureData(const std::vector<RigFracturedEclipseCellExportData>& data);
|
||||||
const std::vector<RigFractureData>& fractureData() const; //Access frac data
|
const std::vector<RigFracturedEclipseCellExportData>& fractureData() const; //Access frac data
|
||||||
|
|
||||||
std::vector<RigFractureData> m_fractureData;
|
std::vector<RigFracturedEclipseCellExportData> m_fractureData;
|
||||||
|
|
||||||
void addStimPlanCellFractureCell(RigStimPlanFractureCell fracStimPlanCellData);
|
void addStimPlanCellFractureCell(RigStimPlanFractureCell fracStimPlanCellData);
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct
|
|||||||
|
|
||||||
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
|
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
|
||||||
|
|
||||||
std::vector<RigFractureData> fracDataVec;
|
std::vector<RigFracturedEclipseCellExportData> fracDataVec;
|
||||||
std::vector<size_t> fracCells = m_fracture->getPotentiallyFracturedCells();
|
std::vector<size_t> fracCells = m_fracture->getPotentiallyFracturedCells();
|
||||||
|
|
||||||
for (size_t fracCell : fracCells)
|
for (size_t fracCell : fracCells)
|
||||||
@ -153,7 +153,7 @@ void RigFractureTransCalc::computeTransmissibilityFromPolygonWithInfiniteConduct
|
|||||||
directionOfLength.cross(localZinFracPlane, cvf::Vec3d(0, 0, 1));
|
directionOfLength.cross(localZinFracPlane, cvf::Vec3d(0, 0, 1));
|
||||||
directionOfLength.normalize();
|
directionOfLength.normalize();
|
||||||
|
|
||||||
RigFractureData fracData;
|
RigFracturedEclipseCellExportData fracData;
|
||||||
fracData.reservoirCellIndex = fracCell;
|
fracData.reservoirCellIndex = fracCell;
|
||||||
|
|
||||||
std::vector<cvf::Vec3f> fracPolygon = m_fracture->attachedFractureDefinition()->fracturePolygon(m_unitForCalculation);
|
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):
|
//Not calculating flow into fracture if stimPlan cell cond value is 0 (assumed to be outside the fracture):
|
||||||
if (stimPlanCell->getConductivtyValue() < 1e-7) return;
|
if (stimPlanCell->getConductivtyValue() < 1e-7) return;
|
||||||
@ -693,12 +694,12 @@ void RigFractureTransCalc::computeUpscaledPropertyFromStimPlan( QString resultNa
|
|||||||
RimReservoirCellResultsStorage* gridCellResults = m_case->results(porosityModel);
|
RimReservoirCellResultsStorage* gridCellResults = m_case->results(porosityModel);
|
||||||
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
|
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
|
||||||
|
|
||||||
std::vector<RigFractureData> fracDataVec;
|
std::vector<RigFracturedEclipseCellExportData> fracDataVec;
|
||||||
|
|
||||||
for (size_t fracCell : fracCells)
|
for (size_t fracCell : fracCells)
|
||||||
{
|
{
|
||||||
|
|
||||||
RigFractureData fracData;
|
RigFracturedEclipseCellExportData fracData;
|
||||||
fracData.reservoirCellIndex = fracCell;
|
fracData.reservoirCellIndex = fracCell;
|
||||||
|
|
||||||
std::pair<double, double> upscaledCondFlowAcrossLayers = flowAcrossLayersUpscaling(resultName, resultUnit, timeStepIndex, m_unitForCalculation, 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)
|
void RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(const RigStimPlanFracTemplateCell& stimPlanCell)
|
||||||
{
|
{
|
||||||
|
//TODO: Ta inn relevante parametre, ikke hele cella
|
||||||
double verticalSideLength = stimPlanCell.cellSizeX();
|
double verticalSideLength = stimPlanCell.cellSizeX();
|
||||||
double horisontalSideLength = stimPlanCell.cellSizeZ();
|
double horisontalSideLength = stimPlanCell.cellSizeZ();
|
||||||
|
|
||||||
@ -745,6 +747,7 @@ void RigFractureTransCalc::computeStimPlanCellTransmissibilityInFracture(const R
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
double RigFractureTransCalc::computeRadialTransmissibilityToWellinStimPlanCell(const RigStimPlanFracTemplateCell& stimPlanCell)
|
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;
|
if (m_fracture->attachedFractureDefinition()->orientation == RimFractureTemplate::ALONG_WELL_PATH) return cvf::UNDEFINED_DOUBLE;
|
||||||
|
|
||||||
double areaScalingFactor = 1.0;
|
double areaScalingFactor = 1.0;
|
||||||
@ -769,6 +772,8 @@ double RigFractureTransCalc::computeRadialTransmissibilityToWellinStimPlanCell(c
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
double RigFractureTransCalc::computeLinearTransmissibilityToWellinStimPlanCell(const RigStimPlanFracTemplateCell& stimPlanCell, double perforationLengthVertical, double perforationLengthHorizontal)
|
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 TcPrefix = 8 * cDarcy() * stimPlanCell.getConductivtyValue();
|
||||||
|
|
||||||
double DzPerf = perforationLengthVertical * m_fracture->perforationEfficiency();
|
double DzPerf = perforationLengthVertical * m_fracture->perforationEfficiency();
|
||||||
|
@ -79,3 +79,18 @@ private:
|
|||||||
double cDarcy();
|
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