Commit Graph
42 Commits
Author SHA1 Message Date
Magne Sjaastad 5f0c3f8a54 #14632 Guard against out-of-range time step index when loading results
A case in an ensemble can have fewer time steps than the case defining the time step axis of a statistics case. The time step index was used to index m_cellScalarResults directly, reading past the end of the vector in Release where CAF_ASSERT is a no-op.
2026-08-28 07:15:47 +02:00
Magne Sjaastad f13fbbbd87 #14565 Grid model results: Make SGAS for Two-phase Gas/Water models when missing in output
Simulators for two-phase gas/water models may report only SWAT. In this case no SGAS result entry was created, so SGAS was missing from the result list and TERNARY fell back to computing SOIL = 1 - SWAT, presenting the gas saturation as oil saturation.

Add RigSgasResultCalculator that creates a placeholder SGAS entry when the model has gas and water but no oil phase, SWAT is present and SGAS is missing. SGAS is then computed as SGAS = 1 - SWAT. The computation is dispatched from findOrLoadKnownScalarResult() and findOrLoadKnownScalarResultForTimeStep() the same way as SOIL.

The equivalent logic in RigCaseCellResultsData::testAndComputeSgasForTimeStep() was only reachable from RigSoilResultCalculator, which never runs for models without an oil phase. This function is replaced by computeSgasForTimeStep() delegating to the new calculator, and the unreachable call in RigSoilResultCalculator is removed.
2026-08-21 14:36:22 +02:00
Magne Sjaastad 56e98ba1c4 #14476 ApplicationLibCode: Replace CVF_ASSERT with CAF_ASSERT
Migrate all assert macros in ApplicationLibCode to CAF_ASSERT and remove every
use of cvfAssert.h.

CVF_ASSERT is replaced one to one. CVF_TIGHT_ASSERT is also replaced by
CAF_ASSERT, which is semantically exact: CVF_ENABLE_TIGHT_ASSERTS is 1 only
under _DEBUG, and that is what CAF_ASSERT now does. The two CVF_FAIL_MSG sites
become CAF_ASSERT( false && "message" ), preserving the message with the idiom
already used elsewhere in the code base.

Counts before and after: CVF_ASSERT 1044 to 0, CVF_TIGHT_ASSERT 66 to 0,
CVF_FAIL_MSG 2 to 0, cvfAssert.h references 154 to 0.

Include handling: files that included cvfAssert.h directly now include
cafAssert.h instead, includes left dead by the migration are removed, and files
that were relying on cvfAssert.h transitively get an explicit cafAssert.h. Files
that reach cafAssert.h through another caf header are left unchanged; a missing
include here is a compile error, not a silently disabled assert.

ResultStatisticsCache links only LibCore and therefore had no path to
cafAssert.h. Add the cafPdmCore directory as a private include path rather than
linking the library, since cafAssert.h is header only.

Note that this stops these asserts from firing in Release and RelWithDebInfo,
where CVF_ASSERT was previously active.
2026-08-07 15:05:57 +02:00
Magne Sjaastad 189bf3e35c #14324 Avoid crash in Mobile Pore Volume when SWCR/MULTPV size differs from PORV 2026-06-26 17:09:04 +02:00
Kristian Bendiksen 984d70237b #14101 Add progress bar to fault distance calculation 2026-06-08 21:42:19 +02:00
Kristian Bendiksen 5ee62c61e1 #14128 Use KD-tree (nanoflann) for fault distance nearest-face search
computeFaultDistances faked a nearest-point query with cvf::BoundingBoxTree,
which only supports box overlap: it grew a cell-sized box until it overlapped a
fault face. For cells far from any fault this did many full tree traversals and
then brute-forced the distance to a large, over-collected candidate set, and the
answer was only approximate. This was slow on grids with ~10 million cells.

The metric is the distance from each cell center to the nearest fault face
center, which is exactly a nearest-point search. Replace the bounding-box tree
and the grow-the-box loop with a nanoflann KD-tree built over the fault face
centers and a single nearest-neighbor query per active cell. A zero-copy adaptor
reads the existing std::vector<cvf::Vec3d> directly. The OpenMP loop is retained
since nanoflann queries are read-only. The result is O(F log F) build plus
O(N log F) queries, the full grid-node array copy is gone, and distances are now
exact rather than approximate.

Add nanoflann as a vcpkg dependency, wired in like Clipper2 as an imported
target.

Refs: https://github.com/OPM/ResInsight/issues/14128
2026-06-08 21:39:08 +02:00
Kristian Bendiksen b51dc28854 #13890 Faults: Add FAULTDIST result for a user-selected subset of faults
The existing FAULTDIST result always considered every fault in the main
grid. Users with many faults need to compute distance fields against a
named subset, so this adds a Fault Distance Results collection under
each view's Faults node. Each entry holds a multiselect of faults and a
name (FAULTDIST1, FAULTDIST2, ...) and publishes the result into the
Generated cell-result category.

The per-cell BVH-based distance loop was extracted from
RigFaultDistanceResultCalculator into a reusable utility that accepts
the subset of faults to include; the original all-faults entry point
delegates to the same utility and keeps the static-native FAULTDIST
behavior unchanged.
2026-06-01 11:28:46 +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
jonjenssen 1564df8115 Soil calculation: Keep trying next time steps. 2026-05-04 18:14:33 +02:00
jonjenssen 09bbaa58bf Add additional result size checks 2026-05-04 15:22:10 +02:00
Kristian Bendiksen a0dbbf6cb1 Remove deprecated size_t overloads from RigActiveCellInfo
Migrate all callers to use type-safe ReservoirCellIndex and
ActiveCellIndex wrappers, then remove the deprecated isActive(size_t),
cellResultIndex(size_t), and setCellResultIndex(size_t, size_t) methods.
2026-03-31 12:32:05 +02: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 6e1ba530c4 Adds RiaPhaseTools for phase system analysis
Adds a new utility class, RiaPhaseTools, which provides functionalities to analyze phase systems in reservoir simulations.

This class includes methods for checking the presence of individual phases (oil, gas, water), identifying different phase systems (three-phase, two-phase, single-phase), and retrieving a system description for display in the UI. It also includes utility functions to retrieve the preferred name for PCOG curves based on the detected phase system.
2025-12-09 12:41:35 +01:00
Magne Sjaastad 6043265686 Adds support for SWAT result calculation
Implements a result calculator for SWAT (Water Saturation) to handle cases where only the water phase is present.

This also introduces checkAndCreatePlaceholderEntry for grid cell calculators. This can be used for creation of result metadata. When using this, both creation of metadata and calculation is in the same class.
2025-12-06 13:20:40 +01:00
jonjenssen e0893cfa6f Add extra checks for result indexes and update opm-common with dual poro fixes 2025-10-28 06:37:21 +01:00
Kristian Bendiksen a81229bad8 Introduce type-safe cell index for active reservoir cell index. 2025-10-13 16:17:03 +02:00
Magne Sjaastad 62188fa9f2 Improve naming of cell related result names
Use radial/theta when required for GUI
Hide DX/DY from the list of available results
2025-10-08 16:03:56 +02:00
Magne Sjaastad b771421087 #12994 Radial model: Freeze when selecting cell result INDEX_IJK
When a LGR is created to be able to show the radial grid, the active index usage when computing INDEX_IJK was wrong.

wip
2025-10-08 16:03:56 +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
Kristian Bendiksen f239db6fb2 #12326 Well Target Mapping: handle two-phase eclipse models (missing SGAS vector)
Fixes #12326
2025-04-02 17:19:57 +02:00
Kristian Bendiksen fa9066de06 Janitor: add result name for "PORV". 2025-03-31 14:20:43 +02:00
Magne Sjaastad ca0179d118 Remove obsolete CMake statements
When using modern CMake and Qt6 we can remove obsolete source_group() and QT_MOC_HEADERS
2025-01-28 07:01:42 +01:00
Magne Sjaastad 8a55b4cd20 #12021 Compute fault distance for active cells 2025-01-06 07:23:28 +01:00
Magne Sjaastad 46515b107f #12021 Wrong calculation of INDEX_IJK
INDEX_I INDEX_J INDEX_K are result properties computed by ResInsight. When using opm-common, only active cells are defined. In this situation, the computation fails.

Change the implementation to compute these values only for active cells. This will also improve performance and use less memory.
2025-01-06 07:23:28 +01:00
Magne Sjaastad 06fb3e1241 #11895 Always show Oil Saturation as available
If no SOIL is found on file, compute based on available SWAT and SGAS.
2024-11-19 13:08:04 +01:00
jonjenssen f21d1545f8 Some cleanup 2024-10-29 18:17:31 +01:00
jonjenssen 88118ee4e1 Privatize grid cell array 2024-10-29 18:17:31 +01:00
Kristian Bendiksen b760fcebe2 #11689 Well Target Candidates: generate on well target clusters for single case. 2024-09-30 13:42:28 +02:00
Kristian Bendiksen 13cf450831 Add result calculator for PORV*SOIL, PORV*SGAS, and PORV*(SOIL+SGAS). 2024-09-30 13:42:28 +02:00
Magne Sjaastad 81ab903151 #10916 Create derived result used to identify NNC cells 2023-12-07 07:57:40 +01:00
Kristian Bendiksen 959c9d48fa #10649 ApplicationLibCode: Use collection.empty() instead of comparing with size 2023-09-27 10:16:37 +02:00
Magne Sjaastad 81809efee9 Add support for grid import using opm-common
Add support for import of geometry and results for main grid. Currently no support for LGR.

Add selection in Preferences to either use libecl or opm-common for grid import.

If RESINSIGHT_DEVEL flag is set, display reader in an Eclipse case to make it possible to compare Eclipse and opm-common in same project.

Add more includes to custom-opm-common to be able to support this functionality. opm-common is unchanged.
2023-08-28 13:46:50 +02:00
Magne Sjaastad 5ee764af48 Refactor result definition 2023-05-11 08:37:58 +02:00
Magne Sjaastad f70d2c4949 Add result type and create and use custom legend if possible
* Update submodule
* Use postfix functions and add custom color legend

* Add type to RigEclipseResultAddress
Read types from ROFF and create default legend based on type or custom created legend.

* Use caseId to connect legend configuration to result in a case
2023-05-09 11:41:56 +02:00
Magne Sjaastad f8c1eebe01 Use AABB tree to speed up fault distance calculation 2023-04-24 12:40:25 +02:00
Kristian Bendiksen d11f51fcae Refactor: extract Allan diagram computation. 2023-04-19 15:00:56 +02:00
Kristian Bendiksen 9b78826f03 Refactor: extract cell volume computation. 2023-04-19 15:00:56 +02:00
Kristian Bendiksen 6a37c5a5d0 Refactor: extract oil volume computation. 2023-04-19 15:00:56 +02:00
Kristian Bendiksen 07eb1e9f4e Refactor: extract I/J/K index computation. 2023-04-19 15:00:56 +02:00
Kristian Bendiksen 89dca9eec9 Refactor: extract mobile pore volume computation. 2023-04-19 15:00:56 +02:00
Kristian Bendiksen be12016128 Refactor: extract fault distance computation 2023-04-19 15:00:56 +02:00
Kristian Bendiksen 5a64e90103 Refactor: extract Soil computation. 2023-04-19 15:00:56 +02:00