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
2024-10-04 13:25:20 +02:00
2024-10-31 15:39:52 +01:00
2013-04-19 08:58:57 +02:00

ResInsight

ResInsight is an open source, cross-platform 3D visualization and post-processing tool for reservoir models and simulations.

Key Features

  • Specialized Visualizations: Tailored for efficient interpretation of reservoir simulation data with visualizations of properties, faults, and wells
  • Performance-Oriented: Exploits multi-core CPUs and GPUs for highly responsive operation
  • Statistical Analysis: Handles large numbers of realizations with built-in statistical calculations
  • Python Integration: Enables powerful result manipulation and computations with two-way data exchange
  • GNU Octave Integration: Enables powerful result manipulation and computations with two-way data exchange
  • Extensible Framework: Supports additional data sources and visualization methods (solvers, seismic data, CSEM, geomechanics)
  • Eclipse Integration: Supports export to Eclipse input formats for simulation cycles and parameter studies

Supported Input Formats

  • Eclipse binary output (*.GRID, *.EGRID files with corresponding *.INIT, *.XNNN, and *.UNRST files)
  • Selected Eclipse input file sections
  • Grid information with cell property data sets

Technology Stack

ResInsight utilizes:

  • Equinor/resdata and OPM/opm-common libraries for Eclipse result file access
  • Qt for the application framework
  • Qwt for plotting functionality
  • vcpkg for dependency management

Platform Support

ResInsight is cross-platform with automated testing on:

  • Red Hat Enterprise Linux (RHEL)
  • Ubuntu
  • Windows 11

Documentation

Development

Source Code

git clone git://github.com/OPM/ResInsight.git

Minimum Requirements

  • gcc 13
  • clang 19
  • CMake 3.15
  • MSVC 2022 17.4

These requirements are defined by used features in c++23 like std::stacktrace and std::expected.

Dependencies

Most dependencies are managed using vcpkg as defined in vcpkg.json

Contributing

Contributions are welcome! Please:

  • Use the dev branch for contributions and pull requests
  • Note that the master branch is kept stable and updated only for releases
  • See Spell Checking Guide for information on automated spell checking

Building

See the Build Instructions for detailed setup information.

License

ResInsight is co-developed by Equinor ASA, Ceetron Solutions AS, and Ceetron AS. The software is copyrighted by Ceetron and Equinor and licensed under GPL 3+. See the COPYING file for details.

Languages
C++ 88.8%
ECL 4.7%
TypeScript 2.9%
Python 1.8%
CMake 0.6%
Other 1%