mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-15 01:42:13 -05:00
#5520 Completions : Set a threshold for transmissibility
This commit is contained in:
1 parent
25740fbced
commit
bad1156ad9
3 files changed
+43
-4
No files matched your search
+7
-1
@@ -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;
|
||||
};
|
||||
Reference in new issue
Block a user