Commit Graph
3501 Commits
Author SHA1 Message Date
Kristian Bendiksen a0dbbf6cb1 Remove deprecated size_t overloads from RigActiveCellInfo
Migrate all callers to use type-safe ReservoirCellIndex and
ActiveCellIndex wrappers, then remove the deprecated isActive(size_t),
cellResultIndex(size_t), and setCellResultIndex(size_t, size_t) methods.
2026-03-31 12:32:05 +02:00
Magne Sjaastad f9a081eb87 Migrate more classes to dynamic buttons 2026-03-31 10:52:29 +02:00
Magne Sjaastad a8ac98ce06 Replace PdmUiPushButtonEditor fields with dynamic buttons
Replace boolean push button fields used as UI triggers with dynamic buttons
added via addNewButton in defineUiOrdering, removing unnecessary field
boilerplate across multiple classes.
2026-03-31 09:16:52 +02:00
Magne Sjaastad 062fe388f7 #refactor Use RimNamedObject and RimCheckableNamedObject in annotation and cell filter classes 2026-03-31 08:58:26 +02:00
Kristian Bendiksen cbbcbb650c #2365 Replace PdmField<QString> with PdmField<caf::FilePath> for file path fields
Convert 11 file/directory path fields from QString to caf::FilePath across
ProjectDataModel classes for type safety and consistent path handling.

Fields converted: RimCalcScript::absoluteFileName,
RimScriptCollection::directory, RimBinaryExportSettings::fileName,
RimExportInputSettings::fileName, RimFractureExportSettings::fileName,
RimReservoirCellResultsStorage::m_resultCacheFileName,
RimProcess::m_workDir, RimWellIASettings::m_baseDir,
RimPlotTemplateFileItem::m_absoluteFileName,
RimWellMeasurement::m_filePath, RimFileWellPath::m_filePath.
2026-03-31 08:46:52 +02:00
Kristian Bendiksen 394bc6c3df #12489 Improve robustness of mean calculators
Replace asserts with early-return guards so zero or negative weights
are silently skipped instead of crashing. Add unit tests for zero-weight
and zero-value edge cases in all three calculator classes.

Fixes #12489.
2026-03-31 08:46:20 +02:00
Magne Sjaastad ba1055fbc4 #13813 Remove duplicated snapshotWindowContent overrides that replicate base class behavior 2026-03-30 17:59:01 +02:00
Kristian Bendiksen 5921c44be0 #4529 Remove nextValidId fields and calculate on the fly
Remove cached next-valid-ID member variables and compute them on demand
by scanning existing objects, following the pattern already used by
RimUserDefinedCalculationCollection. This eliminates unnecessary state
and potential corruption risks.

Fixes #4529.
2026-03-30 17:03:06 +02:00
Kristian Bendiksen 2374301385 #3284 Mohr's Circle: fix off-by-one in IJK display
Use caf::VecIjk0 in MohrsCirclesInfo and convert to VecIjk1 for
display, matching the 1-based indexing used in the 3D view.

Fixes #3284.
2026-03-30 17:02:48 +02:00
Magne Sjaastad 4798a879d0 Refactor based on review
Harmonize plot title enablement for sub-plots
Encapsulate tracking annotation management in RimCorrelationReportPlot
Improve snapshot capture in RimCorrelationReportPlot
2026-03-30 12:06:57 +02:00
Magne Sjaastad c49b6986c0 CorrelationReportPlot: Refinements, fixes, and simplifications
- Use RimViewWindow in RiuCorrelationReportPlotWidget constructor
- Update default dock layout to match desired screenshot
- Generalize context menu selection fixer to use caf::PdmObject
- Simplify code, fix event filter lifetime, plot titles, and disable summary plot zoom

RiuSummaryQwtPlot: Add missing override keyword to setZoomEnabled
2026-03-30 12:06:57 +02:00
Magne Sjaastad 3fa91d2d6b CorrelationReportPlot: Add time readout, fix context menus, and improve layout
- Add time readout to summary plot with static and tracking lines
- Fix unstable context menus by setting selection before menu build
- Support global default dock layout and enable summary plot
- Fix snapshot and hide tracking annotation on mouse leave
2026-03-30 12:06:57 +02:00
Magne Sjaastad d64dcefc07 CorrelationReportPlot: Add optional summary plot with ADS dock manager layout
- Add optional summary plot in upper right corner
- Replace fixed grid layout with ADS dock manager for flexible layout
- Show plot titles and set splitter width to 1px
- Use setupBeforeSave to persist dock layout state
2026-03-30 12:06:57 +02:00
Kristian Bendiksen 94757e93e6 #12957 Sector Model Export: replace Enable checkbox with None refinement mode
Add NONE to RefinementMode enum as the default, removing the separate
m_refineGrid checkbox. The UI now shows refinement options only when
Uniform or Non-Uniform mode is selected.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 49ea27ed62 #12957 Sector Model Export: require resolved max in RigGridExportAdapter
Move UNDEFINED max resolution to callers so it happens exactly once.
RigGridExportAdapter now asserts that max is resolved on construction.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 3067823e71 #12957 Sector Model Export: introduce RigRefinement interface hierarchy
Replace the monolithic RigNonUniformRefinement class with a proper
polymorphic hierarchy: RigRefinement (abstract base), RigNoRefinement
(identity), RigUniformRefinement (O(1) uniform), and
RigNonUniformRefinement (per-cell custom fractions).

Ownership uses std::unique_ptr<RigRefinement>, consumers receive
const RigRefinement&. This eliminates the misleading class name,
removes effectiveRefinement() indirection, and gives each refinement
mode an appropriately optimized implementation.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 4aa0910db3 #12957 Sector Model Export: add non-uniform refinement support to faults code path
Add RigNonUniformRefinement overloads for extractFaults and faultsKeyword,
following the existing dual-overload pattern. The Vec3st overloads now
delegate via fromUniform() to preserve backward compatibility. Update
addFaultsToDeckFile to call effectiveRefinement() instead of refinement().
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 5d6aba0f70 #12957 Sector Model Export: unified refinement abstraction via effectiveRefinement()
Add effectiveRefinement() to RicRefinementSettings, RicExportSectorModelUi, and
RigSimulationInputSettings, always returning RigNonUniformRefinement regardless of
whether uniform, non-uniform, or no refinement is active.

Merge the dual RigGridExportAdapter constructors into a single one taking
RigNonUniformRefinement, and unify transformIjkToSectorCoordinates to a single
overload. Eliminate all hasNonUniformRefinement() branching patterns in
RigSimulationInputTool.cpp in favour of effectiveRefinement().
2026-03-30 11:24:56 +02:00
Kristian Bendiksen e8a1431c36 #12957 Sector Model Export: extract refinement settings into RicRefinementSettings class
Move all refinement-related fields, enums, UI ordering, validation, and
logic from RicExportSectorModelUi into a dedicated RicRefinementSettings
PdmObject class to improve separation of concerns.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 3e0b2b3fe8 #12957 Sector Model Export: fix off-by-one in WELSPECS HEAD coordinates for non-uniform refinement
The non-uniform path produced 0-based indices using subcellCount/2,
while WELSPECS expects 1-based values. Use (subcellCount+1)/2 to match
the uniform formula semantics of (ref+1)/2.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 282175bdb4 #12957 Sector Model Export: add linear and logarithmic non-uniform refinement sub-modes
Add NonUniformSubMode enum (Custom Widths, Linear Equal Split, Logarithmic
Towards Center) to give users simpler alternatives to manually entering
comma-separated fractional widths.

Linear mode splits each cell in the range into N equal subcells.
Logarithmic mode auto-computes widths with finer resolution near the
center of the range using a geometric series.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen a9918f814e #12957 Sector Model Export: add logging for non-uniform refinement
Log sector size, grid-to-sector coordinate conversion, parsed widths,
clamping, and final refined grid dimensions to help diagnose refinement
issues.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 354ba9128c #12957 Sector Model Export: use original grid coordinates for non-uniform refinement range
The range start/end fields now refer to cell indices in the original
grid rather than sector-relative indices. Add validation warning when
the refinement range falls outside the sector model bounds.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 8a9daa94f2 #12957 Sector Model Export: support multi-dimension non-uniform refinement
Replace single-direction non-uniform refinement UI with per-dimension
fields (I, J, K), each with its own enable checkbox, cell range, and
fractional widths. This allows specifying independent refinement in
multiple dimensions simultaneously.
2026-03-30 11:24:56 +02:00
Kristian Bendiksen 06f985b1ed #12957 Sector Model Export: add non-uniform cell refinement
Add a new "Non-Uniform" refinement mode that coexists with the existing
uniform refinement. Users can specify a cell range, direction, and
fractional subdivision widths to create variable-resolution grids.

Core infrastructure:
- RigNonUniformRefinement: per-dimension refinement with cumulative
  fractions and offset tables for O(1)/O(log n) lookups
- RiaCellDividingTools: non-uniform createHexCornerCoords overload
- RigGridExportAdapter: non-uniform constructor, mapping, and
  coordinate transformation overloads

Pipeline integration:
- RigSimulationInputSettings: non-uniform refinement storage
- RigSimulationInputTool: non-uniform paths for grid construction,
  data cropping, BOX context, well keywords, and WELLDIMS
- RifEclipseInputFileTools: non-uniform extractKeywordData overload

UI:
- RicExportSectorModelUi: Uniform/Non-Uniform mode selector with
  direction, cell range, and fractional widths fields
2026-03-30 11:24:56 +02:00
Magne Sjaastad 871db2e143 WellAllocationPlot: Display connection numbers as 1-based
connectionNumbersFromTop() now adds 1 to all values so connection numbers are displayed starting from 1 in both the plot and ASCII text report. Also updates the fictitious extension point from -1.0 to 0.0 to be consistent with 1-based numbering.
2026-03-27 14:49:03 +01:00
Magne Sjaastad 9b95d89d5c CompletionExport: Add unit tests, test models, and diagrams for MSW export 2026-03-27 14:47:32 +01:00
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 47f2967ccb CompletionExport: Add RigMswSegment data structures for simplified MSW export
Introduce RigMswSegment.h with flat data structures (RigMswCellIntersection,
RigMswSegment, RigMswBranch, RigMswWellExportData) as the primary building
block for the new MSW export approach. Add branch storage to RigMswTableData.
2026-03-27 14:47:32 +01:00
Magne Sjaastad 2870dc715e #13405 WellAllocationPlot: Fix missing first connection in plot and plot data
The fictitious depth point (-1.0) that extends the topmost connection bar
was only added for accumulated flow on branch 0. For inflow mode and
accumulated mode on branches > 0, the first connection bar had no extent
and was invisible, and the data export skipped the first real connection.
2026-03-26 14:22:17 +01:00
Magne Sjaastad 04e4303f64 #13796 WellAllocationPlot: Set defaults to Well Flow and Inflow Rates 2026-03-26 09:02:50 +01:00
Magne Sjaastad 641acf9e35 ViewLinker: Fix null pointer dereference when master view is null
Guard against null m_masterView in updateDependentViews, allViewsForCameraSync, allViews, and updateScaleZ to prevent crashes when linking views without a valid master view set.
2026-03-23 16:11:11 +01:00
copilot-swe-agent[bot] 2f08f15fc9 #13676 Grid model: Include negative values for DEPTH calculations 2026-03-23 15:17:27 +01:00
Magne Sjaastad 4de2701bef PropertyFilter: show filter settings when linked with cell result
When m_linkedWithCellResult is true, the early return in defineUiOrdering
was hiding all filter options (range, filter mode, category selection).
Hide only the Result group when linked; always show the Filter Settings group.
2026-03-23 13:31:10 +01:00
Magne Sjaastad 8df24c5bd3 Crash: use SA_SIGINFO on Linux for enhanced crash diagnostics
Switch signal handler registration from signal() to sigaction(SA_SIGINFO)
on Linux to capture fault address, signal code description, and program
counter at crash time. These are logged to the file logger and included
in OpenTelemetry crash reports.
2026-03-23 10:30:14 +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 6119f73b30 Fix index out of bounds in RigReservoirBuilderMock and RigWellTargetMappingTools test
Guard NNC cell indices against out-of-bounds in addNnc.
Fix test using ActiveCellIndex(1) on a single-element vector.
2026-03-23 10:29:58 +01:00
Kristian Bendiksen a3b784ea34 #13740 Add tests for FIP keyword handling in sector model export
Add regression tests verifying that custom FIPABC keyword in the
REGIONS section is correctly cropped and padded during sector model
export, similar to how FIPNUM is handled.
2026-03-23 09:30:16 +01:00
Magne Sjaastad 185b8a1d26 #13771 RftPlot: Ensemble curve set selection and highlighting
- Legend items are now ordered to match the project tree order
- Selecting a curve set in the project tree highlights it in the plot
  and hides member curves of other curve sets (statistics unaffected)
- Clicking a legend item in the plot selects the curve set in the
  project tree
- Improve text layout in dialog when multiple file names are found
- Fix missing update of ensemble curve sets
2026-03-20 14:52:47 +01:00
Kristian Bendiksen 27c0647611 Refactor: split long method. 2026-03-20 14:30:34 +01:00
Kristian Bendiksen 9678cbf88d #13411 Add tests for MULTIPLY and ADD inside BOX/ENDBOX context
Tests cover record-level processing (no overlap, partial overlap with
clamping, completely inside sector) and full deck transformation with
BOX/ENDBOX for both MULTIPLY and ADD keywords.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen 6ae364200f #13411 Sector Model Export: skip ACTNUM in replaceKeywordValuesInDeckFile
ACTNUM is already correctly computed by updateCornerPointGridInDeckFile
with proper inactive cell handling. Prevent replaceKeywordValuesInDeckFile
from overwriting it with all-1s via extractKeywordData, which treats
ACTNUM as a category result and sets defaultExportValue=1 for all cells.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen cc61559c7d Janitor: Cleanup includes. 2026-03-20 14:30:34 +01:00
Kristian Bendiksen 539eec6cc5 #13411 Sector Model Export: unify BOX/ENDBOX processing into single pass
Replace 7 separate deck iterations (cropDataKeywordsInsideBoxContext,
expandBoxContextInDeckFile, and 5 replace*KeywordIndices wrappers) with
a single transformKeywordsInDeckFile function that tracks BOX/ENDBOX
state once and handles all keyword types as they are encountered.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen fce37b8fdb #13411 Sector Model Export: crop data keywords inside BOX/ENDBOX to sector intersection
Data keywords (PORO, EQLNUM, etc.) inside BOX/ENDBOX contain values for the
sub-box only. When BOX coordinates are transformed to sector coordinates, the
data size must match the transformed box dimensions. Crop boxed data keywords
to the intersection of the BOX region with the sector, preserving the
BOX/ENDBOX structure in the exported deck. If the box does not intersect the
sector, the data keyword is removed.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen ff1018a65f #13411 Add test for data keyword cropping with 4 EQLNUM regions
Add a new .DATA file with K-layer based EQLNUM regions (1-4) and a
test that verifies correct spatial cropping of EQLNUM, EQUIL records,
and PORO when exporting a sector model.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen e6d5c8e6d4 #13411 Sector Model Export: skip ACTNUM in cropDataKeywordsInDeckFile
ACTNUM is handled separately during export, so it should not be
cropped by the generic data keyword cropping logic.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen 42df3170dd #13411 Add integration test for data keyword cropping in sector model export
Verify that PORO, EQLNUM, and SATNUM are correctly cropped from 6000
to 600 values when exporting a 10x10x6 sector from the 20x30x10
model5 grid, and that cropped values match the original uniform data.
2026-03-20 14:30:34 +01:00
Kristian Bendiksen 983be234c1 #13411 Sector Model Export: crop direct listing data keywords from deck
Add cropDataKeywordsInDeckFile() that reads raw cell values directly from
OPM deck keywords (via isDataKeyword/getRawDoubleData/getIntData) and crops
them to the sector box. This handles relperm endpoint arrays (SWL, SWU,
SGCR, SOWCR, etc.) that are specified via direct listing in the .DATA file
and not available in eclipse case results. Runs before
replaceKeywordValuesInDeckFile, which now skips already-cropped keywords.
2026-03-20 14:30:34 +01:00
Magne Sjaastad b14e873fac StatisticsContourMap: Refactor computeStatistics and move helpers to anonymous namespace
Split computeStatistics() into computeStatisticsSharedGrid() and
computeStatisticsIndividualGrids(), and move findKLayersForFormations
and extractCaseResults to an anonymous namespace as free functions.
2026-03-19 15:10:43 +01:00