Commit Graph
18930 Commits
Author SHA1 Message Date
Magne Sjaastad bd7f7cd7e3 EnsembleImport: Add recent files support, file pattern field, and UX improvements
- Store imported ensemble root directory in recently used files list
- Auto-reimport from recent files without dialog using persisted parameters
- Add file pattern field to filter filenames within matched folders
- Gray out and untick create-grid/summary checkboxes when no files of that type are found
- Disable OK button when both checkboxes are unticked
- Show all ensembles collapsed when multiple are detected
- Default-select only the first ensemble when multiple are detected
2026-03-19 15:10:26 +01:00
Magne Sjaastad ba0474616c MSW: Suppress logging when null check fails during UI-triggered update 2026-03-19 15:10:26 +01:00
Magne Sjaastad 6ff75e3700 SummaryMultiPlot: Improve sub-plot stepping and duplicate plot handling 2026-03-18 13:54:06 +01:00
Magne Sjaastad 4586df88fe SummaryPlotSourceStepping: Add isAtEnd() and fix source stepping for sub-plots 2026-03-18 13:54:06 +01:00
Magne Sjaastad 08af803a0e Delete unused functions and fields 2026-03-18 13:54:06 +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
Magne Sjaastad 211ae24241 Auto-update MSW segments on UI changes (opt-in)
Adds an 'Auto Update Segments' toggle (default: on) to the MSW Segment
Visualization group in WellPathCollection. When enabled, MSW segments
are automatically recomputed and redrawn whenever the user modifies:
- Well path geometry or targets
- Perforation intervals
- Fishbone laterals
- Fractures
- Well path fields

The update is triggered via a new updateMswSegmentsForObject()
method, which resolves the top-level well from the changed object, clears
existing segments for all lateral wells in that group, recomputes segments
using updateSegments(), and schedules a full redraw.

When auto-update is disabled, an 'Update Segments' button is shown
instead, allowing manual control.
2026-03-17 20:15:07 +01:00
Magne Sjaastad a73067b6ea #13727 EnsembleWellLog: Detach QwtPlotCurve before delete to avoid crash on destruction 2026-03-17 20:13:26 +01:00
Magne Sjaastad f4a14c7d28 #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-17 20:13:26 +01:00
Magne Sjaastad 8c82f834cf #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-17 20:13:26 +01:00
Magne Sjaastad b229417f7c Add comment explaining manual layout deletion in RiuWellLogPlot destructor
Only one of the two scroll bar layouts gets reparented via addLayout()
depending on orientation; the other has no parent and must be explicitly
deleted. Add comment to clarify why both are deleted explicitly.
2026-03-17 14:03:11 +01:00
Magne Sjaastad f12c9f74a6 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-17 14:03:11 +01:00
Magne Sjaastad 60f2ede781 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-17 14:03:11 +01:00
Magne Sjaastad f9dd7f1123 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-17 14:03:11 +01:00
Magne Sjaastad ec7470d1e6 Fix ESmry::loadData crash when UNSMRY file is locked or being written
Update custom-opm-common submodule with guards against crashes in ESmry::loadData(vectList) when ensemble summary files are incomplete or inaccessible during project load.
2026-03-17 14:03:11 +01:00
Magne Sjaastad f68527a1d7 GHA: Update vcpkg cache to latest 2026-03-17 08:37:19 +01:00
Magne Sjaastad b7b2a73721 Add context menu actions to hide/show all geometry for well visibility
Two new actions added to the well path context menu:
- "Hide All Geometry (Show Wells)": hides grid cells, faults, and intersections,
  then forces simulation wells and well paths visible.
- "Show All Geometry": restores grid cells, faults, and intersections visibility.

Added RimIntersectionCollection::setActive() for direct state control.
2026-03-16 16:14:08 +01:00
Magne Sjaastad 107615dd09 Fix Unity build: correct misplaced .cpp files in header sections of CMakeLists
Three .cpp files were incorrectly listed in SOURCE_GROUP_HEADER_FILES instead of their
corresponding .h files, causing each to be compiled twice in unity builds and producing
duplicate symbol linker errors (LNK2005) and unresolved externals (LNK2019).
2026-03-16 16:14:08 +01:00
Magne Sjaastad 4f022aee72 RiuRecentFileActionProvider: Normalize path separator to avoid duplicates
Use QDir::fromNativeSeparators before storing or removing file names to
ensure paths with mixed separators are treated as the same entry.
2026-03-16 14:00:21 +01:00
Magne Sjaastad 46b56a800c #12560 Surface: Add export to GRI format with UI dialog and context menu integration
CMake: Change mdspan link from PRIVATE to PUBLIC for surfio_lib
2026-03-16 14:00:07 +01:00
Magne Sjaastad 70b4b63b24 #12560 RifSurfio: Add export to GRI and IRAP binary/ASCII formats 2026-03-16 14:00:07 +01:00
Kristian Bendiksen ca45a5658c #13712 Sector Model Export: Enable extra padding for RVVD keyword. 2026-03-16 12:53:49 +01:00
Kristian Bendiksen 1f42f70d26 OpmFlowDeck: avoid swallowing error messages when loading deck. 2026-03-16 12:53:49 +01:00
Magne Sjaastad b0153081fc Modernize use of some GitHub actions
* CI: Replace get-current-time action with bash date command
* CI: Replace ilammy/msvc-dev-cmd with TheMrMilchmann/setup-msvc-dev@v4
2026-03-16 11:17:45 +01:00
Magne Sjaastad 2bf51950e4 cafCmdFeatureManager: log and stop with clear message for unknown command feature
Use CAF_PDM_LOG_ERROR and qFatal to notify the developer with an actionable
message when a command feature ID is not registered in the factory. This
replaces the silent CAF_ASSERT and makes it clear that the feature may have
been deleted without removing all references in appendMenuItems().
2026-03-16 09:19:15 +01:00
Magne Sjaastad 82c7172c1a 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-16 09:02:41 +01:00
Magne Sjaastad 4dd0068605 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-13 15:30:22 +01:00
Kristian Bendiksen d9e331f560 Update regression-analysis (fixes missing assert.h include) 2026-03-13 12:45:13 +01:00
Jon Jenssen f7154a8146 Fix crash issue with empty blocks when removing block keywords from file deck 2026-03-13 11:41:20 +01:00
David Landa Marban 188a52cd1e Removing unused boost::system 2026-03-13 10:38:57 +01:00
Magne Sjaastad 4b43fcf0a7 Revert ContourMap texture-based rendering changes
Reverts:
- ContourMap: Smooth texture edges with weighted alpha blending (2dc7123d8)
- ContourMap: Increase texture resolution with bilinear interpolation (2e1e99602)
- ContourMap: Add texture-based rendering as default rendering mode (87ef7a01b)
2026-03-12 17:31:56 +01:00
Magne Sjaastad 2dc7123d8f ContourMap: Smooth texture edges with weighted alpha blending
Replace hard transparent/opaque edge cutoff with a weighted alpha
derived from the bilinear corner weights. Pixels at the boundary fade
proportionally to how much of their area falls within the defined
region, eliminating the hard staircase artefact.
2026-03-12 15:41:18 +01:00
Magne Sjaastad 2e1e99602b ContourMap: Increase texture resolution with bilinear interpolation
Scale texture up 4x and bilinearly interpolate between adjacent vertex
values to eliminate block artefacts. Pixels adjacent to any undefined
(infinity) vertex are rendered transparent.
2026-03-12 15:31:49 +01:00
Magne Sjaastad 87ef7a01b9 ContourMap: Add texture-based rendering as default rendering mode
Extract and clean up prototype from contour-map-01 branch:
- RivContourMapProjectionPartMgr: add appendProjectionAsTexturedQuad(),
  createSingleTexturedQuadPart(), createXYPlaneQuadGeoWithTexCoords(),
  and createTexture() — renders the map as a single GPU-textured quad
  with transparency (alpha=0) for undefined/infinity cells
- RimContourMapProjection: add m_showTextureImage (default true) and
  m_showTrianglesWithColor (default false) PDM fields; guard triangle
  mesh generation when showTrianglesWithColor() is false
- RimEclipseContourMapView, RimGeoMechContourMapView: branch
  appendContourMapProjectionToModel() to use texture or triangle path
  based on the new flags; Statistics view inherits Eclipse path

Prototype dead code (debug file save, SurfaceEffectGenerator fallback,
redundant createImage()) not carried forward.
2026-03-12 14:40:26 +01:00
Magne Sjaastad 5ea450494a RimWellEventTimeline: Update editors when applying events
Ensure that the well path collection's editors are updated whenever events are applied to the timeline, keeping the UI synchronized with model changes.
2026-03-12 10:37:35 +01:00
Kristian Bendiksen 334ccc3a66 #13682 Fix Unity build: add missing Color3f scripting include to RimWellPath
RimWellPath.cpp has a scriptable cvf::Color3f field but was missing the
Color3f IOHandler specialization header. In Unity builds, this caused
the primary template to be instantiated, conflicting with the
specialization in cafPdmScripting.lib.
2026-03-12 08:30:52 +01:00
Kristian Bendiksen 3d23e9b51b #13682 Fix Windows Unity build linker error for Color3f scripting
Include cafPdmFieldScriptingCapabilityCvfColor3.h so the compiler sees
the Color3f template specialization instead of instantiating the primary
template, which caused duplicate symbols with cafPdmScripting.lib.
2026-03-12 08:30:52 +01:00
Kristian Bendiksen 614acc664a #13682 Python: Expose polygon appearance properties to Python API
Make RimPolygonAppearance scriptable so polygon visual properties
(colors, line thickness, spheres, closed state, plane lock) can be
controlled from the Python API.
2026-03-12 08:30:52 +01:00
Kristian Bendiksen 576c2179da #13682 Python: Add API for well path color
Make m_wellPathColor scriptable so it is accessible via the Python API
as well_path_color (hex string). Add a test and update the
import_well_paths_and_logs example to demonstrate setting colors.
2026-03-12 08:30:52 +01:00
Magne Sjaastad 5d65057d6f RiuRecentFileActionProvider: Track last used project file via recent file list
Remove lastUsedProjectFileName from RiaPreferences and store it via the
existing recentFileList QSettings key. loadProject and saveProjectAs now
call addToRecentFiles instead of writing to preferences. A new static
method lastUsedProjectFileName() on RiuRecentFileActionProvider returns
the most recent .rsp entry from the list.
2026-03-11 12:46:43 +01:00
Magne Sjaastad ef7943feaa 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-11 12:46:43 +01:00
Magne Sjaastad 1fdd493bfb #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-11 12:46:32 +01:00
Magne Sjaastad 9b5507611f RiuMainWindow: Add Test Progress Bar to Testing menu
Adds a "Test Progress Bar" action under File->Testing that runs a
long task on a worker thread using caf::ProgressInfo to exercise
cross-thread progress updates. Uses QEventLoop to keep the GUI thread
responsive while the worker sleeps between steps.
2026-03-10 15:32:02 +01:00
Magne Sjaastad 1a780211eb 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-10 15:32:02 +01:00
Magne adf33c3658 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-10 15:32:02 +01:00
Jon Jenssen 62519d9b24 Support custom DATA file input name.
Fix crash due to invalid cell box
2026-03-10 15:27:48 +01:00
Jon Jenssen 04dc045b19 Handle AQUNUM and AQUANCON keywords in sector export 2026-03-10 13:40:51 +01:00
Magne Sjaastad ab994cc8cf Bump to 2026.02.1-dev.03 2026-03-10 13:18:14 +01:00
Magne Sjaastad e21097a2fc #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-10 13:18:14 +01:00
Magne Sjaastad 85b3ad4cf5 RimReservoirGridEnsemble: Fix statistics not including all realizations
Copy result metadata from main case to all cases after loading in shared
grid mode. Without this, findOrLoadKnownScalarResultForTimeStep() returned
UNDEFINED_SIZE_T for cases 1..N, silently excluding them from statistics.
Mirrors behavior of RimIdenticalGridCaseGroup::loadMainCaseAndActiveCellInfo().

RicImportGridAndSummaryEnsembleDialog: Enable 'realization-*' filter by default
and make tree view grow vertically on dialog resize.
2026-03-10 13:17:54 +01:00