mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3670 Implement initial WBHP changes.
This commit is contained in:
@@ -58,7 +58,7 @@ RicfExportWellPathCompletions::RicfExportWellPathCompletions()
|
|||||||
|
|
||||||
RICF_InitField(&m_transScalingType, "transScalingType", RicExportCompletionDataSettingsUi::TransScalingType(), "Transmissibility Scaling Type", "", "", "");
|
RICF_InitField(&m_transScalingType, "transScalingType", RicExportCompletionDataSettingsUi::TransScalingType(), "Transmissibility Scaling Type", "", "", "");
|
||||||
RICF_InitField(&m_transScalingTimeStep, "transScalingTimeStep", 0, "Transmissibility Scaling Pressure Time Step", "", "", "");
|
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", "", "", "");
|
RICF_InitField(&m_transScalingWBHP, "transScalingWBHP", 200.0, "Transmissibility Scaling Constant WBHP Value", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ void RicfExportWellPathCompletions::execute()
|
|||||||
|
|
||||||
exportSettings->transScalingType = m_transScalingType;
|
exportSettings->transScalingType = m_transScalingType;
|
||||||
exportSettings->transScalingTimeStep = m_transScalingTimeStep;
|
exportSettings->transScalingTimeStep = m_transScalingTimeStep;
|
||||||
exportSettings->transScalingSummaryWBHP = m_transScalingSummaryWBHP;
|
exportSettings->transScalingInitialWBHP = m_transScalingInitialWBHP;
|
||||||
exportSettings->transScalingWBHP = m_transScalingWBHP;
|
exportSettings->transScalingWBHP = m_transScalingWBHP;
|
||||||
|
|
||||||
exportSettings->useLateralNTG = m_useLateralNTG;
|
exportSettings->useLateralNTG = m_useLateralNTG;
|
||||||
|
|||||||
@@ -48,10 +48,10 @@ private:
|
|||||||
caf::PdmField<RicExportCompletionDataSettingsUi::CompdatExportType> m_compdatExport;
|
caf::PdmField<RicExportCompletionDataSettingsUi::CompdatExportType> m_compdatExport;
|
||||||
caf::PdmField<RicExportCompletionDataSettingsUi::CombinationModeType> m_combinationMode;
|
caf::PdmField<RicExportCompletionDataSettingsUi::CombinationModeType> m_combinationMode;
|
||||||
|
|
||||||
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingType> m_transScalingType;
|
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingType> m_transScalingType;
|
||||||
caf::PdmField<int> m_transScalingTimeStep;
|
caf::PdmField<int> m_transScalingTimeStep;
|
||||||
caf::PdmField<bool> m_transScalingSummaryWBHP;
|
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingInitialWBHP> m_transScalingInitialWBHP;
|
||||||
caf::PdmField<double> m_transScalingWBHP;
|
caf::PdmField<double> m_transScalingWBHP;
|
||||||
|
|
||||||
caf::PdmField<bool> m_useLateralNTG;
|
caf::PdmField<bool> m_useLateralNTG;
|
||||||
caf::PdmField<bool> m_includePerforations;
|
caf::PdmField<bool> m_includePerforations;
|
||||||
|
|||||||
@@ -65,6 +65,16 @@ namespace caf
|
|||||||
|
|
||||||
setDefault(RicExportFractureCompletionsImpl::NO_SCALING);
|
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
|
// clang-format on
|
||||||
|
|
||||||
@@ -91,10 +101,10 @@ RicExportCompletionDataSettingsUi::RicExportCompletionDataSettingsUi()
|
|||||||
CAF_PDM_InitField(&includeFishbones, "IncludeFishbones", true, "Fishbones", "", "", "");
|
CAF_PDM_InitField(&includeFishbones, "IncludeFishbones", true, "Fishbones", "", "", "");
|
||||||
CAF_PDM_InitField(&includeFractures, "IncludeFractures", true, "Fractures", "", "", "");
|
CAF_PDM_InitField(&includeFractures, "IncludeFractures", true, "Fractures", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&transScalingType, "TransScalingType", " Pressure Diff. Depletion Transmissibility Scaling (BETA)", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&transScalingType, "TransScalingType", " Pressure Diff. Depletion Transmissibility Scaling", "", "", "");
|
||||||
CAF_PDM_InitField(&transScalingTimeStep, "TransScalingTimeStep", 0, " PDD Current Pressure Time Step (BETA)", "", "", "");
|
CAF_PDM_InitField(&transScalingTimeStep, "TransScalingTimeStep", 0, " PDD Current WBHP Time Step", "", "", "");
|
||||||
CAF_PDM_InitField(&transScalingWBHP, "TransScalingWBHP", 200.0, " PDD Default WBHP Value (BETA)", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&transScalingInitialWBHP, "TransScalingInitialWBHP", " PDD Initial WBHP Selection", "", "", "");
|
||||||
CAF_PDM_InitField(&transScalingSummaryWBHP, "TransScalingWBHPFromCurrentTime", true, " PDD WBHP from Summary File at Current Time (BETA)", "", "", "");
|
CAF_PDM_InitField(&transScalingWBHP, "TransScalingWBHP", 200.0, " PDD Initial WBHP Value", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitField(&excludeMainBoreForFishbones,
|
CAF_PDM_InitField(&excludeMainBoreForFishbones,
|
||||||
"ExcludeMainBoreForFishbones",
|
"ExcludeMainBoreForFishbones",
|
||||||
@@ -319,12 +329,36 @@ void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, c
|
|||||||
{
|
{
|
||||||
group->add(&transScalingType);
|
group->add(&transScalingType);
|
||||||
group->add(&transScalingTimeStep);
|
group->add(&transScalingTimeStep);
|
||||||
|
group->add(&transScalingInitialWBHP);
|
||||||
group->add(&transScalingWBHP);
|
group->add(&transScalingWBHP);
|
||||||
group->add(&transScalingSummaryWBHP);
|
|
||||||
|
|
||||||
transScalingTimeStep.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
|
if (transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING)
|
||||||
transScalingWBHP.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
|
{
|
||||||
transScalingSummaryWBHP.uiCapability()->setUiReadOnly(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
|
// Set visibility
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public:
|
|||||||
typedef caf::AppEnum<CombinationMode> CombinationModeType;
|
typedef caf::AppEnum<CombinationMode> CombinationModeType;
|
||||||
|
|
||||||
typedef caf::AppEnum<RicExportFractureCompletionsImpl::PressureDepletionTransScaling> TransScalingType;
|
typedef caf::AppEnum<RicExportFractureCompletionsImpl::PressureDepletionTransScaling> TransScalingType;
|
||||||
|
typedef caf::AppEnum<RicExportFractureCompletionsImpl::PressureDepletionInitialWBHP> TransScalingInitialWBHP;
|
||||||
|
|
||||||
RicExportCompletionDataSettingsUi();
|
RicExportCompletionDataSettingsUi();
|
||||||
|
|
||||||
@@ -67,7 +68,7 @@ public:
|
|||||||
|
|
||||||
caf::PdmField<TransScalingType> transScalingType;
|
caf::PdmField<TransScalingType> transScalingType;
|
||||||
caf::PdmField<int> transScalingTimeStep;
|
caf::PdmField<int> transScalingTimeStep;
|
||||||
caf::PdmField<bool> transScalingSummaryWBHP;
|
caf::PdmField<TransScalingInitialWBHP> transScalingInitialWBHP;
|
||||||
caf::PdmField<double> transScalingWBHP;
|
caf::PdmField<double> transScalingWBHP;
|
||||||
|
|
||||||
caf::PdmField<bool> includeMsw;
|
caf::PdmField<bool> includeMsw;
|
||||||
|
|||||||
@@ -228,21 +228,45 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
|
|||||||
PressureDepletionTransScaling currentPressureDropScaling = pdParams.pressureDropScaling;
|
PressureDepletionTransScaling currentPressureDropScaling = pdParams.pressureDropScaling;
|
||||||
|
|
||||||
int initialWellProductionTimeStep = 0;
|
int initialWellProductionTimeStep = 0;
|
||||||
double initialWellPressure = pdParams.pressureScalingWBHP;
|
double initialWellPressure = 0;
|
||||||
double currentWellPressure = pdParams.pressureScalingWBHP;
|
double currentWellPressure = 0;
|
||||||
if (currentPressureDropScaling != NO_SCALING && pdParams.wbhpFromSummaryCase)
|
|
||||||
|
if (currentPressureDropScaling != NO_SCALING)
|
||||||
{
|
{
|
||||||
|
double minimumWBHP = pdParams.pressureScalingWBHP;
|
||||||
|
|
||||||
|
double initialWBHPFromSummary = 0.0;
|
||||||
|
double currentWBHPFromSummary = 0.0;
|
||||||
// Find well pressures (WBHP) from summary case.
|
// Find well pressures (WBHP) from summary case.
|
||||||
getWellPressuresAndInitialProductionTimeStepFromSummaryData(caseToApply,
|
getWellPressuresAndInitialProductionTimeStepFromSummaryData(caseToApply,
|
||||||
wellPathName,
|
wellPathName,
|
||||||
pdParams.pressureScalingTimeStep,
|
pdParams.pressureScalingTimeStep,
|
||||||
&initialWellProductionTimeStep,
|
&initialWellProductionTimeStep,
|
||||||
&initialWellPressure,
|
&initialWBHPFromSummary,
|
||||||
¤tWellPressure);
|
¤tWBHPFromSummary);
|
||||||
|
|
||||||
// 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.pressureScalingTimeStep <= initialWellProductionTimeStep)
|
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;
|
currentPressureDropScaling = NO_SCALING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,24 +51,31 @@ public:
|
|||||||
MATRIX_TO_WELL_DP_OVER_MAX_INITIAL_DP
|
MATRIX_TO_WELL_DP_OVER_MAX_INITIAL_DP
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum PressureDepletionInitialWBHP
|
||||||
|
{
|
||||||
|
FROM_PRODUCTION_START,
|
||||||
|
FROM_PRODUCTION_START_W_MIN,
|
||||||
|
FIXED_INITIAL_WBHP
|
||||||
|
};
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
struct PressureDepletionParameters
|
struct PressureDepletionParameters
|
||||||
{
|
{
|
||||||
PressureDepletionParameters(PressureDepletionTransScaling pressureDropScaling = NO_SCALING,
|
PressureDepletionParameters(PressureDepletionTransScaling pressureDropScaling = NO_SCALING,
|
||||||
int pressureScalingTimeStep = 0,
|
int pressureScalingTimeStep = 0,
|
||||||
bool wbhpFromSummaryCase = false,
|
PressureDepletionInitialWBHP initialWbhpSource = FROM_PRODUCTION_START,
|
||||||
double pressureScalingWBHP = 200.0)
|
double pressureScalingWBHP = 200.0)
|
||||||
: pressureDropScaling(pressureDropScaling)
|
: pressureDropScaling(pressureDropScaling)
|
||||||
, pressureScalingTimeStep(pressureScalingTimeStep)
|
, pressureScalingTimeStep(pressureScalingTimeStep)
|
||||||
, wbhpFromSummaryCase(wbhpFromSummaryCase)
|
, initialWbhpSource(initialWbhpSource)
|
||||||
, pressureScalingWBHP(pressureScalingWBHP)
|
, pressureScalingWBHP(pressureScalingWBHP)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
PressureDepletionTransScaling pressureDropScaling;
|
PressureDepletionTransScaling pressureDropScaling;
|
||||||
int pressureScalingTimeStep;
|
int pressureScalingTimeStep;
|
||||||
bool wbhpFromSummaryCase;
|
PressureDepletionInitialWBHP initialWbhpSource;
|
||||||
double pressureScalingWBHP;
|
double pressureScalingWBHP;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
|
|||||||
fractureTransmissibilityExportInformationStream.get(),
|
fractureTransmissibilityExportInformationStream.get(),
|
||||||
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
|
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
|
||||||
exportSettings.transScalingTimeStep(),
|
exportSettings.transScalingTimeStep(),
|
||||||
exportSettings.transScalingSummaryWBHP(),
|
exportSettings.transScalingInitialWBHP(),
|
||||||
exportSettings.transScalingWBHP()));
|
exportSettings.transScalingWBHP()));
|
||||||
|
|
||||||
appendCompletionData(&completionsPerEclipseCellAllCompletionTypes, fractureCompletionData);
|
appendCompletionData(&completionsPerEclipseCellAllCompletionTypes, fractureCompletionData);
|
||||||
@@ -293,7 +293,7 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
|
|||||||
fractureTransmissibilityExportInformationStream.get(),
|
fractureTransmissibilityExportInformationStream.get(),
|
||||||
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
|
RicExportFractureCompletionsImpl::PressureDepletionParameters(exportSettings.transScalingType(),
|
||||||
exportSettings.transScalingTimeStep(),
|
exportSettings.transScalingTimeStep(),
|
||||||
exportSettings.transScalingSummaryWBHP(),
|
exportSettings.transScalingInitialWBHP(),
|
||||||
exportSettings.transScalingWBHP()));
|
exportSettings.transScalingWBHP()));
|
||||||
|
|
||||||
appendCompletionData(&completionsPerEclipseCell, fractureCompletionData);
|
appendCompletionData(&completionsPerEclipseCell, fractureCompletionData);
|
||||||
@@ -2638,9 +2638,17 @@ QString RicWellPathExportCompletionDataFeatureImpl::createPressureDepletionFileN
|
|||||||
|
|
||||||
suffix += QString("B_");
|
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();
|
RimEclipseCase* eclipseCase = exportSettings.caseToApply();
|
||||||
|
|||||||
Reference in New Issue
Block a user