Commit Graph
606 Commits
Author SHA1 Message Date
Magne Sjaastad 61b80ad6ac Apply local changes 2025-12-12 07:23:38 +01:00
Magne Sjaastad c74b6b96ce Merge dev branch with automatic conflict resolution
All conflicts resolved by accepting dev branch changes.
2025-12-12 07:04:59 +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
Magne Sjaastad 0f20fd4e92 Reduce memory usage and improve performance for summary reload
* Select top level summary cases and ensembles for reload
Simplifies the summary case reloading process by removing the unnecessary `createAddressObjects` parameter and instead using the `showTreeNodes` flag to determine when to create address objects.

This change optimizes the loading process, especially for ensembles, by avoiding the creation of addresses for all cases, which improves performance. It also moves the responsibility of building tree nodes into a dedicated function `buildTreeNodesIfRequired` which is only called when needed.

* Remove obsolete parallel loop
* Use zoomAll
* Add updateConnectedEditors to make sure the tree nodes are updated correctly
2025-11-19 14:30:13 +01:00
Magne Sjaastad 544e9eedd9 Improve spell checker using codespell
* Configures automated spell checking with codespell
Adds GitHub workflows and configuration files for automated spell checking using `codespell`.

This includes:
- A workflow for checking pull requests and preventing new typos
- A workflow for automatically fixing typos in the main codebase
- Configuration files for `codespell` to ignore specific terms and file types
- Documentation on how to use and configure the spell checking workflows.

* Corrects minor spelling and grammar errors.
2025-11-19 10:25:32 +01:00
Magne Sjaastad b6f0164de7 #13176 Use guarded pointers for highlighted curves 2025-11-14 13:06:32 +01:00
Magne Sjaastad c921299305 #13101 Fix update of ensemble calculation vectors 2025-11-10 14:58:55 +01:00
Magne Sjaastad 529f0ecf27 #13064 Crash when computing delta ensemble curves for ongoing simulation
When creating delta for an ongoing simulation, the length of time and value vectors can differ. Resize these vectors to make sure they have the same length to avoid crash.
2025-11-10 14:58:55 +01:00
Magne Sjaastad 6cef55b897 #13019 Remove assert from RiaSummaryTools::summaryCaseMainCollection() 2025-11-10 14:58:55 +01:00
Magne Sjaastad 366f92b92f #13101 Fix update of ensemble calculation vectors 2025-11-07 07:10:55 +01:00
Magne Sjaastad a693aa6d09 #13062 Make search for restart header file more robust
Refactors restart file name retrieval to use preferences for reader mode.

Simplifies logic by removing separate OPM-specific retrieval methods, and
instead uses a unified method that dynamically selects the appropriate
reader based on user preferences.

Adds fallback mechanism to read restart file paths from SMSPEC files when
the RESTART keyword is missing in ESMRY files generated by ResInsight.

Corrects path handling for restart files by adjusting paths relative to the
header file.
2025-11-05 06:38:37 +01:00
JJ 453562082d Summary case refresh update. (#13123)
Use improved opm-common reader with less throws.
Add reload selected cases button
Add timer for auto-reload of cases
Add include in auto update option for cases and ensembles
Do not enable auto reload option for cases in an ensemble
2025-11-03 18:41:55 +01:00
Magne Sjaastad f6cd02a6c1 #13064 Crash when computing delta ensemble curves for ongoing simulation
When creating delta for an ongoing simulation, the length of time and value vectors can differ. Resize these vectors to make sure they have the same length to avoid crash.
2025-10-23 16:14:12 +02:00
Magne Sjaastad db586cd99a Use hyperlink to edit common readout settings
Show Apply Filter button on same row
2025-10-17 07:43:51 +02:00
Magne Sjaastad 00a58a1fd9 Introduces common readout settings for summary multi plots
Introduces common readout settings for summary multi plots, allowing users to apply a single readout configuration across multiple plots instead of configuring each individually.
2025-10-16 14:09:15 +02:00
Magne Sjaastad 0b7a4b12f1 #13019 Remove assert from RiaSummaryTools::summaryCaseMainCollection() 2025-10-14 14:47:58 +02:00
Magne Sjaastad 31088c0ec7 Add guarding tying to mitigate reported segmentation fault
2025-10-06 12:48:32.779] [rotating_logger] [error] Stack trace:
  [0] manageSegFailure(int) at :0
  [1]  at :0
  [2] __dynamic_cast at :0
  [3] RimSummaryMultiPlot::updateReadOutLines(double, double) at :0
  [4] CoordinatePicker::trackerText(QPoint const&) const at :0
  [5] QwtPicker::trackerRect(QFont const&) const at :0
  [6] QwtPicker::updateDisplay() at :0
  [7] QwtPicker::begin() at :0
  [8] QwtPicker::transition(QEvent const*) at :0
  [9] QwtPicker::eventFilter(QObject*, QEvent*) at :0
  [10] QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) at :0
  [11] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
  [12] RiaGuiApplication::notify(QObject*, QEvent*) at :0
  [13] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
  [14]  at :0
  [15] QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) at :0
  [16]  at :0
  [17]  at :0
  [18] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
  [19] RiaGuiApplication::notify(QObject*, QEvent*) at :0
  [20] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
  [21] QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) at :0
  [22] QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [23]  at :0
  [24] g_main_context_dispatch at :0
  [25] g_main_context_iterate.isra.20 at :0
  [26] g_main_context_iteration at :0
  [27] QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [28] QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [29] QCoreApplication::exec() at :0
2025-10-13 14:35:42 +02:00
Magne Sjaastad ee94c43305 Fix typo and restore filter for tree view after update 2025-10-13 14:35:42 +02:00
Magne Sjaastad dfa1a57084 #12954 Update all ensemble curves on x address change
Include the x address when computing hash for the data source for ensemble curves.,
2025-10-13 14:35:42 +02:00
Magne Sjaastad 15a1b1b46c Skip non-existing files before trying to import summary data 2025-10-09 15:08:25 +02:00
Magne Sjaastad 65e61767f4 Fix typo and restore filter for tree view after update 2025-10-09 11:14:45 +02:00
Magne Sjaastad fea2170826 Add guarding tying to mitigate reported segmentation fault
2025-10-06 12:48:32.779] [rotating_logger] [error] Stack trace:
  [0] manageSegFailure(int) at :0
  [1]  at :0
  [2] __dynamic_cast at :0
  [3] RimSummaryMultiPlot::updateReadOutLines(double, double) at :0
  [4] CoordinatePicker::trackerText(QPoint const&) const at :0
  [5] QwtPicker::trackerRect(QFont const&) const at :0
  [6] QwtPicker::updateDisplay() at :0
  [7] QwtPicker::begin() at :0
  [8] QwtPicker::transition(QEvent const*) at :0
  [9] QwtPicker::eventFilter(QObject*, QEvent*) at :0
  [10] QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) at :0
  [11] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
  [12] RiaGuiApplication::notify(QObject*, QEvent*) at :0
  [13] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
  [14]  at :0
  [15] QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) at :0
  [16]  at :0
  [17]  at :0
  [18] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
  [19] RiaGuiApplication::notify(QObject*, QEvent*) at :0
  [20] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
  [21] QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) at :0
  [22] QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [23]  at :0
  [24] g_main_context_dispatch at :0
  [25] g_main_context_iterate.isra.20 at :0
  [26] g_main_context_iteration at :0
  [27] QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [28] QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) at :0
  [29] QCoreApplication::exec() at :0
2025-10-07 16:33:26 +02:00
Magne Sjaastad 395ed06725 Update readout settings for created plot 2025-10-07 12:17:42 +02:00
Magne Sjaastad 5998efabb6 #12954 Update all ensemble curves on x address change
Include the x address when computing hash for the data source for ensemble curves.,
2025-09-30 14:13:15 +02:00
Magne Sjaastad 69a835893b Changes default readout type
Changes the default readout type from "SNAP_TO_POINT" to "TIME_VALUE_TRACKING".
2025-09-04 11:12:58 +02:00
Magne Sjaastad bec4c380c5 #12873 Make sure addresses are created on single summary case reload 2025-09-04 08:20:35 +02:00
Magne Sjaastad b8566b7761 #12873 Make sure addresses are created on single summary case reload 2025-09-02 15:48:12 +02:00
Magne Sjaastad 917136fec8 Release 2025.09.0 2025-09-01 12:38:48 +02:00
magnesj 56269db7cc Fixes by clang-tidy 2025-08-30 09:20:35 +02:00
Magne Sjaastad 32cdddf7cb Release RC_2
* Enables custom color selection for statistics curves
* Bump to RC_2
2025-08-29 19:13:03 +02:00
JJ 393917e6f3 Histogram drag/drop and paste improvements (#12851)
* Add drag'n'drop support for ensemble summary vectors and ensembles into histogram plots

* Make sure histogram plot is shown and all update signals are connected when loading a project.

* Support ensemble parameter drag'n'drop from data sources into histogram plots. 

* Show ensemble parameters in data sources tree.

* Add copy/paste of histogram curves

* Re-use all existing parameters in a plot when dragging a new ensemble into it
2025-08-29 15:12:32 +02:00
Magne Sjaastad 35d1279b1d Prepare 2025.09.0-RC_1
* Migrates obsolete color field to main color
* Sets filter mode for older project files
* Adds surfio license information
* Removes log to file preference
* Refines short name generation.
2025-08-28 20:14:53 +02:00
Magne Sjaastad 4135a743fe Release preparations
* Adds a bounds check on the node index to prevent accessing invalid memory locations.
This prevents potential crashes caused by out-of-bounds access when retrieving summary variable values.
* Updates warning message for incomplete deltas
* Plot based on a single realization from a file set ensemble is not restored correctly on project load
* Populate result addresses if no addresses are present
* Adds CNV_ (convergence) result name
* Avoid include of RiaResultNames.h in header file
2025-08-27 14:22:11 +02:00
Magne Sjaastad 4d9a723e32 #12790 Replaces transparency with opacity settings
Simplifies color handling by replacing transparency settings with opacity for curve and fill colors.

This change provides a more intuitive user experience and ensures consistent behavior across the application.

- Renames "ColorTransparency" to "ColorOpacity" for RimCurveSetAppearance.
- Introduces "CurveColorOpacity" for RimPlotCurveAppearance.
- Updates blending calculations to correctly use opacity.
- Adjusts UI slider attributes for opacity settings, including minimum, maximum and decimals.
2025-08-27 13:50:36 +02:00
Magne Sjaastad b8fc3df6f5 Adjustments for release
* Make sure RFT curve settings are restored correctly, use three numbers to identify project version string to compare with.
* Increases dialog window sizes for summary template operations
* Move improved summary import setting to Summary tab
* #12838 Use discrete linear as default legend for CNV_* result names
* Bump version to 2025.04.4-dev.10
2025-08-25 20:11:04 +02:00
Magne Sjaastad 546edadf35 Refactors font size handling using RimFontSizeField
Replaces direct PdmField usage for font sizes with the new
RimFontSizeField. This provides a consistent way to manage font
size options across different plot types.

The RimFontSizeField encapsulates the logic for generating font size
options based on the default plot font size from preferences. This
removes redundant code in various plot classes and ensures that font
size settings are synchronized with user preferences.
2025-08-25 12:43:36 +02:00
Magne Sjaastad e455011199 #12808 Improves ensemble data handling and error reporting
Enhances the robustness of ensemble data processing by:

- Displaying a tooltip when data is missing for a realization.
- Checks if an enhanced summary file exists before attempting to open it.
- Refines the creation of the realization filter to accurately represent the range of available data.
2025-08-22 06:47:07 +02:00
Magne Sjaastad 09309f3051 Guards against null summary reader
Addresses potential null pointer dereferences by adding checks for null summary readers before accessing their data.

This change prevents crashes and improves the robustness of summary data processing, particularly when dealing with incomplete or corrupted summary data.

The checks are added in the following locations:
- RiaSummaryPlotTemplateTools
- RiaSummaryStringTools
- RicPlotProductionRateFeature
- RicSummaryPlotFeatureImpl
- RimAnalysisPlot
- RimSummaryCalculation
- RimEnsembleCurveFilter
- RimEnsembleCurveSet
- RimSummaryEnsemble
- RimSummaryMultiPlot
- RimSummaryRegressionAnalysisCurve
- RimSummaryEnsembleSumo
2025-08-16 15:20:55 +02:00
Magne Sjaastad 2bcb25f679 Ensures summary reader addresses are created 2025-08-15 13:00:48 +02:00
Magne Sjaastad 5d22c7791d Adds ensemble name to summary case options 2025-08-15 13:00:48 +02:00
Magne Sjaastad fc846debcc #12744 Improve handling of missing/incomplete realizations 2025-08-13 19:07:52 +02:00
Magne Sjaastad c854166be6 Fix issue with single realization when using resdata (#12737)
* Moves multi reader initialization
* Log error message if not able to open file
* Make keywordCount pure virtual

The base class `RifSummaryReaderInterface` is changed to be abstract and the `keywordCount` is declared as a pure virtual method, therefore the derived classes must implement the method.

This will ensure that all readers are responsible for reporting a keyword count.

* Ensures addresses are created if required

Calls `createAddressesIfRequired` on the summary reader to ensure addresses are created before accessing keyword count.
This prevents potential issues when the addresses haven't been initialized yet.
2025-08-12 12:52:26 +02:00
Kristian Bendiksen f793abe46d #12558 Summary Plot: Fix crash when deleting sub plots.
The std::unique_ptr<RiuPlotWidget> would delete the widget when
RimSummaryPlot object was recreated. This would lead to a
double-delete since the RiuPlotWidget was already deleted by Qt
through the parent-child relationship.

Fixed by using QPointer, and leaving the cleanup to Qt.

Fixes #12558.
2025-08-11 15:04:24 +02:00
Magne Sjaastad b0a86de653 Avoid overwrite of axis object for newer project file versions
Add project file version check to the usage of m_plotAxis_OBSOLETE in RimSummaryCurve::initAfterRead()
2025-08-07 13:45:08 +02:00
Magne Sjaastad 2fc12a35e2 Regression Tests: Fix crash for summary plot with summary x-data 2025-08-01 13:45:10 +02:00
Kristian Bendiksen ade8e1d7e6 Remove QT_CHARTS dependency. 2025-07-30 13:39:02 +02:00
Magne Sjaastad 2f9971cb30 Enhances ensemble curve handling and performance
* Removes obsolete code
* Return first non-empty return value from reader
* Simplifies water cut curve visibility check
* Defers the page update until after all plots have been added.
* Add settings to control number of threads
* Refactors ensemble curve handling and visibility

Improves the efficiency of ensemble curve set management by separating realization and statistics curves into distinct collections. This allows for more targeted operations, such as selectively showing/hiding realization curves without affecting statistics.
Also defers data loading of curves until they are actually displayed, optimizing performance.
The visibility updates are modified to optionally skip updating the parent plot, providing more control over replotting behavior and preventing unnecessary updates.
2025-07-30 07:16:29 +02:00