Commit Graph
701 Commits
Author SHA1 Message Date
Magne Sjaastad 278248b71d #15098: Add headless mode with software OpenGL rendering 2026-11-03 15:23:31 +01:00
Magne Sjaastad 0d862856ff Guard dock splitters against deletion before delayed rebalance
rebalanceDockSplitters captured raw CDockSplitter pointers in a 10 ms
QTimer::singleShot lambda. The docking layout can delete splitters
(e.g. when dock areas are removed while tiling) before the timer fires,
so the lambda dereferenced a dangling pointer. Capture QPointer guards
and skip splitters that have been destroyed.

Crash signature fe96dd39756a:
  operator() at ApplicationLibCode/UserInterface/RiuMainWindowBase.cpp:79
  RiaGuiApplication::notify(QObject*, QEvent*) at RiaGuiApplication.cpp:1879
2026-11-02 09:37:52 +01:00
JJ 7579569578 Batch Scheduler support update (#15077)
* Add batch job monitoring service, to be shared between monitor view and running jobs to minimize cluster polling traffic
* Add support for monitoring job status using batch monitor service
2026-10-30 19:08:35 +01:00
Kristian Bendiksen 8baad6f878 Workflow UI: Support collect flattening
Allow list and dict outputs, including mapped task outputs, to be
collected into list inputs, and dicts to be merged into dict inputs,
matching taskmaestro's collect flattening. Label flattened members in
the graph and document the rules.
2026-10-30 16:17:03 +01:00
Kristian Bendiksen bb0acbed56 Workflow UI: Support conditional branches
Support taskmaestro conditional branches in the workflow editor:
- Read and write `when` guards and `first_of` alternatives in workflow definitions
- Validate guards, switch branch coverage and alternative types
- Draw switch tasks as diamonds, guards as control edges and skipped tasks greyed out
- Edit guards with Run When..., add alternatives when dropping on a connected input
- Report skipped tasks from the run helper
2026-10-30 16:17:03 +01:00
Magne Sjaastad 93b85f9e52 #15078: Add I/J/K connection labels to well allocation plot
Add option to label connections by connection number, cell I/J/K, or both, and an option to show a tick label for every connection. Ticks on the connection number axis are placed at integer values only.
2026-10-30 15:45:41 +01:00
Magne Sjaastad 67427bb559 Show flow diagnostics plots in plot window after project load
Flow plots derive from RimViewWindow, not RimPlotWindow, and were missing from RiuPlotMainWindow::viewWindows(). Applying the default dock layout on project open therefore did not re-add their dock widgets. 3D views docked in the plot window are now listed by the plot main window only, and are still activated as the active 3D view so the 3D main window toolbars (e.g. time step animation) are refreshed.
2026-10-29 15:40:26 +01:00
Magne Sjaastad d8a63a5468 Hide Curve Appearance UI behind experimental feature flag 2026-10-28 18:05:11 +01:00
Magne Sjaastad 26dd9cbb33 #15066: Add Polygon Intersection and remove Polyline Intersection
Polygon Intersection creates an open project polygon named Polyline, attaches a polygon intersection to it and activates 3D editing of the polygon. Available from the 3D view context menu and the context menu of Intersections.
2026-10-28 14:20:05 +01:00
Magne Sjaastad 4e3a539e4c #15050: Split multi plot common legend into color and symbol legends
Show the color and symbol legends as two widgets below the page title, also when exporting the page. Falls back to the merged legend otherwise.
2026-10-28 14:07:00 +01:00
Magne Sjaastad ef4d1d8081 #15050: Add color and symbol legend data for summary curves
When the curve color is given by one summary dimension (case, vector or object such as well, group or region) and the curve symbol by another, create one color legend and one symbol legend instead of one entry per color/symbol combination.
2026-10-28 14:07:00 +01:00
Magne Sjaastad cf0d2426c6 #15050: Extract curve legend icon helper and fix oversized legend symbols
Pin the icon bounding rect to the full icon size, so symbols drawn smaller than the icon are not rescaled to fill the icon slot.
2026-10-28 14:07:00 +01:00
Magne Sjaastad d58212ec32 #15054: Plot ensemble history vectors from first realization only
History vectors are identical in all realizations. Plot only the first realization in the ensemble curve set, skip statistics, use a configurable line thickness, and keep the curve on top and non-selectable.
2026-10-27 14:38:59 +01:00
Magne SjaastadandClaude Opus 5.5 648c20ca68 #15033 Telemetry: Add graphics environment to events
Most Linux crash reports are aborts inside the GL driver during a widget
repaint, and the reports carry no information about the driver or display
setup. Attach GL vendor/renderer/version, Qt platform, display server and
remote display server (e.g. HP RGS) to crash and regular events, and report
the OpenGL driver once per session in app.opengl_initialized.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 06:48:44 +01: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
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
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 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 7ed51e1fd5 #14891: Add option to use a common legend across summary sub plots 2026-10-22 13:39:05 +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
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 260ffddd10 #14991: Remove Import toolbar and custom ensemble import toolbar button 2026-10-20 13:38:08 +02:00
Magne Sjaastad c7473c2549 #12925: Add Curve Appearance dock window 2026-10-19 15:55:25 +02:00
Magne Sjaastad 43a4378cee ResInsight: Migrate commands, UI and application code to attribute map 2026-10-17 13:23:22 +02:00
Magne Sjaastad 1d7d0eb763 Show RFT correlation zone bars on both sides and make them wider
The selected-formation bars in the RFT track plots are now drawn on both edges and are 50% wider.
2026-10-15 15:24:47 +02:00
Magne Sjaastad a374d6f693 #11172: Support stacked overlay frames in all four plot corners 2026-10-13 12:44:00 +02:00
Magne Sjaastad 50e4b67100 Guard linked view result text against missing eclipse case
RiuResultTextBuilder::resultTextFromLinkedViews() calls isGridSizeEqualTo() on the picked view's case without a null check.

Return early when the view has no case.

Call stack:
[3] RimEclipseCase::eclipseCaseData() const at ResInsight/ApplicationLibCode/ProjectDataModel/RimEclipseCase.cpp:202
[4] RimEclipseCase::mainGrid() const at ResInsight/ApplicationLibCode/ProjectDataModel/RimEclipseCase.cpp:272
[5] RimEclipseCase::isGridSizeEqualTo(RimEclipseCase const*) const at ResInsight/ApplicationLibCode/ProjectDataModel/RimEclipseCase.cpp:285
[6] RiuResultTextBuilder::resultTextFromLinkedViews() const at ResInsight/ApplicationLibCode/UserInterface/RiuResultTextBuilder.cpp:826
[7] RiuResultTextBuilder::gridResultDetails() at ResInsight/ApplicationLibCode/UserInterface/RiuResultTextBuilder.cpp:377
[9] RiuSelectionChangedHandler::updateResultInfo(RiuSelectionItem const*) const at ResInsight/ApplicationLibCode/UserInterface/RiuSelectionChangedHandler.cpp:389
[11] RiuCellAndNncPickEventHandler::handle3dPickEvent(Ric3dPickEvent const&) at ResInsight/ApplicationLibCode/UserInterface/RiuCellAndNncPickEventHandler.cpp:459
2026-10-12 19:00:45 +02:00
Magne Sjaastad c57864df51 #14889: RFT Ensemble: Additional UI fixes
* #14889: Do not change main window when importing well picks
* #14889: Fix clipped bottom of plots in dock windows
* #14889: Add Create RFT Correlation Report to Ensemble Correlation Plots menu
* #14889: Show imported observed FMU RFT data as table
* #14889: Use time step from source RFT plot in RFT correlation report
* #14889: Show observed data in RFT cross plot when no RFT samples are available
* #14889: Keep RFT plot zoom when toggling formation in RFT correlation report
* #14889: Do not change main window when importing formations
* #14889: Use general delete for observed data and improve FMU RFT data name
2026-10-12 18:50:57 +02:00
Magne Sjaastad fb566f112c #14903: Guard other selection item users against deleted result definition 2026-10-12 18:49:08 +02:00
Magne Sjaastad f0dc8c47f0 #14899: Hide main windows on close instead of deleting them
WA_DeleteOnClose left RiuMainWindow::instance() and RiuPlotMainWindow::instance() null after the user closed a window, so any unguarded use crashed. Keep both windows alive for the application lifetime and rebuild their views when a closed window is shown again.

Fixes #14899.
2026-10-12 17:23:10 +02:00
Kristian Bendiksen 3d8912ba6c #14794 Cell filter: Use original parent IJK for IJK range filters on nested hybrid grids
For nested hybrid grids, IJK range filters (I/J/K slices and IJK filters)
now refer exclusively to the original (coarse) grid IJK. Nested-grid local
IJK values are no longer offered, and every cell, including cells in all
refinement levels, is mapped to the original IJK of its top-most parent.

- Add RigNestedHybridGridLayout describing how original cells are embedded
  in the flat grid, shared by the LGR reconstruction and the IJK mapping
- RigMainGrid: store the layout and compute the original IJK of any cell on
  demand by following the parent cell chain, without per-cell storage
- Range filter UI: slider limits, clamping, defaults and active cell range
  use the original grid dimensions; grid selection is hidden
- Evaluate range filters on all grids using the original IJK in the 3D view,
  combined filters and data filters
- 3D view context menu slices use the original IJK of the picked cell
- Add unit tests for the layout, the IJK mapping against OLDIJK, and slice
  filtering across refinement levels
2026-10-12 15:12:48 +02:00
Magne Sjaastad 277322cbcb #14884 Reparent hidden field labels when rebuilding form layout
A hidden label is never added to a layout, so it stayed parented to the
group box it was created in. When the field moved directly to another
group, the old group box was deleted together with the label, and the
next update hit a null label in PdmUiCheckBoxEditor.

Add GroupVisibilityByEnum to cafTestApplication to reproduce the crash.
2026-10-09 13:31:39 +02:00
Magne Sjaastad 5812826db6 #14880: RFT correlation plot formation workflow
* Add Add Well Picks button to well log formation settings
* Expose formation zone colors and shading alpha from RFT track
* Average observed pressures per formation with full min/max range
* Show formation-colored observed pressure and depth filter in RFT correlation plots
* Default new RFT correlation plots to formation filter and ensemble parameter coloring
* Move Qwt code out of RFT correlation Rim classes
* Align RFT correlation depth filter bars and click zones with displayed track formations
2026-10-08 17:32:23 +02:00
Kristian Bendiksen f8b20a3f44 Add missing function headers in cpp files 2026-10-05 19:56:36 +02:00
Kristian Bendiksen d53419bd5c Remove obsolete SOURCE_GROUP_HEADER_FILES everywhere. 2026-10-05 19:56:36 +02:00
Kristian Bendiksen 65942d455d Workflows: Read workflow schemas with the taskmaestro CLI
Replace the rips.taskmaestro_helper introspect subcommand with
`python -m taskmaestro workflow describe --json`. RimWorkflowDescribeTools
converts the describe output (JSON schemas, depends_on, config_values)
into the workflow graph used by the Workflow UI. This also adds support
for collect dependencies and maps rips.Reservoir to EclipseCase pickers.
2026-10-05 19:56:36 +02:00
Kristian Bendiksen d63bde00e4 #14789 Workflow: Visualize taskmaestro DAG in native Qt view 2026-10-05 19:56:36 +02:00
Kristian Bendiksen 3a7b8f6be8 Workflows: Add UI for taskmaestro workflows
Discover taskmaestro workflows under ~/.taskmaestro/workflows/ and surface
them as a "Workflows" collection in the project tree alongside Scripts.
Each workflow's task input schema is auto-generated by introspecting the
Pydantic models via a Python helper (rips.taskmaestro_helper) and rendered
as PDM field bindings - scalars for str/int/float/bool, and PdmPtrField
pickers for fields typed as rips.Case / rips.WellPath / rips.View.

The Run button on a RimWorkflow writes input.yaml from current bindings
(rips object references serialized as __resinsight_ref__ maps), spawns
the helper's run subcommand, and streams output to a modeless log dialog.
The helper resolves __resinsight_ref__ markers back to live rips objects
via the running ResInsight's gRPC server before driving taskmaestro.
2026-10-05 19:56:36 +02:00
Magne Sjaastad 51afde28f5 Fix crash when axis mapping is pruned before plot widget axis setup 2026-10-05 19:56:10 +02:00
Magne Sjaastad c6664a3361 #14797 Add command to compute contour map peaks
Available from the contour map context menu for Eclipse, GeoMech and ensemble statistics contour maps.
2026-09-30 16:26:04 +02:00
Magne Sjaastad ccdde6596d #13807 Add 3D viewer background context menu with Link View, Update Bounding Box, Zoom All and default camera position 2026-09-28 18:35:28 +02:00
Magne Sjaastad 64b53b0612 #14710 Show active data filter as overlay text in contour map view
Refresh the label when the filter selection changes and repaint immediately, as this happens outside a display model rebuild.
2026-09-28 10:30:12 +02:00
Magne Sjaastad cdfc10b833 Count qwt axes when removing a plot axis 2026-09-28 09:18:41 +02:00
Kristian Bendiksen beadb306c2 #14640 Simulator Events: Use one experimental feature flag
The import and schedule export of simulator events are two halves of the same
workflow, so they share the "simulator-events" flag instead of having one
keyword each. Users who enabled "simulator-events-import" have to tick the new
entry once in Preferences -> System -> Experimental Features.
2026-09-25 14:35:45 +02:00
Kristian Bendiksen 9dda0faa3c #14640 Simulator Events: Add menu to export schedule based on events
The schedule generated from the well event timeline can now be written to
file from the GUI, without scripting.

- RicScheduleDataGenerator::generateScheduleForTimeline() collects the dates
  and wells from the timeline (honoring the last applied timestamp, never
  filtering insert-date events). The Python generate_schedule() method now
  calls it, so GUI and Python export the same schedule.
- New RicExportScheduleFeature "Export Schedule from Events" asks only for the
  file name and uses fixed defaults: the Eclipse case of the active view (else
  the first case of the project), MSW keywords for every well with events, the
  first date as a comment and aligned columns.
- Available from the context menu of the well event timeline and the well path
  collection, and from File -> Export, gated by the new experimental feature
  "simulator-events-export".
2026-09-25 14:35:45 +02:00
Magne Sjaastad 3437cf9b94 #14778 Fix crashes from unguarded pointer and index accesses
* Skip deleted plot widgets in RiuMultiPlotBook::visiblePlotWidgets
* Guard missing calculation in detectCyclicCalculation
* Guard invalid node index in RigFemPart node lookups
* Guard null well path in RimWellLogExtractionCurve::extractGeomData
* Guard unopened case in RimGridCalculation::removeDependentObjects
* Guard empty subset in createLateralAtMeasuredDepth
2026-09-22 08:23:00 +02:00
JJ 53ec9dfe4d Modernize preference dialog to better handle many tabs (#14776)
* Modernize preference dialog to better handle many tabs
2026-09-18 11:56:17 +02:00