Commit Graph
141 Commits
Author SHA1 Message Date
Magne Sjaastad 8d0c3f340b CompletionExport: Add RicMswBranchBuilder and RicWellPathExportMswGeometryPath
Add new MswExport subdirectory with branch builder and geometry path classes
as part of the simplified MSW export approach. Update CMakeLists to include
the new files and add CompletionExportCommands to the include path.
2026-03-27 14:47:32 +01:00
Magne Sjaastad 20052771ad CompletionExport: Simplify findFishboneLateralsWellBoreParts and add unit tests
- Make findFishboneLateralsWellBoreParts public and return result by value
- Move WellBorePartForTransCalc to its own header RicWellBorePartForTransCalc.h
- Replace MSW tree traversal with direct RimFishbones lateral geometry iteration
- Add setSubsOrientationMode() to RimFishbones for deterministic test angles
- Add unit tests validating intersected cells and result values
2026-03-23 10:29:58 +01:00
Magne Sjaastad 83f667cdf8 Replace RimTools::wellPathCollection() with RimWellPathCollection::instance()
Remove the redundant wrapper function and update all call sites to use RimWellPathCollection::instance() directly.
Remove unused #include "RimTools.h" from files using RimWellPathCollection::instance() directly
2026-03-18 13:41:27 +01:00
JJ 24be78f105 Tie-in valve improvements (#13661)
Support (bool, something) pairs as tuples on python side.
Support custom outlet valve md
Add python test for custom outlet valve md
Use tie-in depth as default for custom valve md
Standalone valve creation and display updates
Update MSW valve export
Add valve open/shut flag.
Add python examples
2026-03-06 12:01:14 +01:00
Kristian Bendiksen 21f00ffd0a Order keywords per date by priority in RicScheduleDataGenerator
Refactor generateDateSection to collect keyword output into a map
keyed by keyword name, then emit in a defined priority order
(WELSPECS, COMPORD, GRUPTREE, COMPDAT, etc.) with remaining
keywords appended afterward.
2026-02-20 13:43:58 +01:00
Kristian Bendiksen 3c838e69cd Add WELSPECS keyword to schedule. 2026-02-20 13:43:58 +01:00
Magne Sjaastad 33bf89d196 Dual porosity: Shift K-layer to fracture section for completion export
For dual porosity models, the first N K-layers represent MATRIX and
K-layers N+1 to 2N represent FRACTURE. Shift K to the fracture section
at production points so exported completion data (COMPDAT, WPIMULT,
COMPLUMP, COMPSEGS) references the correct K-layer. Subtract the offset
in LGR bounding box computation where original grid K is needed.
2026-02-20 09:27:20 +01:00
Magne Sjaastad 05623a3fc6 Refactor: Extract RicTransmissibilityCalculator from completion export
Move transmissibility calculation logic (TransmissibilityData,
connection factor computation, non-Darcy flow calculations) from
RicWellPathExportCompletionDataFeatureImpl into a dedicated
RicTransmissibilityCalculator class. Add unit tests for the
extracted calculator.
2026-02-20 09:27:20 +01:00
Magne Sjaastad d52f595c41 Refactor: Rename RiaStatisticsTools to RigStatisticsTools
Replaced all references to RiaStatisticsTools with RigStatisticsTools across the codebase, including header includes, static method calls, and test files. Updated CMake configuration to remove RiaStatisticsTools and add RigStatisticsTools. Renamed and updated related unit tests. No changes to logic or algorithms; this is a namespace and organizational refactor for consistency. Also added ApplicationLibCode include directories as PRIVATE to relevant targets.
2026-02-18 09:22:39 +01:00
Kristian Bendiksen 1ec53cc3f2 #13425 Fix ICD/AICD valve output in schedule generation
ICD valves now produce WSEGVALV and AICD valves now produce WSEGAICD
in the generated schedule. Three root causes were fixed:

- Create per-event valve templates with proper parameters instead of
  reusing default templates that lack orifice diameter and AICD fields
- Use perforation interval range for ICD/AICD valve positioning so
  valveLocations() returns non-empty results for the accumulator
- Add 5 AICD parameter fields to the Python API and event classes
2026-02-12 08:15:22 +01:00
Kristian Bendiksen 82e2dbc434 #13425 Fix WELSEGS date scoping: tubing events only appear at their event dates
Tubing event diameter/roughness values were leaking into earlier date
sections in the generated schedule. The WELSEGS collection functions
did not filter intervals by export date, unlike COMPSEGS and other
keywords which already received the exportDate parameter.

Thread exportDate through collectWelsegsData, collectWelsegsDataRecursively,
and collectWelsegsSegment. Add date-aware overloads of getDiameterAtMD and
getRoughnessAtMD that use isActiveOnDate to filter intervals. Update test
to verify tubing values only appear at their scheduled dates.
2026-02-12 08:15:22 +01:00
Kristian Bendiksen 6782d6a40e Refactor: remove unused code. 2026-02-12 08:15:22 +01:00
Kristian Bendiksen 561006c60c Refactor: Use export date instead of time step for MSW export. 2026-02-12 08:15:22 +01:00
Kristian Bendiksen a4dad97024 #13425 Add time-dependent well events and schedule data generation
Implement timeline-based event system for managing temporal changes in
well completions, perforations, valves, and production controls.

Features:
- Event timeline container with date-based querying
- Six event types: PERF, VALVE, TUBING, WSTATE, WTYPE, WCONTROL
- Schedule keyword generation (DATES, COMPDAT, WELSEGS, WCONPROD, WCONINJE)
- Multi-well schedule generation support
- Python GRPC API for event management
- YAML configuration file support
- Comprehensive test suite

Implementation:
- New directory: ApplicationLibCode/ProjectDataModel/WellEvents/
- Event classes inherit from RimWellEvent base class
- RimWellEventTimeline integrated into RimWellPath
- RicScheduleDataGenerator for multi-well schedule export
- Python API: event_timeline(), add_perf_event(), add_valve_event(), etc.
- Tests verify all event types and YAML config parsing

#13425 Add date tracking to valves and diameter/roughness intervals

Add creation date fields to RimWellPathValve and RimDiameterRoughnessInterval
to support filtering objects by date during completion data export.

- Add m_useCustomStartDate and m_startDate fields
- Add enableCustomStartDate(), setCustomStartDate(), isActiveOnDate() methods
- Set creation dates when applying valve and tubing events in RimWellEventTimeline

#13425 Add date-based filtering for schedule data export

Add optional export date parameter to MSW data collection functions to filter
valves and perforations based on their creation dates during schedule export.

- Add exportDate parameter to collectWsegvalvData, collectWsegAicdData,
  collectWsegSicdData, and collectCompsegData functions
- Filter valves by checking isActiveOnDate() on the associated RimWellPathValve
- Add RimPerforationInterval reference to RicMswPerforation for date filtering
- Pass export date from RicScheduleDataGenerator through the extraction chain

This ensures segment numbers reflect the full model while only including
objects active on the export date in output keywords.

Add test to prove compsegs changes over time.

#13425 Fix mypy type checking errors in well_events.py

- Add type annotations to all function parameters
- Fix generic type hints (dict -> Dict[str, Any])
- Import Any type for proper type safety
- Add type: ignore for method reassignment
- All 31 tests pass

#13425 Add schedule-level keyword events for non-well-specific keywords

Add a new event type called "Keyword Event" for schedule-level Eclipse
keywords (RPTRST, GRUPTREE, RPTSCHED, etc.) that are NOT tied to a
specific well path. This complements the existing RimWellEventKeyword
which operates at the well level.

- Add RimKeywordEvent class inheriting from RimWellEvent with null wellPath
- Add SCHEDULE_KEYWORD enum value to EventType
- Add addKeywordEvent() method to RimWellEventTimeline
- Add AddKeywordEvent Python API method to RimcWellEventTimeline
- Update RicScheduleDataGenerator to output global keywords after well sections
- Add Python wrapper add_keyword_event() with type inference
- Add tests and examples for RPTRST, GRUPTREE keywords
2026-02-12 08:15:22 +01:00
Kristian Bendiksen 3e19046776 Janitor: remove unused code. 2026-02-02 16:49:11 +01:00
JJ 94c3059fd8 Add support for SICD valves (#13496)
* Add SICD parameters
* Add wsegsicd valves to completion export
* Add python method to read template info from valve
* Update tests
2026-01-29 11:16:05 +01:00
Magne Sjaastad d53f71ae45 Add MSW segment support for WELSEGS-based visualization
Introduce RimMswSegment and RimMswSegmentCollection classes to manage and visualize Multi-Segment Well (MSW) segments from Eclipse WELSEGS data. Update WelsegsRow to include source well name for correct segment grouping. Integrate new classes into the build system and UI, enabling accurate 3D well path representation and improved segment management in ResInsight.
2026-01-20 14:13:22 +01:00
Kristian Bendiksen 4650ac0820 MSW Export: fix WELSEGS off-by-one for "join segment". 2025-12-17 16:34:04 +01:00
Kristian Bendiksen da48c78b02 #13316 Custom MSW well segment definitions 2025-12-17 16:34:04 +01:00
Magne Sjaastad 6d480f6012 Add some MSW documentation 2025-12-11 13:43:56 +01:00
Magne Sjaastad 4f53c2692e #13295 Always use grid local IJ for WELSPECS/WELSPECL 2025-12-08 15:22:00 +01:00
JJ 9f17dd81ff Add support for COMPLUMP keyword (#13273)
* Add support for COMPLUMP keyword, both in python interface, file export and opm flow jobs
* Add support for WPIMULT kw in opm flow jobs
* Always provide per connection dFactors in COMPDAT kw (negative value)
* Include LGR support in COMPLUMP file export
2025-12-04 19:25:41 +01:00
Magne Sjaastad a23599cb5d Completion export cleanup
Use MSW as postfix to base name
Drop "Unified" for individual well export
Remove export option Individually/Combined
Remove SPLIT_ON_WELL_AND_COMPLETION_TYPE
2025-12-02 16:03:56 +01:00
Magne Sjaastad 83db509b10 MSW: Make sure extension of custom file name is included 2025-11-25 12:41:20 +01:00
Magne Sjaastad e490d9ef87 Refactors MSW completion data extraction
- redirects export functions to use new MSW extraction code
- removes previous implementation
- fix missing parts of RigMswDataFormatter
2025-11-24 12:47:26 +01:00
Magne Sjaastad 0b74a4accc Removes addOneBasedCellIndex function 2025-11-17 19:45:14 +01:00
Magne Sjaastad 7e299c4841 Add support for more MSW tables in Python
* Use caf::VecIjk0
* Adds MSW tables to the gRPC interface
* Adds unified completion data retrieval
* Add unite tests for MSW data
2025-11-17 11:54:02 +01:00
Magne Sjaastad 9a3b626155 Remove unused parameter 2025-11-14 13:06:32 +01:00
magnesj 562ce12534 Fixes by clang-tidy 2025-11-14 05:52:13 +01:00
Magne Sjaastad ddbef1c7b8 Adds support for all planned MSW tables
* Add test models and projects used to verify experimental MSW export
* Fix text formatting of MSW tables
* Completes porting of all MSW tables

Supported keywords are `WELSEGS COMPSEGS WSEGVALV WSEGAICD`
2025-11-13 14:53:14 +01:00
JJ 6286a34297 Wellplanning: use updated MSW table data api (#13142)
* Update to use new table variable names aligned with opm common naming.
2025-11-07 10:05:53 +01:00
Magne Sjaastad d3cf618f0c Improve MSW variable names
Align MSW variable names with opm-common
2025-11-06 11:39:51 +01:00
Magne Sjaastad fd5bdc96d2 Enables experimental MSW export to new folder
Adds a feature keyword to enable an experimental MSW export
to a separate folder, facilitating testing of a new data
extraction approach.
2025-11-03 13:40:46 +01:00
Magne Sjaastad 88cf84a23a Assign branch number to main branches before completions 2025-11-03 13:40:46 +01:00
Magne Sjaastad ab1f053449 Rename and move Rig files 2025-10-31 08:11:19 +01:00
Magne Sjaastad a88fecdaa4 Adds MSW table data preparation tools
Introduces new classes and functions to prepare MSW table data for export.
2025-10-31 08:11:19 +01:00
Magne Sjaastad 73dd0e0667 Add special handling for TieIn ICVs, and keep default outlet segment for other completion types
* Add special handling for TieIn ICVs, and keep default outlet segment for other completion types(fishbones, fractures, ...)
* Update unit test related to change of tie-in logic
2025-10-27 12:39:22 +01:00
JJ 991e693f4d WELSPECS and COMPDAT export improvements (#13068)
* Generate keywords directly.
* Make sure ensemble settings in duplicated job is reset.
* Use same sort as file export
2025-10-24 11:10:25 +02:00
Magne Sjaastad 901bed8acd #13013 Ensures increasing MD for fishbone laterals
Positions the ICD segment at the end of the fishbone section to ensure that lateral MDs are larger than the ICD segment MDs.

This is required by the simulator and ensures correct flow modeling from laterals into the ICD segment.
2025-10-14 12:51:03 +02:00
JJ d56722782a Well Completion tables - Python interface (#12910) 2025-09-25 12:23:40 +02:00
Kristian Bendiksen b0483172b1 #12718 Add diameter and roughness specification for MD intervals
Implements interval-based diameter and roughness configuration for MSW completions
while maintaining backward compatibility with existing single-value approach.

- Add RimDiameterRoughnessInterval class for individual MD intervals
- Add RimDiameterRoughnessIntervalCollection for managing interval collections
- Extend RimMswCompletionParameters with interval-specific mode support
- Support both metric and field unit systems
- Provide validation and overlap detection for intervals
2025-08-21 08:48:43 +02:00
Magne Sjaastad 91e628da24 #12670 Skip completions with negative or invalid transmissibility 2025-08-05 15:26:46 +02:00
Magne Sjaastad 04dd18389d #12670 Skip completions with negative transmissibility 2025-07-25 15:01:28 +02:00
Magne Sjaastad 37041ad0a6 clang-19-tidy and clang-19-format fixes 2025-05-19 14:31:30 +02:00
Magne Sjaastad ae8446073b Refactors selection handling for improved code clarity
Modernize the interface to selection system. Create and return data instead of populating incoming parameters.
2025-04-09 07:21:54 +02:00
Magne Sjaastad 6b332269b4 Add scripting to fishbones (#12286)
* Improve python code generation tests
* Add setValveLocations
* Move code into RimFishbonesDefines
* Add scripting to fishbones
* Add scripting methods for fishbones
* Add example and test
2025-03-25 08:31:08 +01:00
Kristian Bendiksen afeedb1e22 Janitor: remove unnecessary disabling of clang-format. 2025-03-10 17:58:59 +01:00
Magne Sjaastad 28d3050433 #11871 Remove simulation well fractures and completion export 2025-02-03 18:19:03 +01:00
Magne Sjaastad ca0179d118 Remove obsolete CMake statements
When using modern CMake and Qt6 we can remove obsolete source_group() and QT_MOC_HEADERS
2025-01-28 07:01:42 +01:00
jonjenssen da683bed9e Move Rig well related things to subfolder and update include statements 2024-10-31 15:08:59 +01:00