Commit Graph
37 Commits
Author SHA1 Message Date
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