Commit Graph
629 Commits
Author SHA1 Message Date
Magne Sjaastad 32cfac7722 #14391 Expose RMS seed value from RMS_SEED_USED file as a realization parameter 2026-08-03 10:55:07 +02:00
Magne Sjaastad c0059da42c #14306 Fix orphaned progress dialog when importing summary ensembles
Driving caf::ProgressInfo from worker threads inside the OpenMP loop in
loadFileSummaryCaseData() marshaled setProgress() to the GUI thread via a
queued connection. These updates could be delivered after the ProgressInfo
scope had ended and the progress stacks were popped, accessing an empty stack
and resurrecting the just-closed dialog stuck at 0% with no way to close it.

Only update the progress dialog from the master thread, using an atomic
counter for a monotonic progress value, and guard the ProgressInfo mutators
against stale updates delivered after the stacks are empty.
2026-06-25 09:56:22 +02:00
jonjenssen 6e6f29b86d Improve information icon in project trees. 2026-06-22 14:17:47 +02:00
Jon Jenssen 9823f9c5a3 Update to latest qt adv docking version
Make sure copied 3d or plot views get a unique id
2026-06-17 13:55:32 +02:00
jonjenssen 2faa1cd149 Some cleanup 2026-06-17 13:55:32 +02:00
jonjenssen 797d9ac2db Work in progress 2026-06-17 13:55:32 +02:00
Jon Jenssen d2d7c6ac61 First non-MDI version. Still some missing links and features. 2026-06-17 13:55:32 +02:00
Magne Sjaastad 2f8ec77851 #14061 Reorder user interface for summary/grid ensemble import
* Agent docs: Recommend cmake --build over ninja when sharing build/ with Visual Studio
* Disable Create Well Target Mapping for grid ensembles with individual grids
* Move RimSummaryCaseMainCollection context menu items into appendMenuItems override
* Reorganize import menus: split per-window, group submenus, rename actions, add Import/Export icons
* Show icons on "New Statistics Case" and "New Grid Case Group" menu actions
* Rename grid/summary import submenus to "More" and use the import icon
2026-05-28 16:06:39 +02:00
Håkon Hægland be3621a66d Make RimMultiPlot column/row count scriptable via gRPC
* Make RimMultiPlot column/row count scriptable via gRPC
* Add pytest for scriptable multi-plot layout
2026-05-26 18:49:56 +02:00
Magne Sjaastad 071d6cc19e #14050 CMake: Remove dead variable definitions and references
* CMake: Remove dead CODE_HEADER_FILES variable
* CMake: Remove dead COMMAND_CODE_HEADER_FILES and COMMAND_MOC_SOURCE_FILES
* CMake: Remove dead MOC_SOURCE_FILES and FORM_FILES_CPP references
* CMake: Remove dead HEADER_FILES reference
* CMake: Delete unused CustomPCH.cmake superseded by target_precompile_headers
2026-05-26 13:10:20 +02:00
Kristian Bendiksen 5ffcb69acc #13126 RiaLogging: Use std::string_view instead of QString for logging 2026-05-08 10:11:09 +02:00
Kristian Bendiksen 4957bf5a8b #13126 RiaLogging: Take std::string_view for logElapsedTime message
Switch the message parameter from const QString& to std::string_view so
callers with std::string in hand no longer need a QString::fromStdString
wrapper. The internal duration formatting still uses QString::arg, fed
from a single QString::fromUtf8 conversion.

Callers passing QString locals are updated with .toStdString() at the
call site.
2026-05-08 10:11:09 +02:00
Kristian Bendiksen bb0afbf962 #13126 RiaLogging: Extract errorInMessageBox to RiuMessageDialog
Move the QMessageBox-displaying helper out of the logging utility into a
dedicated UI class. RiaLogging.h no longer pulls QMessageBox/QWidget into
the ~270 files that include it. Behavior is preserved: showError displays
the dialog when running interactively (and not under regression tests),
then forwards the text to RiaLogging::error.
2026-05-08 10:11:09 +02:00
Magne Sjaastad bd3836ba25 #13901 ShowPlotData: Invert dependencies via capability mixins and text-dialog signal 2026-04-20 14:09:25 +02:00
Magne Sjaastad 4dfe238fef Summary: Keep curves in other ensembles unchanged when highlighting a realization 2026-04-20 10:52:02 +02:00
Magne Sjaastad 387b19ef62 #12276 Add RFT correlation report plot with cross-plot and tornado plot
* Fix defensive guards and TVD interpolation

Guard against out-of-bounds IJK and invalid cells in RifReaderRftInterface.
Guard against null eclCase in RimDataSourceForRftPlt::address.
Guard against null plot widgets in RiuMultiPlotPage.
Fix interpolateMdFromTvd corrupting valid entries after infinity TVD values
by skipping infinity entries in the first pass and tracking only the last
two valid MD values for the startMD adjustment.

* Add RiuQwtCurveSelectorFilter for click-to-select realization in Qwt plots

New shared event filter class that installs on a QwtPlot canvas and calls a
user-supplied callback with the closest data point on each click.

Migrate the local CurveSelectorFilter in RimParameterResultCrossPlot to use
the new shared class. Add Z_HIGHLIGHTED_CURVE to ZIndex enum and replace all
raw z-order integers in RiuQwtPlotCurveDefines with named constants.

* Add RFT correlation report plot with cross-plot and tornado plot

New classes:
- RimRftCorrelationReportPlot: composite plot showing an RFT well log track
  alongside a parameter cross-plot and a tornado plot sub-plot.
- RimParameterRftCrossPlot: cross-plot of ensemble parameters vs RFT-derived
  measured depth values, with click-to-select realization support.
- RimRftTornadoPlot: tornado plot with correlation-sorted parameter list and
  click-to-select realization support.
- RicCreateRftCorrelationReportFeature: context menu command on RimWellRftPlot
  that creates a RimRftCorrelationReportPlot in the correlation plot collection.

Wire up in RimCorrelationPlotCollection and RimContextCommandBuilder.

* Add click-to-select and highlight selected realization in RFT plots

Install RiuQwtCurveSelectorFilter on RimWellRftPlot canvas to support
click-to-select realization. Highlight the selected realization using a
contrast color (orange-red) and increased line thickness. React to both
click-to-select in the plot and selection changes in the Data Sources panel.

Add Z_HIGHLIGHTED_CURVE z-order and replace raw z-order integers with
named constants in RimWellRftPlot.

Highlight selected realization with XCROSS symbol in RimParameterRftCrossPlot
via RimSummaryEnsembleTools::findSummaryCase.

* RimWellRftPlot: add Create RFT Correlation Report to canvas right-click menu

Override appendMenuItems in RimWellRftPlot to add RicCreateRftCorrelationReportFeature.
Call appendMenuItems from RiuMultiPlotPage::contextMenuEvent so any plot type
can contribute canvas menu items without modifying RiuMultiPlotPage.

* RicShowPlotDataFeature: support RimRftCorrelationReportPlot

Add RimRftCorrelationReportPlot to the isCommandEnabled check and expand
it into its cross-plot and tornado sub-plots in onActionTriggered, matching
the pattern used for RimCorrelationReportPlot.
2026-04-16 16:45:44 +02:00
Magne Sjaastad 639024eca4 #13883 SummaryEnsemble: Replace deleteChildrenAsync with synchronous delete to fix race
deleteChildrenAsync() spawns a std::thread that deletes old RimFileSummaryCase
objects concurrently with the OpenMP parallel loop in loadFileSummaryCaseData().
#pragma omp critical only synchronizes OMP threads, not std::threads, so OPM/HDF5
library state was accessed simultaneously from both, causing crashes.

Replace with clearWithoutDelete() + synchronous delete to preserve the observer
signal disconnection fix from #12262 while eliminating the thread race.
2026-04-16 16:43:36 +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 ba1055fbc4 #13813 Remove duplicated snapshotWindowContent overrides that replicate base class behavior 2026-03-30 17:59:01 +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 ca2a4dcc2c EnsembleFileSet: Move case creation to createDerivedObjects() lifecycle hook 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 9f30c981bc Remove unused cafPdmUiPushButtonEditor.h includes
Follow-up cleanup after switching from bool PdmField push buttons to cafPdmUiButton.
2026-03-04 09:52:17 +01:00
Magne Sjaastad 90c08d8981 #13660 Summary: Skip empty curve data to avoid assert in addCurveData 2026-02-26 08:23:53 +01:00
Magne Sjaastad b262527812 Fill statistical values with infinity if no values could be calculated
If percentiles could not be calculated (e.g. not enough data points or infinity in any of the input values), fill with infinity to indicate missing data.

The previous solution caused no statistical curves to be displayed due to wrong number of elements in the percentile vector.

Seen in regression test "ProjectFiles2024Tests\TestCase_Ensemble"
2026-02-24 14:24:15 +01:00
Magne Sjaastad d3d1c1a148 #13642 Avoid time axis zoom reset when stepping ensemble curve sets
When stepping a RimEnsembleCurveSet by well/group/region/etc., the updateEnsembleAddresses lambda was unconditionally setting doZoomAll=true, causing zoomAll() to be called and resetting the time axis zoom. This is now consistent with regular curve stepping which preserves the time axis.
2026-02-24 13:46:15 +01:00
Magne Sjaastad 812b605a31 #12919 Updates curve hash to include X axis type
Updates the curve hash calculation to include the X axis type.
This ensures that curves are properly recreated when the X axis type changes, preventing potential display issues.
2026-02-23 19:17:55 +01:00
Kristian Bendiksen 7cc1853302 #13609 Extract default curve appearance as static constexpr members
Replace local variables and magic numbers with static constexpr
defaults. Reset curves to default appearance when switching back
from custom to default mode.
2026-02-23 12:18:09 +01:00
Kristian Bendiksen 69ba3c2418 #13609 Fix ensemble cross-plot curve appearance not responding to changes
Apply custom appearance settings (line style, symbol, symbol size) to
existing realization curves when the data hash is unchanged. Previously
these settings were only applied during curve creation.
2026-02-23 12:18:09 +01:00
Magne Sjaastad 8e4000590c Add RiaSummaryAddressCollectionTools utility module
Refactor summary address collection logic into a new utility module, RiaSummaryAddressCollectionTools, with functions for object identification, curve definition generation, duplicate filtering, and address-to-case/ensemble mapping. Update RimSummaryPlot to use these utilities, improving modularity and maintainability. Add comprehensive
unit tests for the new module.

Adds test for mock summary case
2026-02-18 14:27:36 +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
Magne Sjaastad 9aa5a3d222 Move number formatting setting to CAF to enable use in UI editors
* Move RiaNumberFormat to cafPdmUiNumberFormat in caf framework
* Add unit test
2026-02-16 11:32:04 +01:00
Magne Sjaastad a2b3445692 Add support for custom percentiles in ensemble statistics
Introduced custom percentile handling for ensemble statistics:
- Added "CUSTOM" statistics type and percentile field to RifEclipseSummaryAddress
- Refactored RimEnsembleStatisticsCase to store and compute arbitrary percentiles
- RimEnsembleStatistics now parses custom percentiles from UI input
- RimEnsembleCurveSet and related interfaces updated to handle custom percentile curves and labels
- Hashing and statistics calculations now include custom percentiles for cache validity
2026-02-12 14:25:48 +01:00
JJ fe3cf9b94a Handle vector names with colon as groups in summary data explorer (#13555)
* Handle vector names with colon as groups in summary data explorer
2026-02-04 14:59:26 +01:00
Magne Sjaastad ca5465a660 Handles API changes for Arrow Parquet file reading
Adapts the code to handle different API versions of the Arrow library for reading Parquet files.
It uses preprocessor directives to select the correct API based on the `ARROW_VERSION_MAJOR`.
This ensures compatibility with both older and newer versions of the Arrow library.
2026-01-31 17:25:26 +01:00
JJ 3e06a61ed5 Popup window placement improvements (#13464)
* Improve parent settings for message boxes and progress info
2026-01-21 19:11:41 +01:00
Magne Sjaastad 9851afc621 #2070 AppFwk : Disable default IO for proxy fields
Proxy fields usually reads and transforms data from other sources, usually other Pdm fields. This commit disables IO for proxy fields in the constructor. If XML serialization is required, this must be set on the proxy field, like this

field.xmlCapability()->setIOWritable(true)
field.xmlCapability()->setIOReadable(true)
2026-01-19 16:10:14 +01:00
Magne Sjaastad 50fc65c5fb #13055 Skip error data export for ensemble curves in Show Plot Data 2026-01-15 12:15:35 +01:00
Magne Sjaastad 2d4df3abf4 #13392 Summary Plot: Wrong values for "Time From Simulation Start"
The ensemble curve values are cached for performance reasons. Include the time settings in the hash function used to control the cache. This will make sure that the curve values are recreated when the time setting changes.
2026-01-15 12:15:35 +01:00
Magne Sjaastad cfd634e206 Updates PDM UI label positioning
Updates the way UI label positions are set for PDM fields.
2026-01-08 21:44:58 +01:00
Magne SjaastadandClaude Sonnet 4.5 1737217815 Fixes parquet API compatibility with vcpkg 2025.12.12
Updates parquet::arrow::OpenFile calls to use new API that returns
arrow::Result instead of taking an output parameter. Also updates
error message retrieval to use status().ToString() method.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 17:34:57 +01:00
Kristian Bendiksen cd5926096f Refactor RimSummaryTableCollection. 2026-01-05 13:15:47 +01:00
Kristian Bendiksen a879452563 #12199 Python: Add validation error messages for set_summary_values()
The set_summary_values() Python API method now provides clear error
messages when validation fails instead of failing silently.

Changes:
- Add keyword length validation (8-character SMSPEC format limit)
- Add value vector size validation with informative messages
- Add test cases for both validation scenarios
- Update existing test to expect exceptions for invalid inputs

Fixes #12199.
2026-01-05 08:20:30 +01:00
Magne Sjaastad 405a32e2da Removes QIntValidator and uses setRange
Replaces the usage of `QIntValidator` with the `setRange` function available in the PDM framework for limiting integer input in UI fields.
This approach provides a more direct and maintainable way to specify value ranges for UI elements.

This change simplifies the code and reduces dependencies.
2025-12-22 10:17:00 +01:00
Magne Sjaastad d7fe226114 Ensure correct update of required delta ensembles
When a summary ensemble is modified, update all dependent delta ensembles related to curve display and tree item display.
2025-11-28 07:20:42 +01:00
Magne Sjaastad 18b6420633 Fix out-of-bounds access
The number of m_cases and number of parameters can differ during updates of the ensemble. Guard access to avoid crash.
2025-11-28 07:20:42 +01:00
Magne Sjaastad 15580c761a #13212 Guard null pointer use 2025-11-21 07:34:28 +01:00
Magne Sjaastad 1039fa54c4 Add missing updateConnectedEditors
The update logic was changed in 0f20fd4e92, and this fixes missing updates
2025-11-20 13:29:24 +01:00