mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 07:00:17 -05:00
#14079 Well Event: Export MSW keywords per well via explicit well list
Replace the include_welsegs / include_compsegs boolean flags on the schedule-generation API with a list of wells (export_msw_for_wells) that gates the multi-segment-well keywords. WSEGVALV and WSEGAICD are now gated the same way as WELSEGS and COMPSEGS: all four are emitted only for wells present in the list. An empty list (the default) suppresses MSW export for all wells, while COMPDAT and well-control keywords are unaffected. C++: RicScheduleDataGenerator takes a std::set<const RimWellPath*> mswWells and generateMswForWell early-returns for wells not in the set. RimcWellEventTimeline_generateSchedule replaces the two bool fields with a scriptable PdmPtrArrayField<RimWellPath*>, resolved via ptrReferencedObjectsByType(). Python: generate_schedule_text / generate_schedule expose export_msw_for_wells (List[WellPath]) instead of the boolean flags. Updates the well_event_schedule example and adds regression tests covering the empty-list default, per-well selection, and WSEGVALV/WSEGAICD gating.
This commit is contained in:
1 parent
a8306ebb81
commit
24269b07d5
7 files changed
+287
-125
No files matched your search
@@ -38,6 +38,7 @@
|
||||
#include <QDateTime>
|
||||
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
|
||||
CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimWellEventTimeline, RimcWellEventTimeline_addPerfEvent, "AddPerfEvent" );
|
||||
|
||||
@@ -568,8 +569,13 @@ RimcWellEventTimeline_generateSchedule::RimcWellEventTimeline_generateSchedule(
|
||||
CAF_PDM_InitObject( "Generate Schedule", "", "", "Generate Eclipse schedule text for all wells in the collection" );
|
||||
|
||||
CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "", "", "", "Eclipse Case" );
|
||||
CAF_PDM_InitScriptableField( &m_includeWelsegs, "IncludeWelsegs", true, "", "", "", "Include WELSEGS keyword in the exported schedule" );
|
||||
CAF_PDM_InitScriptableField( &m_includeCompsegs, "IncludeCompsegs", true, "", "", "", "Include COMPSEGS keyword in the exported schedule" );
|
||||
CAF_PDM_InitScriptableFieldNoDefault( &m_exportMswForWells,
|
||||
"ExportMswForWells",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"Wells for which multi-segment-well keywords (WELSEGS, COMPSEGS, WSEGVALV, WSEGAICD) are "
|
||||
"exported" );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -619,8 +625,10 @@ std::expected<caf::PdmObjectHandle*, QString> RimcWellEventTimeline_generateSche
|
||||
return std::unexpected( QString( "No well paths with events found" ) );
|
||||
}
|
||||
|
||||
QString scheduleText =
|
||||
RicScheduleDataGenerator::generateSchedule( *timeline, *eclipseCase, wellPathsWithEvents, dates, m_includeWelsegs(), m_includeCompsegs() );
|
||||
std::vector<RimWellPath*> mswWellPaths = m_exportMswForWells.ptrReferencedObjectsByType();
|
||||
std::set<const RimWellPath*> mswWells( mswWellPaths.begin(), mswWellPaths.end() );
|
||||
|
||||
QString scheduleText = RicScheduleDataGenerator::generateSchedule( *timeline, *eclipseCase, wellPathsWithEvents, dates, mswWells );
|
||||
|
||||
// Return the schedule text in a data container
|
||||
auto* dataObject = new RimcDataContainerString();
|
||||
|
||||
Reference in new issue
Block a user