Commit Graph
19015 Commits
Author SHA1 Message Date
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 790ffaafe7 Prepare dev-branch after release 2026-03-26 19:50:49 +01:00
Magne Sjaastad d07b040fdc Update version to 2026.02.2-dev.01 2026-03-26 14:41:27 +01:00
Magne Sjaastad 81744c650a Merge branch 'main' into dev 2026-03-26 14:37:53 +01:00
Magne Sjaastad 2103af401a #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.
v2026.02.1
2026-03-26 14:22:48 +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 dc03931cdc Bump version to 2026.02.1 2026-03-26 11:20:41 +01:00
Magne Sjaastad 3e0753dda6 RiaRegressionTestRunner: Support hierarchical preference configuration
Update the preference lookup to search upward up to three levels from the test directory, allowing for shared configuration in nested folder structures. Also, ensure each test runs from a consistent baseline by saving the initial state once and restoring it after every test execution.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 2c7c90ef9d #13713 RifReaderOpmCommon: Fix ACTNUM showing undefined when only stored in EGRID
ACTNUM is always present in the EGRID file, but not always in the INIT
file. The OPM reader's staticResult() searched only the INIT file, so
models that omit ACTNUM from INIT returned an empty result vector,
causing all cells to display as undefined.

Fix by deriving ACTNUM values directly from the active cell info, which
is populated from the EGRID during grid import via transferActiveCells().
2026-03-26 11:20:41 +01:00
Magne Sjaastad 356408c582 ProgressInfo: report errors to cafLogger instead of std::cout 2026-03-26 11:20:41 +01:00
Magne Sjaastad 444a3da943 #13796 WellAllocationPlot: Set defaults to Well Flow and Inflow Rates 2026-03-26 11:20:41 +01:00
Magne Sjaastad 0b272fcf94 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-26 11:20:41 +01:00
copilot-swe-agent[bot] 8cfbfb9773 #13676 Grid model: Include negative values for DEPTH calculations 2026-03-26 11:20:41 +01:00
Magne Sjaastad df79c9913a 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-26 11:20:41 +01:00
Magne Sjaastad c9b3bb4409 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-26 11:20:41 +01:00
Magne Sjaastad 02416bb4c7 Update opm-common to latest 2026-03-26 11:20:41 +01:00
Magne Sjaastad 5cdf5e05ee #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
- Fix missing update of ensemble curve sets
2026-03-26 11:20:41 +01:00
Magne Sjaastad 5a08d1255b SummaryMultiPlot: Improve sub-plot stepping and duplicate plot handling 2026-03-26 11:20:41 +01:00
Magne Sjaastad 41ccd82f83 SummaryPlotSourceStepping: Add isAtEnd() and fix source stepping for sub-plots 2026-03-26 11:20:41 +01:00
Magne Sjaastad 498a169b5d #13727 EnsembleWellLog: Detach QwtPlotCurve before delete to avoid crash on destruction 2026-03-26 11:20:41 +01:00
Magne Sjaastad ef34d87c77 #13727 EnsembleWellLog: Refactor LAS export to use standalone curves without dummy plots
Replace temporary RimWellLogPlot/RimWellLogTrack creation with standalone
RimWellLogExtractionCurve objects that load data and export directly via
RigLasFileExporter, eliminating the need to create and delete dummy plot objects.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 607fbaaf32 #13727 WellLog: Remove cvf::Object from RigWellLogCurveData, use value types throughout
- RigWellLogCurveData no longer inherits from cvf::Object; calculateResampledCurveData returns by value
- RimWellLogCurve::curveData() returns const reference instead of pointer; m_curveData stored by value
- RigLasFileExporter: replace cvf::Collection with std::vector<RigWellLogCurveData>; SingleChannelData stores RigWellLogCurveData by value
- Update all callers to use dot notation instead of pointer dereference
2026-03-26 11:20:41 +01:00
Magne Sjaastad cbb17693b7 Remove redundant explicit delete of parented QObjects in RiaApplication
m_osduConnector and m_sumoConnector are created with RiuMainWindow as
parent, so Qt deletes them when the main window is destroyed. The
explicit delete calls were no-ops (QPointer was already null) but
misleading.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 2635e90bf2 Fix crash in ecl_file_scan when UNRST file is locked or being written
Add NULL stream guards in fortio_ftell and fortio_fseek__ to prevent SIGSEGV when fortio->stream is NULL during ecl_file_scan. This mirrors
the defensive fix applied to ESmry::loadData for UNSMRY files.
2026-03-26 11:20:41 +01:00
Magne Sjaastad e1c792a76e Fix crash when closing project with open grid statistics dialog
Use QPointer instead of unique_ptr for m_gridStatisticsDialog to avoid double-free when Qt's parent-child mechanism deletes the dialog before Rim3dOverlayInfoConfig destructor runs.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 47d7f2812e Viewer: Improve near/far clipping plane calculation
Iterate per-model bounding boxes and skip models outside the camera frustum to prevent distant off-screen objects from inflating the far plane. This improves depth buffer precision and reduces z-fighting.

Enforce a maximum far/near ratio of 3000.0 by pushing the near plane forward if necessary. Additionally, refine the near plane adjustment when zooming into a point of interest to prevent geometry clipping.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 9d6986bc44 RicHelpAboutFeature: Display active gRPC port in About dialog
Retrieve the active gRPC port number from the application instance and display it within the version information section of the About dialog.
2026-03-26 11:20:41 +01:00
Magne Sjaastad a21ddc5709 #13728 Telemetry: Include OS info for all events
Add OS info (os.type, os.version, os.name) to all non-crash events in
reportEventAsync. Consolidate OS info and hashUsername into an anonymous
namespace with a shared addOsInfo helper function.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 5e29dc0d55 cafProgressInfo: Support progress updates from non-GUI threads
Add isOnGuiThread() helper and dispatch each static update method to
the GUI thread via QMetaObject::invokeMethod when called from a worker
thread. start()/finished() use BlockingQueuedConnection to ensure
stack integrity; description/progress updates use QueuedConnection.

Also prevent multiple overlapping dialogs by only reparenting the
progress dialog when no operation is active.
2026-03-26 11:20:41 +01:00
Magne 7adb69bbd4 Refactor disconnect calls in AnimationToolBar to use explicit signal-slot disconnection
The following text was seen on Ubuntu 20.24, and the text disappears after this commit:
"QObject::disconnect: wildcard call disconnects from destroyed signal of QComboBox::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of QSlider::unnamed"
2026-03-26 11:20:41 +01:00
Magne Sjaastad e1282eaa9d #13715 RiuSummaryVectorSelectionUi: Create addresses for all realizations in Plot Editor
For ensemble member cases used as individual sources in the Plot Editor,
createAddressesIfRequired() was never called, causing allResultAddresses()
to return an empty set for all non-representative realizations.
2026-03-26 11:20:41 +01:00
Magne Sjaastad 077878c44e RiaOpenTelemetryManager: Ensure crash reports are sent before exit
- Track pending network replies using an atomic counter
- Pump the event loop in `reportCrash` to allow asynchronous telemetry requests to complete before the process terminates
- Use a timeout to prevent the crash handler from hanging indefinitely if the network is unresponsive
2026-03-26 11:20:41 +01:00
Magne Sjaastad e8fb03ee65 RiuMainWindow: Trigger actual crash in test telemetry
- Replace manual telemetry event reporting with an intentional SIGSEGV
- This allows for testing the end-to-end crash reporting pipeline and signal handling instead of just simulating telemetry data
2026-03-26 11:20:41 +01:00
jonjenssen ee4efa9c81 Fix segfault on startup on ubuntu25.10/gcc15.2 2026-03-26 11:20:41 +01:00
kriben cdcc22cc42 Python code linting changes detected by ruff 2026-03-26 11:20:41 +01:00
Magne Sjaastad ba9e3c7e26 Add example on creation of regions based on existing polygons 2026-03-26 11:20:41 +01:00
Kristian Bendiksen 634f2ee464 CI: Fix python-linting workflow to catch unfixable ruff errors
ruff check --diff only reported fixable violations, silently passing
on unfixable errors like E402. Replace with ruff check (no flags) to
fail CI on all violations. Auto-fix PR creation now only triggers on
failure for same-repo branches.
2026-03-26 11:20:41 +01:00