Reveal: fix transmissibility calculation when filter cake is not present.

The "absolute" filter cake adjustment should only be used for cells when
filter cake is present (i.e filtrate thickness is not zero).
This commit is contained in:
Kristian Bendiksen
2023-11-08 11:14:24 +01:00
parent 02df80e0cc
commit 18c29d5fc7
5 changed files with 35 additions and 5 deletions

View File

@@ -85,6 +85,7 @@ void RigEclipseToStimPlanCalculator::computeValues()
std::vector<std::vector<double>> injectivityFactors;
std::vector<std::vector<double>> viscosities;
std::vector<std::vector<double>> filterCakeMobilities;
std::vector<std::vector<double>> filtrateThicknesses;
RimThermalFractureTemplate* thermalFractureTemplate = dynamic_cast<RimThermalFractureTemplate*>( m_fracture->fractureTemplate() );
@@ -110,6 +111,12 @@ void RigEclipseToStimPlanCalculator::computeValues()
RiaDefines::getExpectedThermalFractureUnit( RiaDefines::filterCakeMobilityResultName(),
unitSystem ),
timeStep );
filtrateThicknesses =
thermalFractureTemplate->resultValues( RiaDefines::filtrateThicknessResultName(),
RiaDefines::getExpectedThermalFractureUnit( RiaDefines::filtrateThicknessResultName(),
unitSystem ),
timeStep );
}
for ( size_t i = 0; i < m_fractureGrid.fractureCells().size(); i++ )
@@ -127,6 +134,7 @@ void RigEclipseToStimPlanCalculator::computeValues()
double injectivityFactor = resultValueAtIJ( injectivityFactors, m_fractureGrid, cellI, cellJ );
double viscosity = resultValueAtIJ( viscosities, m_fractureGrid, cellI, cellJ );
double filterCakeMobility = resultValueAtIJ( filterCakeMobilities, m_fractureGrid, cellI, cellJ );
double filtrateThickness = resultValueAtIJ( filtrateThicknesses, m_fractureGrid, cellI, cellJ );
// Assumed value
double relativePermeability = 1.0;
@@ -141,6 +149,7 @@ void RigEclipseToStimPlanCalculator::computeValues()
filterPressureDropType,
injectivityFactor,
filterCakeMobility,
filtrateThickness,
viscosity,
relativePermeability );
}