#3375 FIx prototype UI to set constant WBHP separately from current time step.

This commit is contained in:
Gaute Lindkvist 2018-09-18 13:27:59 +02:00
parent 96973c2dfc
commit 06817522d0
7 changed files with 108 additions and 100 deletions

View File

@ -56,8 +56,9 @@ RicfExportWellPathCompletions::RicfExportWellPathCompletions()
RICF_InitField(&m_excludeMainBoreForFishbones, "excludeMainBoreForFishbones", false, "Exclude Main Bore for Fishbones", "", "", ""); RICF_InitField(&m_excludeMainBoreForFishbones, "excludeMainBoreForFishbones", false, "Exclude Main Bore for Fishbones", "", "", "");
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", -1, "Transmissibility Scaling WBHP Time Step", "", "", ""); RICF_InitField(&m_transScalingTimeStep, "transScalingTimeStep", -1, "Transmissibility Scaling Pressure Time Step", "", "", "");
RICF_InitField(&m_transScalingWBHP, "transScalingWBHP", 200.0, "Transmissibility Scaling Constant WBHP", "", "", ""); RICF_InitField(&m_transScalingSummaryWBHP, "transScalingWBHPFromSummary", true, "Transmissibility Scaling WBHP from summary", "", "", "");
RICF_InitField(&m_transScalingWBHP, "transScalingWBHP", 200.0, "Transmissibility Scaling Constant WBHP Value", "", "", "");
RICF_InitField(&m_transScalingCorrection, "transScalingCorrection", RicExportCompletionDataSettingsUi::TransScalingCorrection(), "Transmissibility Scaling Correction", "", "", ""); RICF_InitField(&m_transScalingCorrection, "transScalingCorrection", RicExportCompletionDataSettingsUi::TransScalingCorrection(), "Transmissibility Scaling Correction", "", "", "");
} }
@ -83,7 +84,8 @@ void RicfExportWellPathCompletions::execute()
exportSettings->transScalingType = m_transScalingType; exportSettings->transScalingType = m_transScalingType;
exportSettings->transScalingCorrection = m_transScalingCorrection; exportSettings->transScalingCorrection = m_transScalingCorrection;
exportSettings->transScalingWBHPTimeStep = m_transScalingTimeStep; exportSettings->transScalingTimeStep = m_transScalingTimeStep;
exportSettings->transScalingSummaryWBHP = m_transScalingSummaryWBHP;
exportSettings->transScalingWBHP = m_transScalingWBHP; exportSettings->transScalingWBHP = m_transScalingWBHP;
exportSettings->useLateralNTG = m_useLateralNTG; exportSettings->useLateralNTG = m_useLateralNTG;

View File

@ -50,6 +50,7 @@ private:
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<double> m_transScalingWBHP; caf::PdmField<double> m_transScalingWBHP;
caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingCorrection> m_transScalingCorrection; caf::PdmField<RicExportCompletionDataSettingsUi::TransScalingCorrection> m_transScalingCorrection;

View File

@ -94,9 +94,10 @@ RicExportCompletionDataSettingsUi::RicExportCompletionDataSettingsUi()
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 (BETA)", "", "", "");
CAF_PDM_InitField(&transScalingWBHPTimeStep, "TransScalingTimeStep", -1, " PDD WBHP from Summary Case Time Step (BETA)", "", "", "");
CAF_PDM_InitField(&transScalingWBHP, "TransScalingWBHP", 200.0, " PDD Constant WBHP (BETA)", "", "", "");
CAF_PDM_InitFieldNoDefault(&transScalingCorrection, "TransScalingCorrection", " PDD Transmissibility Scaling Correction (BETA)", "", "", ""); CAF_PDM_InitFieldNoDefault(&transScalingCorrection, "TransScalingCorrection", " PDD Transmissibility Scaling Correction (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_InitField(&m_includeFracturesSummaryHeader, CAF_PDM_InitField(&m_includeFracturesSummaryHeader,
"IncludeFracturesSummaryHeader", "IncludeFracturesSummaryHeader",
@ -226,7 +227,7 @@ QList<caf::PdmOptionItemInfo>
RicExportCompletionDataSettingsUi::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) RicExportCompletionDataSettingsUi::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
{ {
QList<caf::PdmOptionItemInfo> options; QList<caf::PdmOptionItemInfo> options;
if (fieldNeedingOptions == &timeStep || fieldNeedingOptions == &transScalingWBHPTimeStep) if (fieldNeedingOptions == &timeStep || fieldNeedingOptions == &transScalingTimeStep)
{ {
QStringList timeStepNames; QStringList timeStepNames;
@ -234,7 +235,6 @@ QList<caf::PdmOptionItemInfo>
{ {
timeStepNames = caseToApply->timeStepStrings(); timeStepNames = caseToApply->timeStepStrings();
} }
options.push_back(caf::PdmOptionItemInfo("Use Constant WBHP", -1));
for (int i = 0; i < timeStepNames.size(); i++) for (int i = 0; i < timeStepNames.size(); i++)
{ {
options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i)); options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i));
@ -285,14 +285,15 @@ void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, c
group->add(&m_includeFracturesSummaryHeader); group->add(&m_includeFracturesSummaryHeader);
group->add(&transScalingType); group->add(&transScalingType);
group->add(&transScalingWBHPTimeStep);
group->add(&transScalingWBHP);
group->add(&transScalingCorrection); group->add(&transScalingCorrection);
group->add(&transScalingTimeStep);
group->add(&transScalingWBHP);
group->add(&transScalingSummaryWBHP);
transScalingWBHPTimeStep.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingWBHP.uiCapability()->setUiReadOnly(transScalingWBHPTimeStep.uiCapability()->isUiReadOnly() ||
transScalingWBHPTimeStep() != -1);
transScalingCorrection.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING); transScalingCorrection.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingTimeStep.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingWBHP.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
transScalingSummaryWBHP.uiCapability()->setUiReadOnly(transScalingType() == RicExportFractureCompletionsImpl::NO_SCALING);
// Set visibility // Set visibility

View File

@ -67,7 +67,8 @@ public:
caf::PdmField<CompdatExportType> compdatExport; caf::PdmField<CompdatExportType> compdatExport;
caf::PdmField<TransScalingType> transScalingType; caf::PdmField<TransScalingType> transScalingType;
caf::PdmField<int> transScalingWBHPTimeStep; caf::PdmField<int> transScalingTimeStep;
caf::PdmField<bool> transScalingSummaryWBHP;
caf::PdmField<double> transScalingWBHP; caf::PdmField<double> transScalingWBHP;
caf::PdmField<TransScalingCorrection> transScalingCorrection; caf::PdmField<TransScalingCorrection> transScalingCorrection;

View File

@ -71,10 +71,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
RimEclipseCase* caseToApply, RimEclipseCase* caseToApply,
std::vector<RicWellPathFractureReportItem>* fractureDataForReport, std::vector<RicWellPathFractureReportItem>* fractureDataForReport,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams)
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP)
{ {
std::vector<const RimFracture*> fracturesAlongWellPath; std::vector<const RimFracture*> fracturesAlongWellPath;
@ -90,21 +87,18 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
wellPath->wellPathGeometry(), wellPath->wellPathGeometry(),
fracturesAlongWellPath, fracturesAlongWellPath,
fractureDataForReport, fractureDataForReport,
outputStreamForIntermediateResultsText, pressureDropScaling, outputStreamForIntermediateResultsText,
transCorrection, pressureScalingTimeStep, pressureScalingWBHP); pdParams);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<RigCompletionData> std::vector<RigCompletionData>
RicExportFractureCompletionsImpl::generateCompdatValuesForSimWell(RimEclipseCase* eclipseCase, RicExportFractureCompletionsImpl::generateCompdatValuesForSimWell(RimEclipseCase* eclipseCase,
const RimSimWellInView* well, const RimSimWellInView* well,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams)
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP)
{ {
std::vector<RigCompletionData> completionData; std::vector<RigCompletionData> completionData;
@ -121,16 +115,8 @@ std::vector<RigCompletionData>
} }
} }
std::vector<RigCompletionData> branchCompletions = generateCompdatValues(eclipseCase, std::vector<RigCompletionData> branchCompletions = generateCompdatValues(
well->name(), eclipseCase, well->name(), branches[branchIndex], fractures, nullptr, outputStreamForIntermediateResultsText, pdParams);
branches[branchIndex],
fractures,
nullptr,
outputStreamForIntermediateResultsText,
pressureDropScaling,
transCorrection,
pressureScalingTimeStep,
pressureScalingWBHP);
completionData.insert(completionData.end(), branchCompletions.begin(), branchCompletions.end()); completionData.insert(completionData.end(), branchCompletions.begin(), branchCompletions.end());
} }
@ -147,11 +133,8 @@ std::vector<RigCompletionData>
const RigWellPath* wellPathGeometry, const RigWellPath* wellPathGeometry,
const std::vector<const RimFracture*>& fractures, const std::vector<const RimFracture*>& fractures,
std::vector<RicWellPathFractureReportItem>* fractureDataReportItems, std::vector<RicWellPathFractureReportItem>* fractureDataReportItems,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams)
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP)
{ {
std::vector<RigCompletionData> fractureCompletions; std::vector<RigCompletionData> fractureCompletions;
@ -196,7 +179,7 @@ std::vector<RigCompletionData>
caseToApply->loadStaticResultsByName(resultNames); caseToApply->loadStaticResultsByName(resultNames);
} }
if (pressureDropScaling != NO_SCALING) if (pdParams.pressureDropScaling != NO_SCALING)
{ {
RigCaseCellResultsData* results = caseToApply->results(RiaDefines::MATRIX_MODEL); RigCaseCellResultsData* results = caseToApply->results(RiaDefines::MATRIX_MODEL);
results->findOrLoadScalarResult(RiaDefines::DYNAMIC_NATIVE, "PRESSURE"); results->findOrLoadScalarResult(RiaDefines::DYNAMIC_NATIVE, "PRESSURE");
@ -208,10 +191,7 @@ std::vector<RigCompletionData>
fractures, fractures,
fractureDataReportItems, fractureDataReportItems,
outputStreamForIntermediateResultsText, outputStreamForIntermediateResultsText,
pressureDropScaling, pdParams);
transCorrection,
pressureScalingTimeStep,
pressureScalingWBHP);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -224,10 +204,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
const std::vector<const RimFracture*>& fractures, const std::vector<const RimFracture*>& fractures,
std::vector<RicWellPathFractureReportItem>* fractureDataReportItems, std::vector<RicWellPathFractureReportItem>* fractureDataReportItems,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams)
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP)
{ {
std::vector<RigCompletionData> fractureCompletions; std::vector<RigCompletionData> fractureCompletions;
@ -239,32 +216,33 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
double cDarcyInCorrectUnit = RiaEclipseUnitTools::darcysConstant(caseToApply->eclipseCaseData()->unitsType()); double cDarcyInCorrectUnit = RiaEclipseUnitTools::darcysConstant(caseToApply->eclipseCaseData()->unitsType());
const RigMainGrid* mainGrid = caseToApply->eclipseCaseData()->mainGrid(); const RigMainGrid* mainGrid = caseToApply->eclipseCaseData()->mainGrid();
const RigCaseCellResultsData* results = caseToApply->results(RiaDefines::MATRIX_MODEL); const RigCaseCellResultsData* results = caseToApply->results(RiaDefines::MATRIX_MODEL);
size_t pressureResultIndex = results->findScalarResultIndex(RiaDefines::DYNAMIC_NATIVE, "PRESSURE"); size_t pressureResultIndex = results->findScalarResultIndex(RiaDefines::DYNAMIC_NATIVE, "PRESSURE");
const RigActiveCellInfo* actCellInfo = caseToApply->eclipseCaseData()->activeCellInfo(RiaDefines::MATRIX_MODEL); const RigActiveCellInfo* actCellInfo = caseToApply->eclipseCaseData()->activeCellInfo(RiaDefines::MATRIX_MODEL);
const std::vector<std::vector<double>>* pressureResultVector = nullptr; const std::vector<std::vector<double>>* pressureResultVector = nullptr;
const std::vector<double>* originalMatrixPressures = nullptr; const std::vector<double>* originalMatrixPressures = nullptr;
const std::vector<double>* currentMatrixPressures = nullptr; const std::vector<double>* currentMatrixPressures = nullptr;
if (pressureDropScaling != NO_SCALING) if (pdParams.pressureDropScaling != NO_SCALING)
{ {
pressureResultVector = &results->cellScalarResults(pressureResultIndex); pressureResultVector = &results->cellScalarResults(pressureResultIndex);
CVF_ASSERT(!pressureResultVector->empty()); CVF_ASSERT(!pressureResultVector->empty());
originalMatrixPressures = &(pressureResultVector->front()); originalMatrixPressures = &(pressureResultVector->front());
currentMatrixPressures = originalMatrixPressures; currentMatrixPressures = originalMatrixPressures;
if (pressureScalingTimeStep < pressureResultVector->size()) if (pdParams.pressureScalingTimeStep < pressureResultVector->size())
{ {
currentMatrixPressures = &pressureResultVector->at(pressureScalingTimeStep); currentMatrixPressures = &pressureResultVector->at(pdParams.pressureScalingTimeStep);
} }
} }
double originalWellPressure = pressureScalingWBHP; double originalWellPressure = pdParams.pressureScalingWBHP;
double currentWellPressure = pressureScalingWBHP; double currentWellPressure = pdParams.pressureScalingWBHP;
if (pressureDropScaling == MATRIX_TO_WELL_DP_OVER_INITIAL_DP && pressureScalingTimeStep != -1) if (pdParams.pressureDropScaling != NO_SCALING && pdParams.wbhpFromSummaryCase)
{ {
// Find well pressures (WBHP) from summary case. // Find well pressures (WBHP) from summary case.
getWellPressuresFromSummaryData(caseToApply, wellPathName, pressureScalingTimeStep, &originalWellPressure, &currentWellPressure); getWellPressuresFromSummaryData(
caseToApply, wellPathName, pdParams.pressureScalingTimeStep, &originalWellPressure, &currentWellPressure);
} }
// To handle several fractures in the same eclipse cell we need to keep track of the transmissibility // To handle several fractures in the same eclipse cell we need to keep track of the transmissibility
// to the well from each fracture intersecting the cell and sum these transmissibilities at the end. // to the well from each fracture intersecting the cell and sum these transmissibilities at the end.
@ -316,7 +294,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
// Insert total transmissibility from eclipse-cell to well for this fracture into the map // Insert total transmissibility from eclipse-cell to well for this fracture into the map
std::map<size_t, double> matrixToWellTrans = calculateMatrixToWellTransmissibilities(transCondenser); std::map<size_t, double> matrixToWellTrans = calculateMatrixToWellTransmissibilities(transCondenser);
if (pressureDropScaling == MATRIX_TO_FRACTURE_DP_OVER_MAX_DP || pressureDropScaling == MATRIX_TO_FRACTURE_DP_OVER_AVG_DP) if (pdParams.pressureDropScaling == MATRIX_TO_FRACTURE_DP_OVER_MAX_DP || pdParams.pressureDropScaling == MATRIX_TO_FRACTURE_DP_OVER_AVG_DP)
{ {
RigTransmissibilityCondenser scaledCondenser = transCondenser; RigTransmissibilityCondenser scaledCondenser = transCondenser;
// 1. Scale matrix to fracture transmissibilities by matrix to fracture pressure // 1. Scale matrix to fracture transmissibilities by matrix to fracture pressure
@ -324,18 +302,17 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
scaledCondenser.scaleMatrixToFracTransByMatrixFracDP(actCellInfo, scaledCondenser.scaleMatrixToFracTransByMatrixFracDP(actCellInfo,
currentWellPressure, currentWellPressure,
*currentMatrixPressures, *currentMatrixPressures,
pressureDropScaling == pdParams.pressureDropScaling == MATRIX_TO_FRACTURE_DP_OVER_AVG_DP);
MATRIX_TO_FRACTURE_DP_OVER_AVG_DP);
// 2: Calculate new external transmissibilities // 2: Calculate new external transmissibilities
scaledCondenser.calculateCondensedTransmissibilities(); scaledCondenser.calculateCondensedTransmissibilities();
if (transCorrection == NO_CORRECTION) if (pdParams.transCorrection == NO_CORRECTION)
{ {
// Calculate effective matrix to well transmissibilities. // Calculate effective matrix to well transmissibilities.
std::map<size_t, double> effectiveMatrixToWellTransBeforeCorrection = calculateMatrixToWellTransmissibilities(scaledCondenser); std::map<size_t, double> effectiveMatrixToWellTransBeforeCorrection = calculateMatrixToWellTransmissibilities(scaledCondenser);
matrixToWellTrans = effectiveMatrixToWellTransBeforeCorrection; matrixToWellTrans = effectiveMatrixToWellTransBeforeCorrection;
} }
else if (transCorrection == HOGSTOL_CORRECTION) else if (pdParams.transCorrection == HOGSTOL_CORRECTION)
{ {
// Høgstøl correction. // Høgstøl correction.
// 1. Calculate new effective fracture to well transmissiblities // 1. Calculate new effective fracture to well transmissiblities
@ -346,10 +323,10 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
matrixToWellTrans = effectiveMatrixToWellTrans; matrixToWellTrans = effectiveMatrixToWellTrans;
} }
} }
else if (pressureDropScaling == MATRIX_TO_WELL_DP_OVER_INITIAL_DP) else if (pdParams.pressureDropScaling == MATRIX_TO_WELL_DP_OVER_INITIAL_DP)
{ {
RigTransmissibilityCondenser scaledCondenser = transCondenser; RigTransmissibilityCondenser scaledCondenser = transCondenser;
// From Høgstøl "Hydraulic Fracturing SoW 2.8 outside contract Fracture Transmissibility Calculations for Differential Depletion": // From Høgstøl "Hydraulic Fracturing SoW 2.8 outside contract fracture Transmissibility Calculations for Differential Depletion":
// 1. Scale matrix to fracture transmissibilities by matrix to well pressure // 1. Scale matrix to fracture transmissibilities by matrix to well pressure
std::map<size_t, double> originalLumpedMatrixToFractureTrans = std::map<size_t, double> originalLumpedMatrixToFractureTrans =
scaledCondenser.scaleMatrixToFracTransByMatrixWellDP( scaledCondenser.scaleMatrixToFracTransByMatrixWellDP(
@ -357,13 +334,13 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
// 2: Calculate new external transmissibilities // 2: Calculate new external transmissibilities
scaledCondenser.calculateCondensedTransmissibilities(); scaledCondenser.calculateCondensedTransmissibilities();
if (transCorrection == NO_CORRECTION) if (pdParams.transCorrection == NO_CORRECTION)
{ {
// Calculate effective matrix to well transmissibilities. // Calculate effective matrix to well transmissibilities.
std::map<size_t, double> effectiveMatrixToWellTransBeforeCorrection = calculateMatrixToWellTransmissibilities(scaledCondenser); std::map<size_t, double> effectiveMatrixToWellTransBeforeCorrection = calculateMatrixToWellTransmissibilities(scaledCondenser);
matrixToWellTrans = effectiveMatrixToWellTransBeforeCorrection; matrixToWellTrans = effectiveMatrixToWellTransBeforeCorrection;
} }
else if (transCorrection == HOGSTOL_CORRECTION) else if (pdParams.transCorrection == HOGSTOL_CORRECTION)
{ {
// Høgstøl correction. // Høgstøl correction.
// 1. Calculate new effective fracture to well transmissiblities // 1. Calculate new effective fracture to well transmissiblities
@ -418,14 +395,18 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportFractureCompletionsImpl::getWellPressuresFromSummaryData(const RimEclipseCase* caseToApply, const QString &wellPathName, int currentTimeStep, double* originalWellPressure, double* currentWellPressure) void RicExportFractureCompletionsImpl::getWellPressuresFromSummaryData(const RimEclipseCase* caseToApply,
const QString& wellPathName,
int currentTimeStep,
double* originalWellPressure,
double* currentWellPressure)
{ {
const RimEclipseResultCase* resultCase = dynamic_cast<const RimEclipseResultCase*>(caseToApply); const RimEclipseResultCase* resultCase = dynamic_cast<const RimEclipseResultCase*>(caseToApply);
if (resultCase) if (resultCase)
{ {
std::vector<QDateTime> caseTimeSteps = resultCase->timeStepDates(); std::vector<QDateTime> caseTimeSteps = resultCase->timeStepDates();
QDateTime originalDate = caseTimeSteps.front(); QDateTime originalDate = caseTimeSteps.front();
QDateTime currentDate = caseTimeSteps[currentTimeStep]; QDateTime currentDate = caseTimeSteps[currentTimeStep];
RifEclipseSummaryAddress wbhpPressureAddress = RifEclipseSummaryAddress::wellAddress("WBHP", wellPathName.toStdString()); RifEclipseSummaryAddress wbhpPressureAddress = RifEclipseSummaryAddress::wellAddress("WBHP", wellPathName.toStdString());
RimSummaryCaseMainCollection* mainCollection = RiaSummaryTools::summaryCaseMainCollection(); RimSummaryCaseMainCollection* mainCollection = RiaSummaryTools::summaryCaseMainCollection();

View File

@ -37,6 +37,7 @@ class RimWellPath;
class QTextStream; class QTextStream;
class QString; class QString;
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -57,22 +58,40 @@ public:
HOGSTOL_CORRECTION HOGSTOL_CORRECTION
}; };
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
struct PressureDepletionParameters
{
PressureDepletionParameters(PressureDepletionTransScaling pressureDropScaling = NO_SCALING,
PressureDepletionTransCorrection transCorrection = NO_CORRECTION,
int pressureScalingTimeStep = 0,
bool wbhpFromSummaryCase = false,
double pressureScalingWBHP = 200.0)
: pressureDropScaling(pressureDropScaling)
, transCorrection(transCorrection)
, pressureScalingTimeStep(pressureScalingTimeStep)
, wbhpFromSummaryCase(wbhpFromSummaryCase)
, pressureScalingWBHP(pressureScalingWBHP)
{}
PressureDepletionTransScaling pressureDropScaling;
PressureDepletionTransCorrection transCorrection;
int pressureScalingTimeStep;
bool wbhpFromSummaryCase;
double pressureScalingWBHP;
};
static std::vector<RigCompletionData> generateCompdatValuesForWellPath(RimWellPath* wellPath, static std::vector<RigCompletionData> generateCompdatValuesForWellPath(RimWellPath* wellPath,
RimEclipseCase* caseToApply, RimEclipseCase* caseToApply,
std::vector<RicWellPathFractureReportItem>* fractureDataForReport, std::vector<RicWellPathFractureReportItem>* fractureDataForReport,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling = NO_SCALING, PressureDepletionParameters pdParams = PressureDepletionParameters());
PressureDepletionTransCorrection transCorrection = NO_CORRECTION,
int pressureScalingTimeStep = 0,
double pressureScalingWBHP = 200.0);
static std::vector<RigCompletionData> generateCompdatValuesForSimWell(RimEclipseCase* eclipseCase, static std::vector<RigCompletionData> generateCompdatValuesForSimWell(RimEclipseCase* eclipseCase,
const RimSimWellInView* well, const RimSimWellInView* well,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams = PressureDepletionParameters());
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP = 200.0);
static std::vector<RigCompletionData> generateCompdatValues(RimEclipseCase* caseToApply, static std::vector<RigCompletionData> generateCompdatValues(RimEclipseCase* caseToApply,
const QString& wellPathName, const QString& wellPathName,
@ -80,10 +99,7 @@ public:
const std::vector<const RimFracture*>& fractures, const std::vector<const RimFracture*>& fractures,
std::vector<RicWellPathFractureReportItem>* fractureDataReportItems, std::vector<RicWellPathFractureReportItem>* fractureDataReportItems,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling = NO_SCALING, PressureDepletionParameters pdParams = PressureDepletionParameters());
PressureDepletionTransCorrection transCorrection = NO_CORRECTION,
int pressureScalingTimeStep = 0,
double pressureScalingWBHP = 200.0);
private: private:
static std::vector<RigCompletionData> generateCompdatValuesConst(const RimEclipseCase* caseToApply, static std::vector<RigCompletionData> generateCompdatValuesConst(const RimEclipseCase* caseToApply,
@ -92,10 +108,7 @@ private:
const std::vector<const RimFracture*>& fractures, const std::vector<const RimFracture*>& fractures,
std::vector<RicWellPathFractureReportItem>* fractureDataReportItems, std::vector<RicWellPathFractureReportItem>* fractureDataReportItems,
QTextStream* outputStreamForIntermediateResultsText, QTextStream* outputStreamForIntermediateResultsText,
PressureDepletionTransScaling pressureDropScaling, PressureDepletionParameters pdParams);
PressureDepletionTransCorrection transCorrection,
int pressureScalingTimeStep,
double pressureScalingWBHP);
static void getWellPressuresFromSummaryData(const RimEclipseCase* caseToApply, const QString &wellPathName, int currentTimeStep, double* originalWellPressure, double* currentWellPressure); static void getWellPressuresFromSummaryData(const RimEclipseCase* caseToApply, const QString &wellPathName, int currentTimeStep, double* originalWellPressure, double* currentWellPressure);

View File

@ -226,10 +226,12 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
exportSettings.caseToApply(), exportSettings.caseToApply(),
reportItems, reportItems,
fractureTransmissibilityExportInformationStream.get(), fractureTransmissibilityExportInformationStream.get(),
exportSettings.transScalingType(), RicExportFractureCompletionsImpl::PressureDepletionParameters(
exportSettings.transScalingCorrection(), exportSettings.transScalingType(),
exportSettings.transScalingWBHPTimeStep(), exportSettings.transScalingCorrection(),
exportSettings.transScalingWBHP()); exportSettings.transScalingTimeStep(),
exportSettings.transScalingSummaryWBHP(),
exportSettings.transScalingWBHP()));
appendCompletionData(&completionsPerEclipseCellAllCompletionTypes, fractureCompletionData); appendCompletionData(&completionsPerEclipseCellAllCompletionTypes, fractureCompletionData);
appendCompletionData(&completionsPerEclipseCellFracture, fractureCompletionData); appendCompletionData(&completionsPerEclipseCellFracture, fractureCompletionData);
@ -269,9 +271,16 @@ void RicWellPathExportCompletionDataFeatureImpl::exportCompletions(const std::ve
std::vector<RigCompletionData> fractureCompletionData = std::vector<RigCompletionData> fractureCompletionData =
RicExportFractureCompletionsImpl::generateCompdatValuesForSimWell( RicExportFractureCompletionsImpl::generateCompdatValuesForSimWell(
exportSettings.caseToApply(), simWell, fractureTransmissibilityExportInformationStream.get(), exportSettings.caseToApply(),
exportSettings.transScalingType(), exportSettings.transScalingCorrection(), simWell,
exportSettings.transScalingWBHPTimeStep(), exportSettings.transScalingWBHP()); fractureTransmissibilityExportInformationStream.get(),
RicExportFractureCompletionsImpl::PressureDepletionParameters(
exportSettings.transScalingType(),
exportSettings.transScalingCorrection(),
exportSettings.transScalingTimeStep(),
exportSettings.transScalingSummaryWBHP(),
exportSettings.transScalingWBHP()));
appendCompletionData(&completionsPerEclipseCell, fractureCompletionData); appendCompletionData(&completionsPerEclipseCell, fractureCompletionData);
for (auto& data : completionsPerEclipseCell) for (auto& data : completionsPerEclipseCell)