Commit Graph
64 Commits
Author SHA1 Message Date
Magne Sjaastad 1da4a9e188 Dock window: add permanent detach, stop auto-docking embedded RFT plots
RimWellRftPlot: add detachFromDockPermanently(), which removes the plot from its dock
and discards the window controller for good (unlike removeWindowFromDock(), which must
leave the controller intact so the window can be re-docked later). RimWellRftPlot no
longer docks itself in its constructor, since it can also be embedded as a non-dockable
child of another plot. RicCreateRftPlotsFeature now explicitly calls dockAsPlotWindow()
for its stand-alone RFT plot to preserve existing behavior.

RimRftCorrelationReportPlot: use detachFromDockPermanently() instead of
removeWindowFromDock() for its embedded RimWellRftPlot, and re-apply that detachment in
initAfterRead(), since the PDM factory bypasses the constructor when restoring child
plots from a project file.
2026-10-06 08:15:59 +02:00
Magne Sjaastad 3023e6e335 #14450 Guard against missing data source in RFT plot
RimWellRftPlot::dataSource() returned a default constructed variant when no source was selected. The variant then held a null RimSummaryCase pointer, and RicCreateRftPlotsFeature dereferenced it. Add std::monostate as first alternative to represent no data source.
2026-08-05 09:20:35 +02:00
Jon Jenssen d2d7c6ac61 First non-MDI version. Still some missing links and features. 2026-06-17 13:55:32 +02:00
Magne Sjaastad 8eb225651b Remove obsolete libecl-based RifReaderEclipseRft, use RifReaderOpmRft only 2026-04-28 12:32:21 +02:00
Magne Sjaastad 387b19ef62 #12276 Add RFT correlation report plot with cross-plot and tornado plot
* Fix defensive guards and TVD interpolation

Guard against out-of-bounds IJK and invalid cells in RifReaderRftInterface.
Guard against null eclCase in RimDataSourceForRftPlt::address.
Guard against null plot widgets in RiuMultiPlotPage.
Fix interpolateMdFromTvd corrupting valid entries after infinity TVD values
by skipping infinity entries in the first pass and tracking only the last
two valid MD values for the startMD adjustment.

* Add RiuQwtCurveSelectorFilter for click-to-select realization in Qwt plots

New shared event filter class that installs on a QwtPlot canvas and calls a
user-supplied callback with the closest data point on each click.

Migrate the local CurveSelectorFilter in RimParameterResultCrossPlot to use
the new shared class. Add Z_HIGHLIGHTED_CURVE to ZIndex enum and replace all
raw z-order integers in RiuQwtPlotCurveDefines with named constants.

* Add RFT correlation report plot with cross-plot and tornado plot

New classes:
- RimRftCorrelationReportPlot: composite plot showing an RFT well log track
  alongside a parameter cross-plot and a tornado plot sub-plot.
- RimParameterRftCrossPlot: cross-plot of ensemble parameters vs RFT-derived
  measured depth values, with click-to-select realization support.
- RimRftTornadoPlot: tornado plot with correlation-sorted parameter list and
  click-to-select realization support.
- RicCreateRftCorrelationReportFeature: context menu command on RimWellRftPlot
  that creates a RimRftCorrelationReportPlot in the correlation plot collection.

Wire up in RimCorrelationPlotCollection and RimContextCommandBuilder.

* Add click-to-select and highlight selected realization in RFT plots

Install RiuQwtCurveSelectorFilter on RimWellRftPlot canvas to support
click-to-select realization. Highlight the selected realization using a
contrast color (orange-red) and increased line thickness. React to both
click-to-select in the plot and selection changes in the Data Sources panel.

Add Z_HIGHLIGHTED_CURVE z-order and replace raw z-order integers with
named constants in RimWellRftPlot.

Highlight selected realization with XCROSS symbol in RimParameterRftCrossPlot
via RimSummaryEnsembleTools::findSummaryCase.

* RimWellRftPlot: add Create RFT Correlation Report to canvas right-click menu

Override appendMenuItems in RimWellRftPlot to add RicCreateRftCorrelationReportFeature.
Call appendMenuItems from RiuMultiPlotPage::contextMenuEvent so any plot type
can contribute canvas menu items without modifying RiuMultiPlotPage.

* RicShowPlotDataFeature: support RimRftCorrelationReportPlot

Add RimRftCorrelationReportPlot to the isCommandEnabled check and expand
it into its cross-plot and tornado sub-plots in onActionTriggered, matching
the pattern used for RimCorrelationReportPlot.
2026-04-16 16:45:44 +02:00
Magne Sjaastad 185b8a1d26 #13771 RftPlot: Ensemble curve set selection and highlighting
- Legend items are now ordered to match the project tree order
- Selecting a curve set in the project tree highlights it in the plot
  and hides member curves of other curve sets (statistics unaffected)
- Clicking a legend item in the plot selects the curve set in the
  project tree
- Improve text layout in dialog when multiple file names are found
- Fix missing update of ensemble curve sets
2026-03-20 14:52:47 +01:00
magnesj 759b143c5e Fixes by codespell 2026-03-06 06:44:52 +01:00
Magne Sjaastad 93bd0b9c9d Refactor well log track settings into modular classes
* Refactor well log track settings into modular classes

Major refactoring of RimWellLogTrack to delegate property axis, formation, region annotation, and well path attribute settings to dedicated settings classes. Introduces RimWellLogPropertyAxisSettings, RimWellLogFormationSettings, RimWellLogRegionAnnotationSettings, and RimWellLogWellPathAttributeSettings, each encapsulating related fields, UI logic, and option handling. Old fields are retained for migration and backward compatibility. Updates enums and signatures for consistency.
2026-02-09 15:33:18 +01:00
Magne Sjaastad cfd634e206 Updates PDM UI label positioning
Updates the way UI label positions are set for PDM fields.
2026-01-08 21:44:58 +01:00
Magne Sjaastad 79a7e94c8b Make sure duplication of RFT plot works as expected 2025-08-01 21:57:42 +02:00
Magne Sjaastad 03e0cb3deb Marks plot as initialized after creation
Ensures that the plot is marked as fully initialized after all initial setup steps are completed.
2025-07-25 08:42:13 +02:00
Magne Sjaastad 15ce1f75aa #12604 Add appearance settings for ensemble curve sets
Introduces customizable appearance settings for curve sets in RFT plots, including color, line style, and symbols.
2025-07-24 09:54:02 +02:00
Magne Sjaastad 41c6035ca8 Refactors RFT plot source storage
Store data sources and time steps directly to project file. Previously, this information was derived from existing curves in the plot, an approach that is fragile.

Import of previous file format is still supported.
2025-07-21 16:46:54 +02:00
Magne Sjaastad 63fcc8a29f Regression Test: Make sure the grid is opened when reading time steps
No grid case curves was seen for  ProjectFilesSmallTests\TestCase_RFT_PLT\RegressionTest.rsp
2025-07-20 18:39:28 +02:00
Magne Sjaastad 118ecf941a Performance improvements ensemble curves
* Do not create ensemble in initAfterRead
* Check if filter is active before update
* Do not recompute statistics on every loadData
* Removes unnecessary resampling
* MSVC: Add support for dynamic deoptimalization
* Make sure RFT plots are initialized based on curves in project file
* Make sure the progress dialog is always on top
* Add more progress info when loading project file
* Make sure names in RFT plots are updated
2025-05-28 15:10:43 +02:00
Magne Sjaastad 01e0258b2a #12448 Recompute statistical curves in RFT plots on replace 2025-05-08 07:22:33 +02:00
Magne Sjaastad 3cd03c8e1c #12310 Summary plot and RFT plot adjustments
* Use vector name as axis object text, avoid identifier text
* Select the plot clicked at in the Project Tree
* Make sure RFT plots are updated when summary case and ensemble is changed
* Make sure all plots are updated for multiselect and toggle statistics
* Allow paste of plot on top level plot collection
* Allow multiple top level plots as destination for Append operations
2025-03-31 08:02:00 +02:00
Magne Sjaastad df091336e0 Move summary tools into separate folder 2024-10-22 07:28:43 +02:00
Kristian Bendiksen e9c46c5cec Rename RimSummaryCaseCollection to RimSummaryEnsemble. 2024-07-30 08:55:12 +02:00
Magne Sjaastad 16215585be Refactoring to prepare for renaming of RimSummaryCaseCollection
Move functions into RimSummaryEnsembleTools
Use enum class instead of plain enum
2024-06-24 15:33:38 +02:00
Kristian Bendiksen 10ad053c30 Osdu Well Log: make it possible to add Osdu well logs to plot. 2024-06-14 17:31:22 +02:00
Kristian Bendiksen c1aba471f2 Refactor: rename WellLogFileChannel to WellLogChannel. 2024-05-28 10:44:44 +02:00
Magne Sjaastad ce513be638 Remove all use of .uiCapability()->setUiTreeHidden( true ); 2024-02-05 10:15:36 +01:00
Kristian Bendiksen a8c719b289 #10663 WBS Plot: Import well log from CSV file.
Also compute SH_MK_MIN/EXP/MAX and FG_MK_MIN/EXP results.
2024-01-29 15:05:08 +01:00
Magne Sjaastad 6922ba22b0 Improve reload and replace of cases
* Move code to from features to helper classes
* Ask user if replace case should also happen for the associated grid or summary file
2024-01-25 10:41:57 +01:00
Magne Sjaastad 4f25fb4463 Create multiple RFT plots based on the selected RFT plot
Show a dialog with all available RFT wells, and let the user select from this list. Create a copy of the RFT plot, and replace well name in the copy.
2023-11-06 10:10:22 +01:00
Kristian Bendiksen 8df4dd42eb Refactor: rename RimWellLogFile to RimWellLogLasFile 2023-10-02 16:04:53 +02:00
Kristian Bendiksen 1899184a41 Janitor: Remove deprecated method. 2023-09-11 17:39:38 +02:00
Magne Sjaastad 7632064105 Hide statistics legend if ensemble curves are visible 2023-09-08 08:38:46 +02:00
Magne Sjaastad 7a782cec66 RFT ensemble refactoring
* Compute average MD for intersections with a cell
* Create extractor for simulation well
* Remove rftReader from RifDataSourceForRftPlt
* Add function compute measured depth for RFT cells based on well path geometry
* Move statistics reader to well ensemble curve set
* Make sure both TVD and MD are cached if possible
* Add selection of grid case to use for estimation of measured depth (MD)
Add "Grid Model For MD" where the user can select a grid model. This grid model is propagated to a hidden field in EnsembleCurveSet. The grid model is then applied to RifReaderEnsembleStatisticsRft owned by EnsembleCurveSet
2023-09-04 10:08:30 +02:00
Magne Sjaastad a71d6fc67d Fix visibility of single RFT curves 2023-08-31 13:54:59 +02:00
Magne Sjaastad ef2de3e5c6 Support well path geometry for summary RFT data
* Compare well path names when matching sim well names
* 10501 Make it possible to use well path geo when plotting summary RFT data
2023-08-15 13:37:23 +02:00
Kristian Bendiksen 5bf2c2a89d #10367 Janitor: Remove unneccessary 'this' pointers 2023-08-07 13:38:27 +02:00
Magne SjaastadandJørgen Herje 40080a99de 9978 Improve UI for long drop-down lists, use tree selection more
* Improve tree selection editor
- always call defineEditorAttributes
- use heightHint in editor attributes 
- use tree selection editor as default editor for std::vector

* Use tree selection editor instead of list selection editor
List selection editor must be used when editing std::vector<cvf::vec3d> and similar. Replace other use of list selection editor with tree selection editor.

* Set checked state based on text string for integer only models
For models with only integer values, use text string to define the items to be selected. The full list will always be visible, and the checked state will be updated when editing the filter text.

Example: "1, 5-7" will set items 1, 5, 6, 7 checked and all other items unchecked

* Minor fixes
- Set placeholder text after content is added (to ensure correct data type)
- Fix check of integers. `canConvert<int>()`returns true for both QString and int. Thus convert to string and then check for int conversion.

* Activate filtering when unchecking all items in list with only integers
- Reactivate filtering when uncheck of all items for a list with only integer values (to keep consistency between filter and list)
- Update function name for clarity

---------

Co-authored-by: Jørgen Herje <jorgen.herje@ceetronsolutions.com>
2023-05-22 15:44:37 +02:00
Magne Sjaastad 0c90f67dcc Change API for PdmObjectHandle and PdmFieldHandle
* Refactor interface to PdmObjectHandle and PdmFieldHandle
Return objects instead of passing in structures as parameters

* Add nodiscard to several functions
* Remove redundant this->
* Rename to ptrReferencedObjectsByType
2023-05-12 21:41:34 +02:00
Magne Sjaastad 952e766c2f Update clang-format.yml (#10068)
* Update to clang-format-15
Removed two custom .clang-format files in subfolders of AppFwk

* Fixes by clang-format
2023-04-13 07:05:53 +02:00
Magne Sjaastad 09c04cbcd0 Improve RFT reader performance
* #9963 Rft reader: Search for DATA file when required
WSEGLINK is used to establish the branch topology for MSW wells. Search and read WSEGLINK data when segment data is requested by the user. This can be a time consuming operation.
Avoid doing this search for standard RFT plots.

* Make sure that single summary curves are displayed correctly
* Make sure single summary curves are visible in the plot
2023-03-14 13:14:40 +01:00
Magne Sjaastad 527743a845 Adjustments for release
* Make sure text for multiple wells in same grid cell is displayed correctly
* Improve selection of result in Advanced Snapshot Export
* Restore the main window that was on top when project was saved
* Trim string to make sure '/' is exported with no space in front
* #9872 RFT-plot: Make colors stable for curves in RFT plots
* Set version to RC_02
2023-03-09 08:54:28 +01:00
Magne Sjaastad f8c5cf389f clang-format: Set column width to 140
* Set column width to 140
* Use c++20
* Remove redundant virtual
2023-02-26 10:48:40 +01:00
Magne Sjaastad 234719aea3 Improve RftPlt data source objects (#9769)
Move AppEnum init to RifDataSourceForRftPlt
Simplify constructors for RifDataSourceForRftPlt
Rename enum names in RifDataSourceForRftPlt::SourceType
Add missing pressureDepthData in RimDataSourceForRftPlt
2023-01-30 11:12:26 +01:00
Magne Sjaastad 62ce2b18e0 RFT improvements
* Avoid accessing nullptr
* remove unused function
* Allow RFT data from single summary case to be used in RFT plots
* #9736 Support horizontal plotting of LAS curves
2023-01-27 10:29:11 +01:00
Kristian Bendiksen 1eac9f8a1f #9620 Pressure/depth data: add user interface. 2023-01-19 09:00:05 +01:00
Magne Sjaastad abc9e82ff5 System: Enable and use c++20
Enable c++20 in top level cmake. Keep c++17 for GrpcInterface, as the protoc tool does not work with c++20.
Several code adjustments to fix compiler issues.
2023-01-19 08:33:02 +01:00
Magne Sjaastad 493531626f Rft segment plot adjustments
* #9371 RFT Curves: Add scaling factor
* Make sure isUsingAutoName is guarded by project file date
* Rearrange font and legend group in property editor
2022-10-19 15:13:15 +02:00
Magne Sjaastad 1d23e8f5c9 Show packer in RFT topology track
* Show packers in topology track
* Support optional display of property axis values
* Add legend item clickable option to RimPlotWindow
2022-10-13 13:03:55 +02:00
Magne Sjaastad e7a486c802 Improve curve naming for plot and use in RFT segment plots
* Improve plot naming for depth track plots
* Move template text replace to string tools
* More data available for object template text
* Set plot visible and define default object name template text
2022-10-12 12:41:08 +02:00
Kristian Bendiksen 921c90beea #9280 Fix missing horizontal error bars
* #9280 Fix missing horizontal error bars.
The x axis was not assigned properly for the error bars in the plot curve.
* Propagate error bar visibility state
2022-09-09 13:57:47 +02:00
Magne Sjaastad 506bfbd638 Remove control flag in setCollapsedByDefault
* Remove control flag in setCollapsedByDefault
* Set regions/annotations collapsed by default
2022-08-19 14:18:36 +02:00
Magne Sjaastad f102a8b249 Improve annotations to work in both vertical and horizontal plots (#9154)
* Move enums to RiaPlotDefines.h
* Add support for formation names shading in horizontal plots
* Refactor line property code
* modernize code
2022-08-05 13:14:58 +02:00
Magne Sjaastad 62cf62b9a2 Improve UI for RFT segment curves (#9061)
* Make sure all curve values are set correctly for plot orientation
* Make sure depth zoom is propagated to the Qwt plot
* Expand min/max value range to allow more space around curves
* Use int values to represent RFT segment branch number
2022-06-16 13:55:42 +02:00