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;
|
if ( !wellPathGeometry ) return completionData;
|
||||||
auto timeSteps = settings.caseToApply->timeStepDates();
|
auto timeSteps = settings.caseToApply->timeStepDates();
|
||||||
|
|
||||||
|
const RimNonDarcyPerforationParameters* nonDarcyParameters =
|
||||||
|
wellPath->perforationIntervalCollection()->nonDarcyParameters();
|
||||||
|
|
||||||
if ( wellPath->perforationIntervalCollection()->isChecked() )
|
if ( wellPath->perforationIntervalCollection()->isChecked() )
|
||||||
{
|
{
|
||||||
for ( const RimPerforationInterval* interval : intervals )
|
for ( const RimPerforationInterval* interval : intervals )
|
||||||
@ -1205,9 +1208,6 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
|||||||
RigCompletionData::CellDirection direction =
|
RigCompletionData::CellDirection direction =
|
||||||
calculateCellMainDirection( settings.caseToApply, cell.globCellIndex, cell.intersectionLengthsInCellCS );
|
calculateCellMainDirection( settings.caseToApply, cell.globCellIndex, cell.intersectionLengthsInCellCS );
|
||||||
|
|
||||||
const RimNonDarcyPerforationParameters* nonDarcyParameters =
|
|
||||||
wellPath->perforationIntervalCollection()->nonDarcyParameters();
|
|
||||||
|
|
||||||
double transmissibility = 0.0;
|
double transmissibility = 0.0;
|
||||||
double kh = RigCompletionData::defaultValue();
|
double kh = RigCompletionData::defaultValue();
|
||||||
double dFactor = RigCompletionData::defaultValue();
|
double dFactor = RigCompletionData::defaultValue();
|
||||||
@ -1224,11 +1224,7 @@ std::vector<RigCompletionData> RicWellPathExportCompletionDataFeatureImpl::gener
|
|||||||
transmissibility = transmissibilityData.connectionFactor();
|
transmissibility = transmissibilityData.connectionFactor();
|
||||||
kh = transmissibilityData.kh();
|
kh = transmissibilityData.kh();
|
||||||
|
|
||||||
if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_USER_DEFINED )
|
if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_COMPUTED )
|
||||||
{
|
|
||||||
dFactor = nonDarcyParameters->userDefinedDFactor();
|
|
||||||
}
|
|
||||||
else if ( nonDarcyParameters->nonDarcyFlowType() == RimNonDarcyPerforationParameters::NON_DARCY_COMPUTED )
|
|
||||||
{
|
{
|
||||||
const double effectiveH = transmissibilityData.effectiveH();
|
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;
|
return completionData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user