diff --git a/ApplicationCode/ModelVisualization/RivWellHeadPartMgr.cpp b/ApplicationCode/ModelVisualization/RivWellHeadPartMgr.cpp index e9a3d1f594..8eba80f828 100644 --- a/ApplicationCode/ModelVisualization/RivWellHeadPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivWellHeadPartMgr.cpp @@ -266,7 +266,7 @@ void RivWellHeadPartMgr::buildWellHeadParts(size_t frameIndex) void RivWellHeadPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicList* model, size_t frameIndex) { if (m_rimReservoirView.isNull()) return; - if (m_rimWell.isNull()) return; + if (m_rimWell.isNull() || m_rimWell->wellResults() == NULL) return; if ( m_rimReservoirView->wellCollection()->wellPipeVisibility() != RimWellCollection::FORCE_ALL_ON && m_rimWell->showWellPipes() == false) return; diff --git a/ApplicationCode/ModelVisualization/RivWellPipesPartMgr.cpp b/ApplicationCode/ModelVisualization/RivWellPipesPartMgr.cpp index e709d0a4f9..46929737c8 100644 --- a/ApplicationCode/ModelVisualization/RivWellPipesPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivWellPipesPartMgr.cpp @@ -325,7 +325,7 @@ void RivWellPipesPartMgr::calculateWellPipeCenterline( std::vector< std::vector void RivWellPipesPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicList* model, size_t frameIndex) { if (m_rimReservoirView.isNull()) return; - if (m_rimWell.isNull()) return; + if (m_rimWell.isNull() || m_rimWell->wellResults() == NULL) return; if ( m_rimReservoirView->wellCollection()->wellPipeVisibility() != RimWellCollection::FORCE_ALL_ON && m_rimWell->showWellPipes() == false) return; diff --git a/ApplicationCode/ProjectDataModel/RimReservoirView.cpp b/ApplicationCode/ProjectDataModel/RimReservoirView.cpp index 2a6a4062c8..35febc625a 100644 --- a/ApplicationCode/ProjectDataModel/RimReservoirView.cpp +++ b/ApplicationCode/ProjectDataModel/RimReservoirView.cpp @@ -261,6 +261,27 @@ void RimReservoirView::updateViewerWidgetWindowTitle() } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimReservoirView::clampCurrentTimestep() +{ + // Clamp the current timestep to actual possibilities + if (this->gridCellResults()) + { + if (m_currentTimeStep() > this->gridCellResults()->maxTimeStepCount()) + { + m_currentTimeStep = this->gridCellResults()->maxTimeStepCount() -1; + } + } + + if (m_currentTimeStep < 0 ) m_currentTimeStep = 0; + + if (!this->cellResult()->hasResult() || cellResult->hasStaticResult()) + { + m_currentTimeStep = 0; + } +} //-------------------------------------------------------------------------------------------------- /// @@ -271,11 +292,11 @@ void RimReservoirView::createDisplayModelAndRedraw() { m_viewer->animationControl()->slotStop(); + this->clampCurrentTimestep(); + createDisplayModel(); updateDisplayModelVisibility(); - if (m_currentTimeStep < 0 ) m_currentTimeStep = 0; - if (m_viewer->frameCount() > 0) { m_viewer->animationControl()->setCurrentFrame(m_currentTimeStep); @@ -708,6 +729,7 @@ void RimReservoirView::loadDataAndUpdate() m_geometry->clearGeometryCache(); syncronizeWellsWithResults(); + this->clampCurrentTimestep(); createDisplayModel(); updateDisplayModelVisibility(); diff --git a/ApplicationCode/ProjectDataModel/RimReservoirView.h b/ApplicationCode/ProjectDataModel/RimReservoirView.h index 8e68ab20b0..2dcb730882 100644 --- a/ApplicationCode/ProjectDataModel/RimReservoirView.h +++ b/ApplicationCode/ProjectDataModel/RimReservoirView.h @@ -155,7 +155,8 @@ protected: private: - void syncronizeWellsWithResults(); + void syncronizeWellsWithResults(); + void clampCurrentTimestep(); private: caf::PdmField m_currentTimeStep; @@ -174,7 +175,6 @@ private: void updateStaticCellColors(unsigned short geometryType); void updateLegends(); - cvf::ref m_geometry; cvf::ref m_pipesPartManager; }; diff --git a/cafUserInterface/cafProgressInfo.cpp b/cafUserInterface/cafProgressInfo.cpp index 49c4b3096f..f58316ec91 100644 --- a/cafUserInterface/cafProgressInfo.cpp +++ b/cafUserInterface/cafProgressInfo.cpp @@ -314,11 +314,14 @@ void ProgressInfoStatic::setProgress(size_t progressValue) progressStack().back() = progressValue; progressSpanStack().back() = 1; - assert(static_cast(currentTotalProgress()) <= progressDialog()->maximum()); - size_t totProg = currentTotalProgress(); + int totalProgress = static_cast(currentTotalProgress()); + int totalMaxProgress = static_cast(currentTotalMaxProgressValue()); + + assert(static_cast(totalProgress) <= totalMaxProgress); + + progressDialog()->setMaximum(totalMaxProgress); + progressDialog()->setValue(totalProgress); - progressDialog()->setMaximum(static_cast(currentTotalMaxProgressValue())); - progressDialog()->setValue(static_cast(currentTotalProgress())); QCoreApplication::processEvents(); }