#3670 Implement initial WBHP changes.

This commit is contained in:
Gaute Lindkvist 2018-11-12 15:00:13 +01:00
parent 7963a18928
commit ea053eac2d
7 changed files with 105 additions and 31 deletions

View File

@ -58,7 +58,7 @@ RicfExportWellPathCompletions::RicfExportWellPathCompletions()
RICF_InitField(&m_transScalingType, "transScalingType", RicExportCompletionDataSettingsUi::TransScalingType(), "Transmissibility Scaling Type", "", "", "");
RICF_InitField(&m_transScalingTimeStep, "transScalingTimeStep", 0, "Transmissibility Scaling Pressure Time Step", "", "", "");
RICF_InitField(&m_transScalingSummaryWBHP, "transScalingWBHPFromSummary", true, "Transmissibility Scaling WBHP from summary", "", "", "");
RICF_InitField(&m_transScalingInitialWBHP, "transScalingWBHPFromSummary", RicExportCompletionDataSettingsUi::TransScalingInitialWBHP(), "Transmissibility Scaling WBHP from summary", "", "", "");
RICF_InitField(&m_transScalingWBHP, "transScalingWBHP", 200.0, "Transmissibility Scaling Constant WBHP Value", "", "", "");
}
@ -86,7 +86,7 @@ void RicfExportWellPathCompletions::execute()
exportSettings->transScalingType = m_transScalingType;
exportSettings->transScalingTimeStep = m_transScalingTimeStep;
exportSettings->transScalingSummaryWBHP = m_transScalingSummaryWBHP;
exportSettings->transScalingInitialWBHP = m_transScalingInitialWBHP;
exportSettings->transScalingWBHP = m_transScalingWBHP;
exportSettings->useLateralNTG = m_useLateralNTG;

View File

@ -50,7 +50,7 @@ private:
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingType> m_transScalingType;
caf::PdmField<int> m_transScalingTimeStep;
caf::PdmField<bool> m_transScalingSummaryWBHP;
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingInitialWBHP> m_transScalingInitialWBHP;
caf::PdmField<double> m_transScalingWBHP;
caf::PdmField<bool> m_useLateralNTG;

View File

@ -65,6 +65,16 @@ namespace caf
setDefault(RicExportFractureCompletionsImpl::NO_SCALING);
}
template<>
void RicExportCompletionDataSettingsUi::TransScalingInitialWBHP::setUp()
{
addItem(RicExportFractureCompletionsImpl::FROM_PRODUCTION_START, "PROD_START", "Initial WBHP From Production Start");
addItem(RicExportFractureCompletionsImpl::FROM_PRODUCTION_START_W_MIN, "PROD_START_MIN", "Initial WBHP From Production Start With Minimum WBHP");
addItem(RicExportFractureCompletionsImpl::FIXED_INITIAL_WBHP, "FIXED_INITIAL_WBHP", "Fixed Initial WBHP");
setDefault(RicExportFractureCompletionsImpl::FROM_PRODUCTION_START);
}
}
// clang-format on
@ -91,10 +101,10 @@ RicExportCompletionDataSettingsUi::RicExportCompletionDataSettingsUi()
CAF_PDM_InitField(&includeFishbones, "IncludeFishbones", true, "Fishbones", "", "", "");
CAF_PDM_InitField(&includeFractures, "IncludeFractures", true, "Fractures", "", "", "");
CAF_PDM_InitFieldNoDefault(&transScalingType, "TransScalingType", " Pressure Diff. Depletion Transmissibility Scaling (BETA)", "", "", "");
CAF_PDM_InitField(&transScalingTimeStep, "TransScalingTimeStep", 0, " PDD Current Pressure Time Step (BETA)", "", "", "");
CAF_PDM_InitField(&transScalingWBHP, "TransScalingWBHP", 200.0, " PDD Default WBHP Value (BETA)", "", "", "");
CAF_PDM_InitField(&transScalingSummaryWBHP, "TransScalingWBHPFromCurrentTime", true, " PDD WBHP from Summary File at Current Time (BETA)", "", "", "");
CAF_PDM_InitFieldNoDefault(&transScalingType, "TransScalingType", " Pressure Diff. Depletion Transmissibility Scaling", "", "", "");
CAF_PDM_InitField(&transScalingTimeStep, "TransScalingTimeStep", 0, " PDD Current WBHP Time Step", "", "", "");
CAF_PDM_InitFieldNoDefault(&transScalingInitialWBHP, "TransScalingInitialWBHP", " PDD Initial WBHP Selection", "", "", "");
CAF_PDM_InitField(&transScalingWBHP, "TransScalingWBHP", 200.0, " PDD Initial WBHP Value", "", "", "");
CAF_PDM_InitField(&excludeMainBoreForFishbones,
"ExcludeMainBoreForFishbones",
@ -319,12 +329,36 @@ void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, c
{
group->add(&transScalingType);
group->add(&transScalingTimeStep);
group->add(&transScalingInitialWBHP);
group->add(&transScalingWBHP);
group->add(&transScalingSummaryWBHP);
transScalingTimeStep.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingWBHP.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingSummaryWBHP.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
if (transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING)
{
transScalingTimeStep.uiCapability()->setUiReadOnly(true);
transScalingInitialWBHP.uiCapability()->setUiReadOnly(true);
transScalingWBHP.uiCapability()->setUiReadOnly(true);
}
else
{
transScalingTimeStep.uiCapability()->setUiReadOnly(false);
transScalingInitialWBHP.uiCapability()->setUiReadOnly(false);
if (transScalingInitialWBHP == RicExportFractureCompletionsImpl::FROM_PRODUCTION_START)
{
transScalingWBHP.uiCapability()->setUiReadOnly(true);
}
else
{
transScalingWBHP.uiCapability()->setUiReadOnly(false);
if (transScalingInitialWBHP == RicExportFractureCompletionsImpl::FROM_PRODUCTION_START_W_MIN)
{
transScalingWBHP.uiCapability()->setUiName(" PDD Minimum Initial WBHP");
}
else
{
transScalingWBHP.uiCapability()->setUiName(" PDD Fixed Initial WBHP");
}
}
}
}
// Set visibility

View File

@ -57,6 +57,7 @@ public:
typedef caf::AppEnum<CombinationMode> CombinationModeType;
typedef caf::AppEnum<RicExportFractureCompletionsImpl::PressureDepletionTransScaling> TransScalingType;
typedef caf::AppEnum<RicExportFractureCompletionsImpl::PressureDepletionInitialWBHP> TransScalingInitialWBHP;
RicExportCompletionDataSettingsUi();
@ -67,7 +68,7 @@ public:
caf::PdmField<TransScalingType> transScalingType;
caf::PdmField<int> transScalingTimeStep;
caf::PdmField<bool> transScalingSummaryWBHP;
caf::PdmField<TransScalingInitialWBHP> transScalingInitialWBHP;
caf::PdmField<double> transScalingWBHP;
caf::PdmField<bool> includeMsw;

View File

@ -228,21 +228,45 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
PressureDepletionTransScaling currentPressureDropScaling = pdParams.pressureDropScaling;
int initialWellProductionTimeStep = 0;
double initialWellPressure = pdParams.pressureScalingWBHP;
double currentWellPressure = pdParams.pressureScalingWBHP;
if (currentPressureDropScaling != NO_SCALING && pdParams.wbhpFromSummaryCase)
double initialWellPressure = 0;
double currentWellPressure = 0;
if (currentPressureDropScaling != NO_SCALING)
{
double minimumWBHP = pdParams.pressureScalingWBHP;
double initialWBHPFromSummary = 0.0;
double currentWBHPFromSummary = 0.0;
// Find well pressures (WBHP) from summary case.
getWellPressuresAndInitialProductionTimeStepFromSummaryData(caseToApply,
wellPathName,
pdParams.pressureScalingTimeStep,
&initialWellProductionTimeStep,
&initialWellPressure,
&currentWellPressure);
&initialWBHPFromSummary,
&currentWBHPFromSummary);
// Don't perform any scaling for this well if the current time step is before the initial well production time step.
currentWellPressure = currentWBHPFromSummary;
if (pdParams.initialWbhpSource == FROM_PRODUCTION_START)
{
initialWellPressure = initialWBHPFromSummary;
}
else if (pdParams.initialWbhpSource == FROM_PRODUCTION_START_W_MIN)
{
initialWellPressure = initialWBHPFromSummary;
if (pdParams.pressureScalingTimeStep <= initialWellProductionTimeStep)
{
initialWellPressure = minimumWBHP;
}
}
else
{
initialWellPressure = minimumWBHP;
}
// Final check for initial vs current pressure to see if scaling is valid
if (std::fabs(initialWellPressure - currentWellPressure) < 1.0e-6)
{
// Don't perform scaling if current pressure is equal to initial.
currentPressureDropScaling = NO_SCALING;
}
}

View File

@ -51,6 +51,13 @@ public:
MATRIX_TO_WELL_DP_OVER_MAX_INITIAL_DP
};
enum PressureDepletionInitialWBHP
{
FROM_PRODUCTION_START,
FROM_PRODUCTION_START_W_MIN,
FIXED_INITIAL_WBHP
};
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -58,17 +65,17 @@ public:
{
PressureDepletionParameters(PressureDepletionTransScaling pressureDropScaling = NO_SCALING,
int pressureScalingTimeStep = 0,
bool wbhpFromSummaryCase = false,
PressureDepletionInitialWBHP initialWbhpSource = FROM_PRODUCTION_START,
double pressureScalingWBHP = 200.0)
: pressureDropScaling(pressureDropScaling)
, pressureScalingTimeStep(pressureScalingTimeStep)
, wbhpFromSummaryCase(wbhpFromSummaryCase)
, initialWbhpSource(initialWbhpSource)
, pressureScalingWBHP(pressureScalingWBHP)
{}
PressureDepletionTransScaling pressureDropScaling;
int pressureScalingTimeStep;
bool wbhpFromSummaryCase;
PressureDepletionInitialWBHP initialWbhpSource;
double pressureScalingWBHP;
};

View File

@ -247,7 +247,7 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
fractureTransmissibilityExportInformationStream.get(),
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
exportSettings.transScalingTimeStep(),
exportSettings.transScalingSummaryWBHP(),
exportSettings.transScalingInitialWBHP(),
exportSettings.transScalingWBHP()));
appendCompletionData(&completionsPerEclipseCellAllCompletionTypes, fractureCompletionData);
@ -293,7 +293,7 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
fractureTransmissibilityExportInformationStream.get(),
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
exportSettings.transScalingTimeStep(),
exportSettings.transScalingSummaryWBHP(),
exportSettings.transScalingInitialWBHP(),
exportSettings.transScalingWBHP()));
appendCompletionData(&completionsPerEclipseCell, fractureCompletionData);
@ -2638,9 +2638,17 @@ QString RicWellPathExportCompletionDataFeatureImpl::createPressureDepletionFileN
suffix += QString("B_");
if (exportSettings.transScalingSummaryWBHP())
if (exportSettings.transScalingInitialWBHP() == RicExportFractureCompletionsImpl::FROM_PRODUCTION_START)
{
suffix += QString("_SUMM_");
suffix += QString("_WBHPROD_");
}
else if (exportSettings.transScalingInitialWBHP() == RicExportFractureCompletionsImpl::FROM_PRODUCTION_START_W_MIN)
{
suffix += QString("_WBHPMIN_");
}
else
{
suffix += QString("_WBHPFIX_");
}
RimEclipseCase* eclipseCase = exportSettings.caseToApply();