Commit Graph
20126 Commits
Author SHA1 Message Date
Magne Sjaastad 97bbf65a57 #15021: Fix field unit errors in fracture reports 2026-10-24 20:30:43 +02:00
Magne Sjaastad e128e6dd3e #15021: Fix D-factor unit mismatch for field units
Use well radius and ellipse width in feet for fractures and perforations when computing the D-factor, as the field alpha expects feet.
2026-10-24 20:30:43 +02:00
Magne Sjaastad ce9ae46a91 #15021: Move completion data export helpers to RicCompletionDataExportTools
Move the COMPDAT/COMPLUMP export and combine helpers, including completionNumberForCell, out of RicWellPathExportCompletionDataFeatureImpl. Remove an unreachable HUGE_VAL branch, fix the combined D-factor divisor and a zero-transmissibility division, and drop unused includes.
2026-10-24 20:30:43 +02:00
Magne Sjaastad 44a865af94 #14893: Show recently used folders when selecting a folder
On Windows, use the Qt folder dialog and show the 10 most recently selected folders in the Look in dropdown. The native Windows folder dialog does not support a folder history. Linux behavior is unchanged.
2026-10-24 20:23:32 +02:00
Kristian Bendiksen 917e8552df VTK GeoMech: read element nodal results without changing reader state
Look up POR and the tensor components with find(), and POR only for S.
Reading E on a model without node pressure no longer made S and the
derived results available. Use per-element node offsets instead of
assuming eight nodes per element, clear the element nodes when the parts
are read again, require the complete stress tensor for derived results,
and document the Biot coefficient of 1.
2026-10-24 13:59:38 +02:00
Kristian Bendiksen cdf4e0fa64 VTK: read only scalar point data arrays as node properties
Vector arrays such as "disp" are read by readDisplacements and were
parsed again only to be discarded by readNodalData.
2026-10-24 13:59:38 +02:00
Kristian Bendiksen 5fa48d6e60 VTK GeoMech: handle partial stress/strain tensor rows
List only the S_VTK/E_VTK components that have data, and require the
complete tensor for the derived S/E results. Guard against too few
values in the tensor rows. Add tests for strain and partial data.
2026-10-24 13:59:38 +02:00
hnilandClaude Opus 5.5 d7b3e60520 VTK GeoMech: pore pressure from node data, derived results
Read the VTK point data, not only "disp" (now found by name, not
position). "pressure" becomes the nodal pore pressure POR, other scalar
point arrays keep their name. OPM Flow writes them with
--vtk-write-geo-mech-nodal, recovered from its cell values.

Stress and strain are cell values in the simulator, so S and E at
element-nodal (and integration-point) position give every element corner
its cell's value. S is effective stress, tension positive, while OPM
writes total stress, compression positive: S = POR * I - stress at each
corner, so ST = -S + POR returns the simulator's stress exactly.

With S present, populateDerivedResultNames() returns true, so SE, ST,
principal stresses, SFI, DSM, FOS, NE etc. are available.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:59:38 +02:00
Magne Sjaastad 6d8ee8d685 Guard missing eclipse case data in viewer context menu
Avoid null dereference of eclipseCase()/eclipseCaseData()/mainGrid() when building the IJK intersection context menu entries.

Call stack:
RimEclipseCase::eclipseCaseData() at RimEclipseCase.cpp:197
RiuViewerCommands::displayContextMenu(QMouseEvent*) at RiuViewerCommands.cpp:443
2026-10-24 13:46:20 +02:00
Magne Sjaastad cb60a8b9ae Avoid duplicate plots when appending wells and keep legend order same as project tree
Skip appending plots for wells, groups and networks already present in the multi plot. Reattach curves in project tree order only when the attached order differs.
2026-10-24 13:14:41 +02:00
Magne Sjaastad 186c4795f9 Show RFT tornado plot labels at left side of the plot area 2026-10-24 13:14:41 +02:00
Magne Sjaastad 96370a6077 Set rows_per_page in summary multi plot Python examples 2026-10-24 13:14:41 +02:00
Magne Sjaastad adf475158f Let user open a restored project version after restoring previous versions
List restored versions in a selection dialog and open the chosen one. extractVersionsToFolder now returns std::expected with the restored file paths.
2026-10-24 13:14:41 +02:00
Stefan CrooijmansandClaude Opus 5.5 502eaf43bd #12674: Compute the TVDMSL unit string as a separate step
Review: one AddLog call for TVDMSL instead of one per unit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 11:26:22 +02:00
Stefan CrooijmansandClaude Fable 5.1 ba74293e21 #12674: Export TVDMSL in the depth unit of the curve
TVDMSL was always written with unit M and the comment "True vertical
depth in meters", also for a FIELD case whose values are in feet.
Write it with the depth unit of the curve, as DEPTH and TVDRKB already
are.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-24 11:26:22 +02:00
hnilandClaude Opus 5.5 03eff53507 VTK GeoMech: read stress/strain as the rows of a 3x3 tensor
OPM Flow writes each symmetric tensor as three cell arrays
"stress[0]", "stress[1]", "stress[2]", the rows (Si1, Si2, Si3). The
reader took "stress[0]" as (S11, S22, S33) and "stress[1]" as
(S12, S13, S23), so S22, S33 and S13 held the wrong components and
"stress[2]" was ignored. Read the upper triangle from the three rows.

Coordinates are imported with z negated; S13/S23 and E13/E23 now
change sign with it, as U3 already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:27:23 +02:00
Kristian Bendiksen e6dc62a160 Workflows: Add interactive editor for taskmaestro workflows
Build, copy and edit taskmaestro workflows in ResInsight and save them as
standard workflow.yaml + input.yaml.

- Python helper: catalog, load, save and export-registered subcommands,
  and run --registered for installed workflows
- C++ definition model with pure edit operations, port type checks,
  config field derivation, static validation and undo/redo
- Installed folder listing registered workflows (read-only, runnable,
  can be duplicated)
- Graph editor dock with task palette, drag-to-connect, context menus,
  automatic layout and debounced live validation
- New/Duplicate/Save/Save As/Rescan commands; unsaved edits run from a
  temporary folder and prompt before being discarded
- Update the design document and the user README
2026-10-23 20:23:54 +02:00
Magne Sjaastad 1342e0987a Update GitHub workflows to Python 3.13 2026-10-23 16:26:23 +02:00
Kristian Bendiksen 43b63ac4bf #14912 Reject enum names that conflict with module symbols 2026-10-23 15:21:23 +02:00
Kristian Bendiksen 5b229cdf32 #14912 Reject duplicate generated Python enum names 2026-10-23 15:21:23 +02:00
jonjenssen a3cd973da0 Fix: LSF requires launch script to be user executable 2026-10-23 12:53:50 +02:00
Kristian Bendiksen 9feace91ee Split NNC, aquifer and connection code out of RigSimulationInputTool (#15001)
Move EDITNNC, AQU* and COMPDAT/COMPSEGS processing into RigSimulationInput{Nnc,Aquifer,Connection}Tools, and move their tests into matching test files.
2026-10-23 12:32:17 +02:00
Magne Sjaastad 7dfa813c06 #12674: Assign well path unit system from loaded cases
Move unit system assignment for new well paths into RimWellPathCollection::assignUnitSystem, used by addWellPath and onChildAdded so Python-created well paths get the case unit system. Ignore unloaded and unknown-unit cases in RimProject::commonUnitSystemForAllCases.

Pasted and multiple-lateral well paths are copies that already carry unit specific settings, so skip unit assignment for them. Note: RimProject::commonUnitSystemForAllCases now ignores unloaded and unknown-unit cases and returns UNKNOWN only for mixed units, which affects its other callers.
2026-10-23 12:01:59 +02:00
Magne Sjaastad 915e951a64 #13684: Add Plot 1-SGAS option to relative permeability plot
Adds a "Plot 1-SGAS" checkbox to the relative permeability plot panel.
When enabled (only available for two-phase gas-water systems), gas
curves (KRG, KROG, PCOG/PCGW) are plotted against (1 - SGAS) instead
of SGAS, aligning the gas saturation axis with the water saturation
axis, matching normal relperm/capillary pressure plotting practice.

Share the saturation transform between plotting and Show Plot Data export via a new applyOneMinusSgasTransform() helper, so the exported ascii data matches the rendered curves when the Plot 1-SGAS option is enabled.
2026-10-23 09:36:19 +02:00
Magne Sjaastad 7222d6360e Scripting: read GeoMech time steps, result names and values 2026-10-23 09:28:19 +02:00
Magne Sjaastad 9613251e9a Hide statically linked OpenSSL symbols from the dynamic symbol table
Arrow/Parquet/Thrift (vcpkg) link OpenSSL statically, regardless of gRPC. On Linux these symbols ended up in the dynamic symbol table of the executable and interposed the system OpenSSL loaded by the Qt TLS plugin (and by libssh2/libldap via libcurl). Mixing two OpenSSL versions caused a crash in the TLS handshake, e.g. when pressing Authenticate for Sumo.
2026-10-23 09:25:45 +02:00
JJ 1581e06f2b Export ensemble parameters to file (#15012)
Export ensemble parameters to a comma separated text file provided by user
2026-10-23 07:17:48 +02:00
Magne Sjaastad 095a5a52b5 Treat pytest warnings as errors
Wrap calls to deprecated rips API in pytest.warns so the suite runs warning-free.
2026-10-22 15:38:00 +02:00
Jon Jenssen 281214124a Remove obsolete code in preferences from failed merge. 2026-10-22 15:18:52 +02:00
Magne Sjaastad 7ed51e1fd5 #14891: Add option to use a common legend across summary sub plots 2026-10-22 13:39:05 +02:00
Magne Sjaastad 6a15c84463 #13485: Export unique top-level well paths for completions and MSW 2026-10-22 13:34:49 +02:00
Magne Sjaastad 7b580694ed #13430: Exclude zero values from ensemble statistics for derived vectors
Add m_includeZeroValues option to RimEnsembleStatistics (default on, preserving existing behavior). When disabled, exact zero values (e.g. from shut-in wells/groups) are excluded from the mean, P10/P50/P90 and custom percentile calculations in RimEnsembleStatisticsCase::calculate(). This is useful for derived vectors such as WCT, GOR and PI, where zeros caused by a shut well/group should not skew the statistical curves.

Exact equality (not an epsilon) is used, since shut-in values are reported as exact 0.0 by the simulator and non-accumulated vectors use STEP_RIGHT interpolation, which does not introduce floating-point noise.
2026-10-22 13:34:34 +02:00
Magne Sjaastad 1d331f6cc1 Use QString::chop to support Qt versions older than 6.5 2026-10-22 08:16:46 +02:00
magnesj c41194e7cb Fixes by clang-tidy 2026-10-22 08:04:32 +02:00
Magne Sjaastad 54cfb5efa3 Remove standalone extract-projectfile-versions tool, superseded by GUI integration 2026-10-21 22:23:38 +02:00
Magne Sjaastad 56ff80c8e2 #13360: Integrate project version restore tool into GUI
Add a GUI feature for restoring previous versions of a project file from
its backup database, replacing the need for the external standalone tool.

- RiaProjectBackupTools: add extractVersionsToFolder() to read all stored
  revisions from a project's .rspdb backup database and write each one to
  a timestamped .rsp file in a destination folder.
- RicRestoreProjectVersionsUi: dialog for selecting the project file and
  export folder, defaulting to the currently open project. Adds a Recent
  Project Files dropdown (backed by RiuRecentFileActionProvider) that
  quickly populates the project file and export folder fields.
- RicRestoreProjectVersionsFeature: new command feature wired into the
  File menu as 'Restore Previous Project Versions...', using the
  OpenFolder icon and placed after a separator below Save Project / Save
  Project As.
- RiuRecentFileActionProvider: add recentProjectFiles() to expose the
  list of recently used project files.
- Added '...' suffix to Save Project As, consistent with other
  dialog-launching actions.
2026-10-21 22:23:38 +02:00
JJ 6c39729e77 Support submitting opm flow jobs to Slurm or LSF (#14943)
Add preferences for HPC/Batch scheduler
Add Slurm and LSF support
Add batch job monitor
Support launcher specific user settings
Use internal timer to refresh job state
Add some more options to batch monitor
Improve naming
Add tests for job lists
Change WSL handling for processes.
2026-10-21 18:14:13 +02:00
magnesj 533a1e7018 Bump to version 2026.09.2-dev.04 2026-10-21 15:07:55 +02:00
Kristian Bendiksen 409f175467 COMPLUMP: Choose completion number by largest overlap in cell
When several perforation intervals cut the same cell, the completion number
was taken from the first contribution, which depended on the order events
were applied. Unrelated event changes (e.g. group tree members) could then
change COMPLUMP numbers on boundary cells.

Pick the number with the largest summed MD overlap in the cell, with ties
going to the lowest number. Also use stable_sort for same-date events so
they keep file order.
2026-10-21 14:43:07 +02:00
Kristian Bendiksen 66c2cd47d3 Sector export: Assign all refined sub-cells to segments in COMPSEGS
Only END_IJK denotes a cell range, DIRECTION alone is a single cell and the MD
interval is split. A defaulted start MD is zero. Without an end MD the record is
copied to each sub-cell so all refined COMPDAT connections are attached to a segment.
2026-10-21 14:42:53 +02:00
Kristian Bendiksen 2a8cd7856b Sector export: Split COMPSEGS MD interval in the direction the well travels through the refined cell 2026-10-21 14:42:53 +02:00
Kristian Bendiksen b84eea5cb1 Sector export: Correct connection factors for refinement perpendicular to wells
Lateral refinement reduces the Peaceman pressure equivalent radius r0 of the
completed center sub-cell. Explicit CF is scaled by
(ln(r0_old/rw)+S)/(ln(r0_new/rw)+S), and an explicit PR item is updated to r0_new.
r0_old is taken from PR, or computed from the original cell size and permeability.
2026-10-21 14:42:53 +02:00
Kristian Bendiksen 9a01e09ecd Sector export: Complete all refined sub-cells along well connections
COMPDAT and COMPSEGS cells were mapped to the center refined sub-cell only,
so with K refinement only every other refined layer was completed, and the
original connection factor was copied unchanged.

Along the connection penetration direction (COMPDAT DIR) all sub-cells are
now completed, with explicit CF and KH scaled by the sub-cell length
fraction. COMPSEGS records are split the same way with the MD interval
divided between the sub-cells. Perpendicular directions still use the
center sub-cell.
2026-10-21 14:42:53 +02:00
Kristian Bendiksen 1960cabc15 Fix unit test aggregate initialization warnings 2026-10-21 14:42:36 +02:00
Kristian Bendiksen 1762dd8099 Enable warnings as errors for application unit tests 2026-10-21 14:42:36 +02:00
Magne Sjaastad bc71762be2 Rebuild buildcache from scratch in nightly CI runs 2026-10-21 07:24:28 +02:00
Magne Sjaastad 848c2394bb Scripting: geomechanical cell result (replaces #14952)
Make RimGeoMechResultDefinition (position, field and component) and the view's cell result scriptable, as for grid views.
2026-10-21 06:49:14 +02:00
Magne Sjaastad 914cab9084 #13097: Expose Fixed Angle as scriptable field in Fishbones
Make RimFishbones::m_fixedInstallationRotationAngle scriptable so it
can be set from the Python API when using the Fixed Fishbones
orientation mode.
2026-10-21 06:46:35 +02:00
Jon Jenssen c545e63a55 Remove obsolete field 2026-10-20 19:02:32 +02:00
Jon Jenssen 5293dbe015 Add preference setting to select which dynamic result to show as default (if available) 2026-10-20 19:02:32 +02:00