diff --git a/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.cpp b/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.cpp index a4e99b89b8..eff9bc8d1e 100644 --- a/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.cpp +++ b/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.cpp @@ -19,6 +19,11 @@ #include "RiaApplication.h" #include "RicExportCompletionDataSettingsUi.h" +#include "RicExportFractureCompletionsImpl.h" + +#include "RimProject.h" +#include "RimWellPath.h" +#include "RimWellPathCompletions.h" // clang-format off namespace caf @@ -192,7 +197,7 @@ QList RicExportCompletionDataSettingsUi::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) { QList options; - if (fieldNeedingOptions == &timeStep || fieldNeedingOptions == &transScalingTimeStep) + if (fieldNeedingOptions == &timeStep) { QStringList timeStepNames; @@ -205,6 +210,29 @@ QList options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i)); } } + else if (fieldNeedingOptions == &transScalingTimeStep) + { + std::map 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 { options = RicCaseAndFileExportSettingsUi::calculateValueOptions(fieldNeedingOptions, useOptionsOnly); @@ -285,3 +313,34 @@ void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, c uiOrdering.skipRemainingFields(); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::map RicExportCompletionDataSettingsUi::generateWellProductionStartStrings() +{ + std::map 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; +} diff --git a/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.h b/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.h index 738cd25836..b742f99a39 100644 --- a/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.h +++ b/ApplicationCode/Commands/CompletionExportCommands/RicExportCompletionDataSettingsUi.h @@ -95,6 +95,7 @@ protected: QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override; void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; + std::map generateWellProductionStartStrings(); private: caf::PdmField m_reportCompletionTypesSeparately; diff --git a/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.h b/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.h index 3fc6922564..e4d2f958c4 100644 --- a/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.h +++ b/ApplicationCode/Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.h @@ -91,6 +91,13 @@ public: QTextStream* outputStreamForIntermediateResultsText, PressureDepletionParameters pdParams = PressureDepletionParameters()); + static void getWellPressuresAndInitialProductionTimeStepFromSummaryData(const RimEclipseCase* caseToApply, + const QString& wellPathName, + int currentTimeStep, + int* initialTimeStep, + double* initialWellPressure, + double* currentWellPressure); + private: static std::vector generateCompdatValuesConst(const RimEclipseCase* caseToApply, const QString& wellPathName, @@ -100,13 +107,6 @@ private: QTextStream* outputStreamForIntermediateResultsText, 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 void calculateInternalFractureTransmissibilities(const RigFractureGrid* fractureGrid,