mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
5ee62c61e145261cb37fb12ed580c8db6684e2bf
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
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
devbranch for contributions and pull requests - Note that the
masterbranch 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.
Description
3D viewer and post processing of reservoir models
c-plus-pluscross-platformeclipsegeomechanicsoctaveopenglpythonreservoir-modelingseismicvisualization
Readme
GPL-3.0
375 MiB
0 Stars
4 Watchers
0 Forks
Languages
C++
88.8%
ECL
4.7%
TypeScript
2.9%
Python
1.8%
CMake
0.6%
Other
1%