Add a per-workflow Vertical Layout toggle to the workflow editor toolbar
and canvas context menu. In vertical mode ranks are stacked top to bottom,
task inputs sit on the top edge and outputs on the bottom edge, config
boxes are placed above their task and control edges run between the sides.
Double-click a nested workflow task (or use Open Nested Workflow) to show
the inner workflow read-only in a tab of its own. The inner workflow is
described by the new taskmaestro_helper describe-nested command, for YAML
workflow entries and installed workflows. Workflows with workflow entries
now load.
Collapse a task with the chevron in its title, a double-click on the title, or
the context menus. A collapsed task shows its title, state and issue count, and
its connections meet in one dot on each side. Ports and config values are shown
in the tooltip. The collapsed set is stored per workflow.
Hidden tasks are removed from the canvas and the ports they feed are marked
with the hidden task name. Hidden tasks are shown again while they have failed
or have validation errors. The hidden set is stored per workflow.
Adds a per-workflow 'Inline Config Values' toggle (canvas context menu,
on by default, stored in the project file). When enabled, the separate
config boxes are hidden and each config value is shown on the task's
input port as 'type = value'.
fieldChangedByUi dereferenced m_geomCase->geoMechData() when changing the
reference time step or enabling hydrostatic pressure normalization. The data
is null when the case is not loaded. Use the null check already used
elsewhere in the file.
Crash stack (signature 4182d58e2359):
[3] RigGeoMechCaseData::femPartResults() at RigGeoMechCaseData.cpp:87
[4] RimGeoMechResultDefinition::fieldChangedByUi(...) at RimGeoMechResultDefinition.cpp:354
setPolygon() connected to the new polygon without disconnecting from the
previous one, so a RimPolygonInView could receive objectChanged from a polygon
it no longer references and dereference its own, possibly null, m_polygon.
Disconnect from the old polygon and only sync the name from the referenced
polygon.
Crash stack (signature 1111e3b3ceb1):
[3] RimPolygonInView::onObjectChanged(caf::SignalEmitter const*) at RimPolygonInView.cpp:441
[5] RimPolygonInView::updatePolygonFromTargets() at RimPolygonInView.cpp:259
[6] RicPolylineTargetsPickEventHandler::handle3dPickEvent(Ric3dPickEvent const&) at RicPolylineTargetsPickEventHandler.cpp:100
The "Number of Bins" field accepts any integer. With 0 bins the histogram
vector is resized to zero and m_maxIndex wraps to SIZE_MAX, so addValue()
writes histogram[0] on an empty vector. Set a minimum value of 1 on the
bin count fields of the histogram data sources (also clamping values read
from project files), and treat 0 bins as a single bin in
RigHistogramCalculator.
Crash stack (signature 0a750847b697):
[3] RigHistogramCalculator::addValue(double) at RigStatisticsMath.cpp:546
[5] RimEnsembleSummaryVectorHistogramDataSource::compute(...) const at RimEnsembleSummaryVectorHistogramDataSource.cpp:255
[6] RimHistogramCurve::onLoadDataAndUpdate(bool) at RimHistogramCurve.cpp:365
[11] caf::PdmFieldUiCap<caf::PdmField<int> >::setValueFromUiEditor(QVariant const&, bool)
parameterCorrelations() only returns parameters with a finite case value at
the given time step, so the result vectors differ in length between time
steps. parameterCorrelationsAllTimeSteps indexed every vector with the size
of the first one and also read element [0] when no time step was evaluated.
Accumulate the correlations per parameter instead.
Crash stack (signature f2dd18176dfa):
[3] RimSummaryEnsemble::parameterCorrelationsAllTimeSteps(...) const at RimSummaryEnsemble.cpp:627
[4] RimSummaryEnsemble::correlationSortedEnsembleParameters(...) const at RimSummaryEnsemble.cpp:490
[5] RimEnsembleCurveSet::ensembleParameters(...) const at RimEnsembleCurveSet.cpp:2397
[6] RimEnsembleCurveSet::calculateValueOptions(...) at RimEnsembleCurveSet.cpp:1516
createSummaryReaderInterfaceThreadSafe runs inside an OpenMP parallel loop.
The opm-common and resdata readers can throw on corrupt or incomplete
summary files, and an exception escaping the parallel region calls
std::terminate. Catch the exception, log it and leave the case without a
reader, matching the existing path for files that fail to open.
Crash stack (signatures 7ba31ee67e6a, 678f72fb725b):
[5] manageTerminate() at RiaMainTools.cpp:249
[6] __cxxabiv1::__terminate(void (*)())
[10] _Unwind_Resume
[11] RimFileSummaryCase::createSummaryReaderInterfaceThreadSafe(RifEnsembleImportConfig, RiaThreadSafeLogger*) at RimFileSummaryCase.cpp:121
[12] RimSummaryCaseMainCollection::loadFileSummaryCaseData(...) [clone ._omp_fn.0] at RimSummaryCaseMainCollection.cpp:621
* 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
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.
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
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.
Rows with equal first and last time step kept the incoming address order, which depends on string pool indices and varies between sessions. Break ties on category name.
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.
Zoom all when the cell filter view is changed or when the visibility in the 3D view is updated, as the visible cells can have a very different value range than the full grid.
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.
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.
RimWellEventPerf::State and RimWellEventValve::State are aliases for
RimWellEventEnums::State, but the AppEnum setUp() specialization was
declared in both class headers and defined in RimWellEventPerf.cpp.
The Linux unity build failed to link with an undefined reference to
caf::AppEnum<RimWellEventEnums::State>::setUp().
Declare the specialization in RimWellEventEnums.h and define it in the
new RimWellEventEnums.cpp, so all users see a single declaration and
there is a single definition.