Commit Graph
58 Commits
Author SHA1 Message Date
Kristian Bendiksen da28ffe613 #14345 Use cell filter geometry for grid calculation visibility
The visibility mask for 'filter by view' was taken from the view's
visible cells, which are limited to the active cells of the view's
case. When applying the calculation to additional cases with different
ACTNUM, cells inside the filter geometry that are inactive in the
view's case were excluded from the aggregation for cases where they are
active, giving too low sums.

Build the mask from the cell filter geometry (RANGE_FILTERED +
RANGE_FILTERED_INACTIVE) instead, so each calculation case contributes
its own active cells inside the filters. Property filters in the view
no longer affect the calculation. The result filtering now uses the
same mask as the input filtering, also when the visibility filter is
provided by the caller.
2026-09-16 10:53:31 +02:00
Kristian Bendiksen be9969d5b4 #14345 Add debug logging of value counts used in aggregations and histogram statistics
Log at debug level, for each case and time step, how many input values
contribute to a grid calculation aggregation and how many were replaced
with the default value (non-visible cells and undefined values). Also
log the sum and number of values used when computing visible cells
statistics, to allow comparison with the histogram sum in the 3d view.
2026-09-16 10:53:31 +02:00
Kristian Bendiksen 0ad61a004a #14345 Grid Calculation: replace undefined values with default value in aggregations
Aggregation functions like sum() in the expression parser include all
values in the input vector. Undefined values (HUGE_VAL) could leak into
the aggregation input when a grid case group member has fewer time steps
on disk than the main case it inherits result meta data from, or when a
cell is active in the calculation case but has no value in the source
data. This produced infinite sums for some realizations, while the
histogram statistics ignore undefined values.

Replace undefined values in the aggregation input with the default value
0.0, matching the histogram semantics, and log a warning per case and
variable when values were replaced.
2026-09-16 10:53:31 +02:00
Magne Sjaastad 64361c2f78 #14746 Fix duplicate AppEnum serialization text and detect it in addItem
RimGridCalculation::AdditionalCasesType::ALL_CASES and
RimIntersectionFilterEnum::INTERSECT_FILTER_BETWEEN both reused the
serialization text of a sibling enum value (NONE and
INTERSECT_SHOW_BELOW respectively), so they would silently round-trip
as the wrong value when read back from a project file.

AppEnumMapperBase::addItem only asserted alias uniqueness, not text
uniqueness, so this class of bug went undetected. Add a CAF_ASSERT
checking that a new enum value's serialization text does not match an
existing value's text or aliases.

Found while investigating the AppEnum alias-duplication note in #14654.
2026-09-14 08:14:19 -04:00
Magne Sjaastad 6022980d54 #14555 Allow statistical grid cases to be used as source for grid calculator expressions
Statistics cases were filtered out of the case lists used by the grid calculator, both in the variable table and in the Select Result dialog. Statistics cases belonging to a grid ensemble were also missing from RimProject::allGridCases(), as only the source cases of the ensemble were collected. Statistics cases in a grid case group were already included.

A statistics case can be used as source only. A calculated result stored in a statistics case is interpreted as computed statistics, and would block recomputation of the statistics, so a statistics case is never assigned as destination case.

A statistics case with no computed statistics is not necessarily opened. Make sure source cases are opened before grid dimensions are validated and before result data is read.
2026-08-21 14:53:48 +02:00
Magne Sjaastad ff7bf6c7c9 Do not terminate when a grid calculation reads a cell index out of range
RigAllGridCellsResultAccessor bounds checked the cell index with an assert that is compiled out in release builds, and then called std::vector::at(), which throws. RimGridCalculation::getActiveCellValues() calls the accessor from an OpenMP loop, using active cell indices from the destination case to read results from the source case, so an index beyond the source result vector threw an exception that could not escape the parallel region and called std::terminate. Return undefined for an out of range index instead, and guard against a null result accessor.
2026-08-10 10:07:32 +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 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 ab1cd9bb22 #13603 Replace bool/errorText with std::expected in ExpressionParser
evaluate() and expandIfStatementsAndEvaluate() now return std::expected<void, QString>: the error message is always part of the return value rather than an optional out-parameter, making it impossible for callers to silently discard errors.

Update RimGridCalculation and RimSummaryCalculation to use evaluateResult.error() instead of a separate errorText variable.
2026-02-23 19:19:09 +01:00
Magne Sjaastad 5be1a4feb7 Replaces push buttons with addNewButton
Removes the explicit usage of PdmUiPushButtonEditor and associated fields.

Replaces these with the more flexible addNewButton function in PdmUiOrdering.
This provides a more streamlined way to add buttons to the UI.
2026-01-27 13:37:37 +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
Kristian Bendiksen a81229bad8 Introduce type-safe cell index for active reservoir cell index. 2025-10-13 16:17:03 +02:00
Kristian Bendiksen 30d0b8e115 Grid calculator: add support for grid ensembles. 2024-12-20 10:25:15 +01:00
Magne Sjaastad 9b150ca38a Make sure statistics cases are displayed in an Eclipse view 2024-09-24 07:45:10 +02:00
e9ff3540ba Update dev branch after patch release
* Fix calculation for active cell values
Always allocate result data for active cells in destination case. Make sure that active cells is used for both population of expression variables and filtering of data. Improved naming to make it clear that we always work with active cell data.

* Check if scalar result index is valid
* Create the static scalar results once
addStaticScalarResult will clear already computed data, causing calculations to be triggered once more

* Early return if data already is available
If not checking if data is available, data is read from file and appended to result vector.

* Always check date for H5 files, and recreate if required

* Always recreate ESMRY if file exists and is older than SMSPEC

* #11355 Use category if result name starts with FIP or ends with NUM

* #11337 Summary import: Make sure ESMRY includes restart history

* #11334 Fix cvf::Viewport assert triggered for small contour map/2d intersection
Size of the overlay is could become negative, and would overflow for small views.

* #11310 Fix assert on single cell model.
Well pipe radius would become HUGE_VAL due to off-by-one error.
The assert could only happen on model with a single cell.

* Check equal grid size only when required
Equal grid size is required if there is more than one grid case in the expression. If a cell filter view is active, the visibility is based on one view and reused for all other grid models, and requires equal grid size.

* Remove obsolete log message

* Do not show dialog during regression tests

* Fix eclipse case contour map left click (#11378)

* Make sure we operate in the correct domain when picking points in the contour map

* Remove obsolete code causing grid to be loaded for all cases


* Bump version to 2024.03.1

---------

Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
Co-authored-by: jonjenssen <69144954+jonjenssen@users.noreply.github.com>
2024-04-19 15:09:15 +02:00
Kristian Bendiksen be3d06c549 Refactor: improve api for views and oil fields. 2024-04-04 10:24:21 +02:00
Magne Sjaastad 9f96cb9694 #11258 Grid Calculation: Unintended release of result data memory
Avoid release of memory when working on a single case
2024-03-05 12:40:15 +01:00
Magne Sjaastad 6fe997b3c9 Add and use caf::PdmUiPushButtonEditor::configureEditorLabelHidden 2024-02-23 08:47:52 +01:00
Magne Sjaastad 8a3a3aef7e Fix crash when using grid case group 2024-01-22 17:37:15 +01:00
Magne Sjaastad e2e861ed95 Select none, all cases or a grid case group to apply a calculation
This will enable the use of expressions var_a = sum(x) on a grid case group
2024-01-22 08:42:23 +01:00
Magne Sjaastad d61838940a Grid calculations: Free memory after data has been read
When data has been read for a variable, free the related data to make sure the memory footprint is as low as possible.
2024-01-22 08:42:23 +01:00
Magne Sjaastad 0c7a8ad2de Fix regression introduced in a9598f
Wrong naming of variables caused wrong refactoring
2024-01-19 11:00:28 +01:00
Magne Sjaastad a9598fbe0e Define result address for to be used for non visible cells
Display a data source selection dialog to specify the result address to be used for cell values outside the visible cells.
2024-01-17 08:29:41 +01:00
Magne Sjaastad 35cc2127f2 Log error message instead of displaying a dialog
The error message is displayed once for each time step, and appears as eternal loop if you have many time steps.
2024-01-17 08:29:41 +01:00
Magne Sjaastad f907c6bdff #11024 Allow grid calculator expressions with no input cases
Will make it possible to use calc := 3
2024-01-12 16:06:32 +01:00
Magne Sjaastad 31d11f56f5 #10986 Set non-visible cells to zero for aggregated expressions
For aggregated expressions, set cells outside filter to 0.0. Do nothing for normal expressions.
2024-01-03 10:28:34 +01:00
Magne Sjaastad 30807438d1 Find and evaluate dependent calculations 2023-12-06 15:07:13 +01:00
Magne Sjaastad 3f0b767528 Add time step filter 2023-12-06 15:07:13 +01:00
Magne Sjaastad 27f9ef4700 Rename to m_applyToAllCases 2023-12-06 15:07:13 +01:00
Magne Sjaastad f247df5079 Cache user response for calculation question 2023-12-06 14:00:33 +01:00
Magne Sjaastad fee950cdd4 Add missing visibility filter for single grid calculations 2023-12-05 07:48:21 +01:00
Magne Sjaastad 8b2d65e11a Remove use of progress dialog, unstable behaviour
In some cases, the progress dialog remains visible after the computation is completed. When an expression is applied to multiple cases, text is output to Messages window. This can be used to give user information on progress.
2023-12-04 14:59:29 +01:00
Magne Sjaastad 459dea64c7 Grid Calculations: Show statistics for aggregated expressions 2023-12-04 09:21:42 +01:00
Magne Sjaastad 96401c519d Make sure data for a variable is using correct case
Make sure the correct Eclipse case is used when extracting values for a variable. Simplify the data extraction using activeReservoirCellIndices
2023-12-01 12:12:51 +01:00
Magne Sjaastad 3cda00b28b Detect and show aggregated value for each time step in all realizations 2023-11-27 19:10:28 +01:00
Magne Sjaastad 537cead7f1 Add optional input value filter for calculation 2023-11-27 19:10:28 +01:00
Magne Sjaastad 1046bcbb94 Disable view filtering when using grid calculations as part of grid statistics
Active cells can be different between cases, and view filter from one specific case is not able to use for other cases.
2023-11-10 12:49:32 +01:00
Magne Sjaastad fb890300c5 Propagate variable changed signal to RicUserDefinedCalculatorUi
- ensure that the UI is updated
- if the grid size is different, set destination case equal to the input variable case
2023-11-10 12:07:26 +01:00
Magne Sjaastad 917fd9b3b5 Move grid size check to calculate()
This move will make it possible to use a calculator expression defined for a different grid size for grid case statistics.
2023-11-10 12:07:26 +01:00
Magne Sjaastad 69f132ffa5 Add import/export grid calculations to Grid Calculator
Refactoring
2023-11-10 10:14:59 +01:00
Magne Sjaastad 39fc9d5c36 Add support for grid calculations as data source for statistics
- add data source selection, either Case Property or Grid Calculation
- add Time Step Selection, can be used for both dynamic case properties and Grid Calculations
- optionally release grid calculation data when statistics is computed
- recursive grid calculations is supported
2023-11-08 08:39:04 +01:00
Magne Sjaastad 7eb3e98bb2 Optionally apply a grid calculation on all grids 2023-11-07 19:14:58 +01:00
Kristian Bendiksen 1899184a41 Janitor: Remove deprecated method. 2023-09-11 17:39:38 +02:00
Magne Sjaastad 503180ba48 Do not tag calculator results to be stored in cache 2023-08-11 13:09:30 +02:00
Magne Sjaastad bcc00adea1 Add edit button to grid calculation expressions
Implement add calculation from grid cell result
2023-06-05 09:07:14 +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
Kristian Bendiksen 99e9944e6e #9493 grid calculator on active cells only
* Janitor: Improve getter for RigActiveCellInfo::gridActiveCellCounts.
* #9493 Grid Calculator: calculate on only active cells.
* #9493 Grid Calculator: filter with active cells.
* Fix calculation for input grid cases
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2022-11-24 10:44:03 +01:00
Magne Sjaastad a74b168e03 Improve property linking
* Allow linking of property filters across cases with same IJK size
* Recalculate when grid is replaced
Find dependencies between calculations and order them accordingly
2022-11-22 10:22:17 +01:00
Magne Sjaastad e7c864c6d8 Improve grid cell calculator
* Use full name for grid case view
* FIx signed / unsigned issue
* Support drag/drop of file names into Main Window
* Add function to check if two grid cases are of equal size
* Result Info: Show cell result text for all linked views
* Improve how to specify cells to be included in calculation

- move view filter to calculation
- improve how to assign values to non-visible cells
- avoid computation between grids of different size

Closes #9482
2022-11-17 15:51:01 +01:00
jonjenssen 78e1bf3e94 Refresh data source tree when a grid calculation is updated (#9255) 2022-09-01 11:01:47 +02:00