Commit Graph
36 Commits
Author SHA1 Message Date
Magne Sjaastad 7b580694ed #13430: Exclude zero values from ensemble statistics for derived vectors
Add m_includeZeroValues option to RimEnsembleStatistics (default on, preserving existing behavior). When disabled, exact zero values (e.g. from shut-in wells/groups) are excluded from the mean, P10/P50/P90 and custom percentile calculations in RimEnsembleStatisticsCase::calculate(). This is useful for derived vectors such as WCT, GOR and PI, where zeros caused by a shut well/group should not skew the statistical curves.

Exact equality (not an epsilon) is used, since shut-in values are reported as exact 0.0 by the simulator and non-accumulated vectors use STEP_RIGHT interpolation, which does not introduce floating-point noise.
2026-10-22 13:34:34 +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
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 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
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 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
Magne Sjaastad f9f9b6b07b Refactor logging of elapsed time 2025-07-23 15:23:08 +02:00
Magne Sjaastad ad365f06f7 Ensure consistent return type syntax 2025-07-23 10:34:27 +02:00
magnesj 86d60672ab Fixes by clang-format 2025-07-22 14:35:59 +02:00
Magne Sjaastad ef74e781e9 Handles error result addresses for statistics curves
Changes in the summary system has introduced a bug causing two identical results to be displayed, the correct statistical vector and the error. If error is asked for, return no values.
2025-07-22 14:07:06 +02:00
Magne Sjaastad b99a213ae7 Add resampling method to RiaCurveMerger
Delete unused parameter
2025-06-16 10:37:34 +02:00
Magne Sjaastad 118ecf941a Performance improvements ensemble curves
* Do not create ensemble in initAfterRead
* Check if filter is active before update
* Do not recompute statistics on every loadData
* Removes unnecessary resampling
* MSVC: Add support for dynamic deoptimalization
* Make sure RFT plots are initialized based on curves in project file
* Make sure the progress dialog is always on top
* Add more progress info when loading project file
* Make sure names in RFT plots are updated
2025-05-28 15:10:43 +02:00
Magne Sjaastad dc4cd33c6e #12495 Refactors ensemble statistics handling
Removes the dedicated `SUMMARY_ENSEMBLE_STATISTICS` category and instead uses a `statisticsType` field within `RifEclipseSummaryAddress` to represent ensemble statistics.

This change simplifies the code and avoids potential confusion by representing statistics as attributes of existing summary types, rather than a separate category. It also improves code robustness.
2025-05-16 07:53:46 +02:00
Magne Sjaastad 9b6e441386 Make it possible to exclude partial delta curves
Make sure statistics curves are recomputed on flag change

When toggling "Discard Missing or Incomplete Realizations", make sure the statistics is recomputed and the ensemble plots updated.
2024-11-18 07:45:20 +01:00
Magne Sjaastad 581b268928 Use hash of input do control if calculation is required
Add hash functions
Add serial number to SummaryReaderInterface
Add hash for RimSummaryCase

Use hash based on input parameters to control caching of data in RimEnsembleStatisticsCase::calculate  and RimEnsembleCurveSet::appendOptionItemsForSummaryAddresses
2024-10-23 12:38:22 +02:00
Magne Sjaastad df091336e0 Move summary tools into separate folder 2024-10-22 07:28:43 +02:00
Magne Sjaastad 2c98438528 #11708 Summary: Improve robustness for statistics calculations
There can be incomplete realizations in an ensemble. Make sure that the calculation is robust for all variants of incomplete curves.

Use RiaTimeHistoryCurveMerger to ensure one definition of time steps and extraction of curve values to be used to compute ensemble statistics.

Remove unused function.
2024-09-19 10:23:02 +02:00
Kristian Bendiksen e9c46c5cec Rename RimSummaryCaseCollection to RimSummaryEnsemble. 2024-07-30 08:55:12 +02:00
Kristian Bendiksen d177491843 #10648 Refactor summary reader: return std::vector<double> instead of taking ptr. 2023-10-02 09:16:52 +02:00
Magne Sjaastad 263e39b97b Add regression curves to ensemble statistics curves
* Add statistics enum
* Support ensemble statistics curve as data source for regression curves
* Allow creation of regression curves from statistics curves
* Make sure regression curves are updated after source curves
* Add state to use full or user defined range for regression source data
* Add isRegressionCurve
* Make sure source stepping works when regression curves are present
2023-09-30 11:07:23 +02:00
Magne Sjaastad d34bb8a64c Improve ensemble cross plot statistics
* Support cross plot in plot templates
* Fix source stepping for cross plots
* Show cross plot data in "Show Plot Data"
* Use bin size and realization count when computing cross plot statistics
2023-09-28 14:32:32 +02:00
Magne Sjaastad fb288f602d Support ensemble cross plot curves
* Remove use of RifEnsembleStatisticsReader
* Add RimSummaryAddressSelector and RimEnsembleCrossPlotStatisticsCase
* Remove RifEnsembleStatisticsReader
* Add support for cross plot x-axis selection
* Support source stepping on ensemble cross plot curves
* Add isXAxisSummaryVector
2023-09-25 12:45:47 +02:00
Kristian BendiksenandMagne Sjaastad ff209ad7c2 Refactor ensemble import dialog
* #9773 Refactor ensemble import dialog.
* #9773 Add support for ensemble import of StimPlan/Reveal summary data.
* #9773 Add method for finding min and max time steps.
* #9773 Add option for resampling to hour intervals.
* #9773 Add option for resampling to minute intervals.
* #9773 Ensemble statistics: determine sub-sampling period dynamically.
* Use RiaWeightedMeanCalculator for curve resampling.
* Add HOUR and MINUTE to date time app enum.
* #9773 Generate better ensembles for StimPlan summaries.
* #9773 Fix parameters.txt lookup for StimPlan summaries
* Refactor: Improve interface of RicImportSummaryCasesFreature::createSummaryCasesFromFiles

Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2023-04-20 10:16:43 +02:00
Magne Sjaastad f8c5cf389f clang-format: Set column width to 140
* Set column width to 140
* Use c++20
* Remove redundant virtual
2023-02-26 10:48:40 +01:00
Magne Sjaastad 5ec32f8613 Update text for curve names and plot titles when source data changes
* Update titles after dropping vectors into plot
* Do not replace _Name variables
* Make sure signals are wired when opening a project file
* Add auto name field and set default on
* Remove includes from header files
2022-12-09 08:46:36 +01:00
Magne Sjaastad 3b5139c24d #9023 Performance : Use cached analyzer
Remove min max from RimSummaryCaseCollection
Guard null pointer access
Improve default behaviour for axis range control
2022-06-10 06:25:41 +02:00
Magne Sjaastad d36bf11c62 Several performance fixes (#9026)
* #9023 Performance: Use count instead of for loop

* #9023  Analyzer: Cache vector names for categories

* #9023 Performance : Use cached ensemble analyzer

* #9023 Performance : Add min/max values to ensemble statistics

* #9023 Performance : Improve statistics calculator

* #9023 Performance : Use high performance toInt()

* #9023 Performance : Build summary addresses in parallell
2022-06-07 21:09:36 +02:00
Magne Sjaastad 0ca70249ae Move defines to RiaDateTimeDefines 2022-03-14 09:18:48 +01:00
Magne Sjaastad 2d2bf0bbc7 CMake : Improve handling of compiler flags (#8486)
#8478 Code cleanup to fix some warnings

Several adjustments to improve the specification and usage of compile flags.
2022-01-26 10:08:28 +01:00
Kristian Bendiksen 1e83254e9e Make P10/P90 calculation style more explicit 2021-09-16 10:38:27 +02:00
Magne Sjaastad 60dbb8a715 #7774 Ensemble Statistics : Remove test for match on first reported simulation time step
When computing statistics curves for an ensemble, we computed these values based on curves having identical same timestamp as the first summary case in the ensemble. If the simulator had numerical issues, this first time step can be slightly different from case to case.

Remove this test on first time step, but keep the optional test on last time step.
2021-06-11 18:16:56 +02:00
Magne Sjaastad 6b16b2dcf1 #7065 Include inf values in statistics curves (P90, P10, ..)
If inf values are skipped, the visualization of statistics curves will be positioned at wrong date.
2021-02-16 13:23:28 +01:00
Magne Sjaastad 721d912f9e #7358 Summary Curve Resampling : Use helper code in RiaSummaryTools 2021-02-12 13:20:21 +01:00
bc81437435 Moved UnitSystem from RiaEclipseUnitTools to RiaDefines. (#7225)
* Moved UnitSystem from RiaEclipseUnitTools to RiaDefines.
- Renamed UnitSystem to EclipseUnitSystem
- Replaced header includes and removed obsolete includes of RiaEclipseUnitTools.h
* Moved  result name functions into separate file.
* Minor cleanup

Co-authored-by: rubenthoms <rubenthoms@users.noreply.github.com>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
Co-authored-by: magnesj <magnesj@users.noreply.github.com>
2021-01-21 12:58:46 +01:00
Gaute Lindkvist 81699db187 Rename ApplicationCode to ApplicationLibCode 2021-01-11 15:27:45 +01:00