mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
f6787a9ea1078c095545b0455c9e5f4143cca3df
snappy 1.2.2, a transitive dependency of arrow, includes <immintrin.h> only when SNAPPY_HAVE_BMI2 or SNAPPY_HAVE_X86_CRC32 is set, but MemCopy64() selects an AVX code path on a separate condition, `defined(__x86_64__) && defined(__AVX__)`. The vcpkg port passes -DSNAPPY_HAVE_BMI2=OFF and -DSNAPPY_HAVE_X86_CRC32=OFF to keep the binaries portable, so on a toolchain whose default target enables AVX that branch is compiled with no intrinsics header and snappy.cc fails with "'__m256i' was not declared in this scope". This broke the clang-tidy and clazy-report workflows the first night after they moved to ubuntu-26.04. The runner switch also changed the vcpkg compiler hash, so the binary cache went from "Restored 103 package(s)" to "Restored 0 package(s)" and every port was rebuilt from source, which is what exposed snappy in the first place. The bug is not GCC 15 specific: microsoft/vcpkg#51047 reports it against GCC 14.3.1. It is still present in snappy 1.3.1 and main, and vcpkg master still ships 1.2.2 with the SNAPPY_HAVE_* options off, so neither a baseline bump nor a port update fixes it. Vendor the port under ThirdParty/vcpkg-overlay-ports and add avx-immintrin.patch, which includes <immintrin.h> for the __AVX__ branch as well. The patch cannot change the ISA baseline of the result: it only supplies a header on a path the compiler was already going to take. Verified by reproducing the failure locally with an overlay triplet setting -march=x86-64-v3, confirming the patched port builds both with and without that flag, and checking that objdump finds no AVX instructions in the library built with the stock toolchain. Reference the two overlay ports by their individual directories rather than by the parent directory. The two configurations resolve different versions of both ports (default: snappy 1.2.2#1, thrift 0.22.0; rhel8: snappy 1.2.1, thrift 0.20.0#1), so an overlay of the whole directory would downgrade thrift for the default builds and bump snappy for RHEL8. Dry runs of both manifests confirm each profile now picks up only its own overlay. The bumped port-version misses the existing vcpkg binary caches, but those caches are already cold for the ubuntu-26.04 workflows.
#13807 Add 3D viewer background context menu with Link View, Update Bounding Box, Zoom All and default camera position
ResInsight
ResInsight is an open source, cross-platform 3D visualization and post-processing tool for reservoir models and simulations.
Key Features
- 3D Visualization: Grid properties, faults, LGRs, intersections, contour maps and cell filters, using multi-core CPUs for responsive operation
- Ensembles: Grid and summary ensembles with statistics, contour maps and correlation analysis
- Plotting: Summary, well log, RFT, PLT, well allocation, flow characteristics, cross plots and histograms
- Wells and Completions: Well paths, perforations, fishbones, valves and fractures, with export of completion data (COMPDAT, WELSEGS, COMPSEGS)
- Geomechanics: Abaqus results with derived stress and strain quantities
- Seismic: Seismic volumes displayed together with grids and wells
- Model Export: Sector models and grid properties in simulator input format, surfaces as IRAP and TSurf
- Python API: The
ripspackage drives ResInsight and exchanges data through gRPC - GNU Octave: Result manipulation and computations with two-way data exchange
- Cloud Data: Well paths and well logs from OSDU, and grid properties from Sumo
Supported Input Formats
- Grids and results: Eclipse/OPM Flow binary output (
*.GRID,*.EGRIDwith*.INIT,*.UNRST,*.XNNN), Eclipse input (*.GRDECL), ROFF (*.roff,*.roffasc) - Summary data: Eclipse/OPM Flow summary (
*.SMSPEC,*.ESMRY), observed data (*.RSM,*.txt,*.csv), Reveal and StimPlan summary (*.csv) - Well paths:
*.dev,*.asc,*.ascii,*.rmswell,*.w,*.json - Well logs: LAS (
*.las), CSV - Completions: Perforation intervals (
*.ev), valve templates, StimPlan and thermal fracture templates (*.xml,*.csv) - Surfaces: IRAP (
*.irap,*.gri), GOCAD TSurf (*.ts), VTK (*.vtu,*.pvd), point sets (*.ptl,*.xyz,*.dat) - Geomechanics: Abaqus (
*.odb,*.inp), VTK (*.pvd) - Seismic: ZGY (
*.zgy), OpenVDS (*.vds), SEG-Y (*.sgy,*.segy) - Other: Formation names (
*.lyr), polygons (*.pol,*.csv,*.dat), VFP tables (*.vfp,*.ecl), well measurements, pressure-depth data
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
- macOS (Apple Silicon and Intel)
Documentation
Development
Source Code
git clone https://github.com/OPM/ResInsight.git
Minimum Requirements
- gcc 13
- clang 19
- AppleClang 17 (Xcode 16)
- CMake 3.26
- 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! See CONTRIBUTING.md for the issue policy and pull request guidelines.
- Use the
devbranch for contributions and pull requests - Releases are defined by tags
- 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%