#1487- pre-proto - Using EclipseToStimPlanCellTransmissibilityCalculator instead of RigFractureTransCalc for calculating Matrix-to-fracture transmissibilities for stimPlan cells.

This commit is contained in:
astridkbjorke 2017-05-16 15:37:30 +02:00
parent de2d78828b
commit 4cb77642f3
3 changed files with 47 additions and 9 deletions

View File

@ -278,6 +278,7 @@ void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std
else continue;
RigFractureTransCalc transmissibilityCalculator(caseToApply, fracture);
double cDarcyInCorrectUnit = transmissibilityCalculator.cDarcy();
std::vector<RigStimPlanFracTemplateCell> stimPlanCells = fracTemplateStimPlan->getStimPlanCells();
@ -285,18 +286,19 @@ void RifEclipseExportTools::printStimPlanCellsMatrixTransContributions(const std
{
if (stimPlanCell.getConductivtyValue() < 1e-7)
{
//If conductivity in stimPlanCell is 0, contributions might not be relevant...
//continue;
continue;
}
RigStimPlanFractureCell fracStimPlanCellData(stimPlanCell.getI(), stimPlanCell.getJ());
EclipseToStimPlanCellTransmissibilityCalculator eclToStimPlanTransCalc(caseToApply,
fracture->transformMatrix(),
fracture->attachedFractureDefinition()->skinFactor,
cDarcyInCorrectUnit,
stimPlanCell);
transmissibilityCalculator.calculateStimPlanCellsMatrixTransmissibility(&stimPlanCell, &fracStimPlanCellData);
std::vector<size_t> stimPlanContributingEclipseCells = fracStimPlanCellData.getGlobalIndeciesToContributingEclipseCells();
std::vector<double> stimPlanContributingEclipseCellTransmissibilities = fracStimPlanCellData.getContributingEclipseCellTransmissibilities();
std::vector<size_t> stimPlanContributingEclipseCells = eclToStimPlanTransCalc.globalIndeciesToContributingEclipseCells();
std::vector<double> stimPlanContributingEclipseCellTransmissibilities = eclToStimPlanTransCalc.contributingEclipseCellTransmissibilities();
for (int i = 0; i < stimPlanContributingEclipseCells.size(); i++)
{

View File

@ -881,11 +881,38 @@ EclipseToStimPlanCellTransmissibilityCalculator::EclipseToStimPlanCellTransmissi
{
m_case = caseToApply;
m_fractureSkinFactor = skinFactor;
m_cDarcy = cDarcy;
m_fractureTransform = fractureTransform;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<size_t>& EclipseToStimPlanCellTransmissibilityCalculator::globalIndeciesToContributingEclipseCells()
{
if (m_globalIndeciesToContributingEclipseCells.size() < 1)
{
calculateStimPlanCellsMatrixTransmissibility();
}
return m_globalIndeciesToContributingEclipseCells;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& EclipseToStimPlanCellTransmissibilityCalculator::contributingEclipseCellTransmissibilities()
{
if (m_globalIndeciesToContributingEclipseCells.size() < 1)
{
calculateStimPlanCellsMatrixTransmissibility();
}
return m_contributingEclipseCellTransmissibilities;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -919,8 +946,16 @@ void EclipseToStimPlanCellTransmissibilityCalculator::calculateStimPlanCellsMatr
RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo(porosityModel);
std::vector<cvf::Vec3d> stimPlanPolygonTransformed;
for (cvf::Vec3d v : m_stimPlanCell.getPolygon())
{
cvf::Vec3f stimPlanPolygonNode = static_cast<cvf::Vec3f>(v);
stimPlanPolygonNode.transformPoint(m_fractureTransform);
stimPlanPolygonTransformed.push_back(static_cast<cvf::Vec3d>(stimPlanPolygonNode));
}
std::vector<size_t> fracCells = getPotentiallyFracturedCellsForPolygon(m_stimPlanCell.getPolygon());
std::vector<size_t> fracCells = getPotentiallyFracturedCellsForPolygon(stimPlanPolygonTransformed);
for (size_t fracCell : fracCells)
{
bool cellIsActive = activeCellInfo->isActive(fracCell);

View File

@ -68,6 +68,8 @@ public:
static std::vector<RigStimPlanFracTemplateCell*> getRowOfStimPlanCells(std::vector<RigStimPlanFracTemplateCell>& allStimPlanCells, size_t i);
static std::vector<RigStimPlanFracTemplateCell*> getColOfStimPlanCells(std::vector<RigStimPlanFracTemplateCell>& allStimPlanCells, size_t j);
double cDarcy();
private:
double convertConductivtyValue(double Kw, RimDefines::UnitSystem fromUnit, RimDefines::UnitSystem toUnit);
double calculateMatrixTransmissibility(double permX, double NTG, double Ay, double dx, double skinfactor, double fractureAreaWeightedlength);
@ -77,7 +79,6 @@ private:
RimFracture* m_fracture;
RimDefines::UnitSystem m_unitForCalculation;
double cDarcy();
};
class EclipseToStimPlanCellTransmissibilityCalculator