#5520 Completions : Set a threshold for transmissibility

This commit is contained in:
Magne Sjaastad committed 2020-02-11 20:24:46 +01:00
1 parent 25740fbced
commit bad1156ad9
3 files changed
+43 -4

No files matched your search

@@ -288,6 +288,8 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
std::vector<std::vector<RigCompletionData>> sharedComplForFracture( fractures.size() );
const double transmissibilityThreshold = 1e-9;
#pragma omp parallel for
for ( int i = 0; i < (int)fractures.size(); i++ )
{
@@ -309,6 +311,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
}
RigTransmissibilityCondenser transCondenser;
transCondenser.setTransmissibilityThreshold( transmissibilityThreshold );
//////
// Calculate Matrix To Fracture Trans
@@ -689,7 +692,10 @@ std::map<size_t, double> RicExportFractureCompletionsImpl::calculateMatrixToWell
RigTransmissibilityCondenser::CellAddress::WELL,
1} );
matrixToWellTransmissibilities.insert( std::make_pair( externalCell.m_globalCellIdx, trans ) );
if ( trans > transCondenser.transmissibilityThreshold() )
{
matrixToWellTransmissibilities.insert( std::make_pair( externalCell.m_globalCellIdx, trans ) );
}
}
}
return matrixToWellTransmissibilities;
@@ -38,7 +38,10 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigTransmissibilityCondenser::RigTransmissibilityCondenser() {}
RigTransmissibilityCondenser::RigTransmissibilityCondenser()
: m_transmissibilityThreshold( 1.0e-9 )
{
}
//--------------------------------------------------------------------------------------------------
///
@@ -49,6 +52,7 @@ RigTransmissibilityCondenser::RigTransmissibilityCondenser( const RigTransmissib
, m_externalCellAddrSet( copyFrom.m_externalCellAddrSet )
, m_TiiInv( copyFrom.m_TiiInv )
, m_Tie( copyFrom.m_Tie )
, m_transmissibilityThreshold( copyFrom.m_transmissibilityThreshold )
{
}
@@ -62,9 +66,27 @@ RigTransmissibilityCondenser& RigTransmissibilityCondenser::operator=( const Rig
m_externalCellAddrSet = rhs.m_externalCellAddrSet;
m_TiiInv = rhs.m_TiiInv;
m_Tie = rhs.m_Tie;
m_transmissibilityThreshold = rhs.m_transmissibilityThreshold;
return *this;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigTransmissibilityCondenser::setTransmissibilityThreshold( double threshold )
{
m_transmissibilityThreshold = threshold;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigTransmissibilityCondenser::transmissibilityThreshold() const
{
return m_transmissibilityThreshold;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -72,7 +94,7 @@ void RigTransmissibilityCondenser::addNeighborTransmissibility( CellAddress cell
CellAddress cell2,
double transmissibility )
{
if ( transmissibility < 1e-9 ) return;
if ( transmissibility < m_transmissibilityThreshold ) return;
m_condensedTransmissibilities.clear();
m_externalCellAddrSet.clear();
@@ -261,10 +283,15 @@ std::map<size_t, double> RigTransmissibilityCondenser::calculateEffectiveMatrixT
auto fictitiousFractureToWellIt = ficticuousFractureToWellTransMap.find( globalMatrixCellIdx );
CVF_ASSERT( fictitiousFractureToWellIt != ficticuousFractureToWellTransMap.end() );
double fictitiousFractureToWellTrans = fictitiousFractureToWellIt->second;
// T^dp_mw
effectiveMatrixToWellTrans[globalMatrixCellIdx] =
double transmissibilityValue =
RigFractureTransmissibilityEquations::effectiveMatrixToWellTransPDDHC( lumpedOriginalMatrixToFractureT,
fictitiousFractureToWellTrans );
if ( transmissibilityValue > m_transmissibilityThreshold )
{
effectiveMatrixToWellTrans[globalMatrixCellIdx] = transmissibilityValue;
}
}
}
return effectiveMatrixToWellTrans;
@@ -86,6 +86,9 @@ public:
}
};
void setTransmissibilityThreshold( double threshold );
double transmissibilityThreshold() const;
void addNeighborTransmissibility( CellAddress cell1, CellAddress cell2, double transmissibility );
std::set<CellAddress> externalCells();
@@ -119,4 +122,7 @@ protected:
Eigen::MatrixXd m_TiiInv;
Eigen::MatrixXd m_Tie;
private:
double m_transmissibilityThreshold;
};