mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3543 Pressure Depletion Indicate the production start of the different wells for the time steps.
This commit is contained in:
parent
643dd5596b
commit
1b155ae71f
@ -19,6 +19,11 @@
|
|||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
|
||||||
#include "RicExportCompletionDataSettingsUi.h"
|
#include "RicExportCompletionDataSettingsUi.h"
|
||||||
|
#include "RicExportFractureCompletionsImpl.h"
|
||||||
|
|
||||||
|
#include "RimProject.h"
|
||||||
|
#include "RimWellPath.h"
|
||||||
|
#include "RimWellPathCompletions.h"
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
namespace caf
|
namespace caf
|
||||||
@ -192,7 +197,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 == &transScalingTimeStep)
|
if (fieldNeedingOptions == &timeStep)
|
||||||
{
|
{
|
||||||
QStringList timeStepNames;
|
QStringList timeStepNames;
|
||||||
|
|
||||||
@ -205,6 +210,29 @@ QList<caf::PdmOptionItemInfo>
|
|||||||
options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i));
|
options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (fieldNeedingOptions == &transScalingTimeStep)
|
||||||
|
{
|
||||||
|
std::map<int, QStringList> wellProductionStartStrings = generateWellProductionStartStrings();
|
||||||
|
|
||||||
|
QStringList timeStepNames;
|
||||||
|
|
||||||
|
if (caseToApply)
|
||||||
|
{
|
||||||
|
timeStepNames = caseToApply->timeStepStrings();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < timeStepNames.size(); i++)
|
||||||
|
{
|
||||||
|
QString timeStepString = timeStepNames[i];
|
||||||
|
auto it = wellProductionStartStrings.find(i);
|
||||||
|
if (it != wellProductionStartStrings.end())
|
||||||
|
{
|
||||||
|
timeStepString += QString(" [Start: %1]").arg(it->second.join(", "));
|
||||||
|
}
|
||||||
|
|
||||||
|
options.push_back(caf::PdmOptionItemInfo(timeStepString, i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
options = RicCaseAndFileExportSettingsUi::calculateValueOptions(fieldNeedingOptions, useOptionsOnly);
|
options = RicCaseAndFileExportSettingsUi::calculateValueOptions(fieldNeedingOptions, useOptionsOnly);
|
||||||
@ -285,3 +313,34 @@ void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, c
|
|||||||
|
|
||||||
uiOrdering.skipRemainingFields();
|
uiOrdering.skipRemainingFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::map<int, QStringList> RicExportCompletionDataSettingsUi::generateWellProductionStartStrings()
|
||||||
|
{
|
||||||
|
std::map<int, QStringList> wellProductionStartStrings;
|
||||||
|
|
||||||
|
const RimProject* project = nullptr;
|
||||||
|
if (caseToApply)
|
||||||
|
{
|
||||||
|
caseToApply->firstAncestorOrThisOfTypeAsserted(project);
|
||||||
|
for (const RimWellPath* wellPath : project->allWellPaths())
|
||||||
|
{
|
||||||
|
int initialWellProductionTimeStep = -1;
|
||||||
|
double initialWellPressure = 0.0;
|
||||||
|
double currentWellPressure = 0.0;
|
||||||
|
RicExportFractureCompletionsImpl::getWellPressuresAndInitialProductionTimeStepFromSummaryData(caseToApply,
|
||||||
|
wellPath->completions()->wellNameForExport(),
|
||||||
|
0,
|
||||||
|
&initialWellProductionTimeStep,
|
||||||
|
&initialWellPressure,
|
||||||
|
¤tWellPressure);
|
||||||
|
if (initialWellProductionTimeStep >= 0)
|
||||||
|
{
|
||||||
|
wellProductionStartStrings[initialWellProductionTimeStep] += QString("%1 (%2 Bar)").arg(wellPath->name()).arg(initialWellPressure, 4, 'f', 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return wellProductionStartStrings;
|
||||||
|
}
|
||||||
|
@ -95,6 +95,7 @@ protected:
|
|||||||
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
|
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
|
||||||
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||||
|
|
||||||
|
std::map<int, QStringList> generateWellProductionStartStrings();
|
||||||
private:
|
private:
|
||||||
caf::PdmField<CombinationModeType> m_reportCompletionTypesSeparately;
|
caf::PdmField<CombinationModeType> m_reportCompletionTypesSeparately;
|
||||||
|
|
||||||
|
@ -91,6 +91,13 @@ public:
|
|||||||
QTextStream* outputStreamForIntermediateResultsText,
|
QTextStream* outputStreamForIntermediateResultsText,
|
||||||
PressureDepletionParameters pdParams = PressureDepletionParameters());
|
PressureDepletionParameters pdParams = PressureDepletionParameters());
|
||||||
|
|
||||||
|
static void getWellPressuresAndInitialProductionTimeStepFromSummaryData(const RimEclipseCase* caseToApply,
|
||||||
|
const QString& wellPathName,
|
||||||
|
int currentTimeStep,
|
||||||
|
int* initialTimeStep,
|
||||||
|
double* initialWellPressure,
|
||||||
|
double* currentWellPressure);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::vector<RigCompletionData> generateCompdatValuesConst(const RimEclipseCase* caseToApply,
|
static std::vector<RigCompletionData> generateCompdatValuesConst(const RimEclipseCase* caseToApply,
|
||||||
const QString& wellPathName,
|
const QString& wellPathName,
|
||||||
@ -100,13 +107,6 @@ private:
|
|||||||
QTextStream* outputStreamForIntermediateResultsText,
|
QTextStream* outputStreamForIntermediateResultsText,
|
||||||
PressureDepletionParameters pdParams);
|
PressureDepletionParameters pdParams);
|
||||||
|
|
||||||
static void getWellPressuresAndInitialProductionTimeStepFromSummaryData(const RimEclipseCase* caseToApply,
|
|
||||||
const QString& wellPathName,
|
|
||||||
int currentTimeStep,
|
|
||||||
int* initialTimeStep,
|
|
||||||
double* initialWellPressure,
|
|
||||||
double* currentWellPressure);
|
|
||||||
|
|
||||||
static bool checkForStimPlanConductivity(const RimFractureTemplate* fracTemplate, const RimFracture* fracture);
|
static bool checkForStimPlanConductivity(const RimFractureTemplate* fracTemplate, const RimFracture* fracture);
|
||||||
|
|
||||||
static void calculateInternalFractureTransmissibilities(const RigFractureGrid* fractureGrid,
|
static void calculateInternalFractureTransmissibilities(const RigFractureGrid* fractureGrid,
|
||||||
|
Loading…
Reference in New Issue
Block a user