Commit Graph
20113 Commits
Author SHA1 Message Date
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
Magne Sjaastad d83a492b14 Remove New Generic View from well path collection context menu 2026-10-20 13:50:22 +02:00
Magne Sjaastad 260ffddd10 #14991: Remove Import toolbar and custom ensemble import toolbar button 2026-10-20 13:38:08 +02:00
Magne Sjaastad fd0ec10d6b #13889: Import zone colors from stratigraphy.json and zones from yaml
Import zone colors from an FMU stratigraphy.json file located next to the
formation files, and import formation zones from a yaml file.

- Add RifFormationNamesFileParser and move the layer zone table, yaml and
  stratigraphy.json parsers there from RifFormationNamesReader.
- Return std::expected from convertStringToColor.
- Prefer zonation_ecl_map yaml when several yaml files are present, and ignore
  other yaml files.
- Document the FMU location of the formation files.
- Add unit tests and test data for fmu, malformed and missing-color inputs.

Issues: #13889, #13888
2026-10-20 13:36:02 +02:00
Magne Sjaastad c04edc9d39 #14963: Order COMPDAT connections mainbore-first, then laterals
Completions could interleave mainbore and lateral connections, since the
final sort ordered by well name, completion type and measured depth, and
each lateral has its own independent MD scale. Connections for a well's
mainbore should all come before connections for its side steps.

Added RicScheduleDataGenerator::sortCompletionsMainBoreFirst(), which
groups completions by owning well path (via
RigCompletionData::sourcePdmObject()) and emits them in the traversal
order of RimWellPath::allWellPathLaterals(), mainbore first. Sibling
laterals are ordered by tie-in measured depth, as allWellPathLaterals()
itself is not deterministic. The sort is applied in
completionDataForWellPaths() so schedule export, COMPDAT/COMPLUMP export
and the gRPC/Python query all get the same ordering.
2026-10-20 13:06:58 +02:00
Magne Sjaastad 6e8e658f6d #14980: Remove global max segment length from segment collection
The global max segment length no longer exists, so segment subdivision is defined only by the segment intervals.
2026-10-19 21:13:13 +02:00
Magne Sjaastad 81bcc2657d #14962: Update MSW segments when segment intervals change
Segment interval edits, creation and deletion did not trigger the automatic MSW segment update, so the segment visualization along the well path was stale.
2026-10-19 20:00:04 +02:00
Magne Sjaastad d8dc1c051f Fix crash in Camera::computeFitViewEyePosition with zero view direction
Zoom All could pass a zero view direction (eye equal to view reference
point). The up vector then also became zero, giving a plane with a zero
normal and an assert in Plane::distanceToOrigin. Fall back to the Y axis
when the direction is zero or undefined. Follow-up to the parallel
dir/up fix in #14849.

Call stack:
[5] cvf::AssertHandlerConsole::handleAssert(char const*, int, char const*, char const*) at cvfAssert.cpp:125
[6] cvf::Plane::distanceToOrigin() const at cvfPlane.cpp:313
[7] cvf::Camera::computeFitViewEyePosition(cvf::BoundingBox const&, cvf::Vector3<double> const&, cvf::Vector3<double> const&, double, double, double) at cvfCamera.cpp:361
[8] caf::Viewer::zoomAll() at cafViewer.cpp:992
[9] caf::CmdFeature::actionTriggered(bool) at cafCmdFeature.cpp:176
2026-10-19 19:58:37 +02:00
Magne Sjaastad 72df8a69f5 Fix crash when width data is missing in ensemble fracture statistics
Conductivity and width grids were built as separate lists; a missing width
grid shortened one list and widthGrids[i] went out of range. Build the grids
per definition so they stay paired.

Crash stack (signature 642357244e71):
[3] cvf::cref<RigFractureGrid>::cref(cvf::cref<RigFractureGrid> const&) at cvfObject.inl:410
[4] RigEnsembleFractureStatisticsCalculator::calculateProperty(...) at RigEnsembleFractureStatisticsCalculator.cpp:156
[5] RimStimPlanFractureTemplate::generatePropertiesTable() const at RimStimPlanFractureTemplate.cpp:791
[6] RimStimPlanFractureTemplate::loadDataAndUpdate() at RimStimPlanFractureTemplate.cpp:221
[7] RicMeshFractureTemplateHelper<RimStimPlanFractureTemplate>::createNewTemplatesFromFiles(...) at RicMeshFractureTemplateHelper.inl:149
[8] RicMeshFractureTemplateHelper<RimStimPlanFractureTemplate>::createNewTemplates(...) at RicMeshFractureTemplateHelper.inl:89
[9] RicNewStimPlanFractureTemplateFeature::createNewTemplates() at RicNewStimPlanFractureTemplateFeature.cpp:58
[10] RicNewStimPlanFractureTemplateFeature::onActionTriggered(bool) at RicNewStimPlanFractureTemplateFeature.cpp:78
2026-10-19 19:58:37 +02:00
Magne Sjaastad c7473c2549 #12925: Add Curve Appearance dock window 2026-10-19 15:55:25 +02:00
Magne Sjaastad 625d7e684e #12925: Apply global curve appearance to summary plots and ensemble curve sets 2026-10-19 15:55:25 +02:00
Magne Sjaastad e21da59dbb #12925: Add global curve style settings and per-item rules 2026-10-19 15:55:25 +02:00
Magne Sjaastad 635c49bb3b #12925: Improve caf editors, label links and nested settings write 2026-10-19 15:55:25 +02:00
Magne Sjaastad 9229e48191 #14964: Use correct depth unit when creating RFT plots
Read the summary unit system from SMSPEC INTEHEAD, and fall back to vector
units for ESMRY files without SMSPEC. The unit system is read on first
request to keep summary import fast. Ensembles use the same realization as
for addresses. New RFT plots get the depth unit from their data sources.
2026-10-19 14:15:55 +02:00