mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#7450 Well Completion: Allocation of User defined D-factor to perforation connection factors
If the user defined a D-factor for the perforation interval, distribute the D-factor based on D_cell = D_well * Sum_Tran_cells / Tran_cell
This commit is contained in:
parent
67a8567cbc
commit
b9362386bc
@ -1174,6 +1174,9 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
||||
if ( !wellPathGeometry ) return completionData;
|
||||
auto timeSteps = settings.caseToApply->timeStepDates();
|
||||
|
||||
const RimNonDarcyPerforationParameters* nonDarcyParameters =
|
||||
wellPath->perforationIntervalCollection()->nonDarcyParameters();
|
||||
|
||||
if ( wellPath->perforationIntervalCollection()->isChecked() )
|
||||
{
|
||||
for ( const RimPerforationInterval* interval : intervals )
|
||||
@ -1205,9 +1208,6 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
||||
RigCompletionData::CellDirection direction =
|
||||
calculateCellMainDirection( settings.caseToApply, cell.globCellIndex, cell.intersectionLengthsInCellCS );
|
||||
|
||||
const RimNonDarcyPerforationParameters* nonDarcyParameters =
|
||||
wellPath->perforationIntervalCollection()->nonDarcyParameters();
|
||||
|
||||
double transmissibility = 0.0;
|
||||
double kh = RigCompletionData::defaultValue();
|
||||
double dFactor = RigCompletionData::defaultValue();
|
||||
@ -1224,11 +1224,7 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
||||
transmissibility = transmissibilityData.connectionFactor();
|
||||
kh = transmissibilityData.kh();
|
||||
|
||||
if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_USER_DEFINED )
|
||||
{
|
||||
dFactor = nonDarcyParameters->userDefinedDFactor();
|
||||
}
|
||||
else if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_COMPUTED )
|
||||
if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_COMPUTED )
|
||||
{
|
||||
const double effectiveH = transmissibilityData.effectiveH();
|
||||
|
||||
@ -1258,6 +1254,27 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
||||
}
|
||||
}
|
||||
|
||||
if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_USER_DEFINED )
|
||||
{
|
||||
// Compute D-factor for completion as
|
||||
// D_cell = D_well * Sum_Tran_cells / Tran_cell
|
||||
//
|
||||
// See https://github.com/OPM/ResInsight/issues/7450
|
||||
|
||||
double accumulatedTransmissibility = 0.0;
|
||||
for ( const auto& completion : completionData )
|
||||
{
|
||||
accumulatedTransmissibility += completion.transmissibility();
|
||||
}
|
||||
|
||||
double userDefinedDFactor = nonDarcyParameters->userDefinedDFactor();
|
||||
for ( auto& completion : completionData )
|
||||
{
|
||||
double dFactorForCompletion = userDefinedDFactor * accumulatedTransmissibility / completion.transmissibility();
|
||||
completion.setDFactor( dFactorForCompletion );
|
||||
}
|
||||
}
|
||||
|
||||
return completionData;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user