//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RigFemPartCollection* RimCellRangeFilterCollection::femPartColl() const { RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(baseView()); if (geoView && geoView->geoMechCase() && geoView->geoMechCase()->geoMechData() ) { return geoView->geoMechCase()->geoMechData()->femParts(); } return NULL; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void Rim3dOverlayInfoConfig::updateVisCellStatsIfNeeded() { RimEclipseView * eclipseView = dynamic_cast<RimEclipseView*>(m_viewDef.p()); RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p()); if (!m_isVisCellStatUpToDate) { cvf::ref<RigStatisticsCalculator> calc; if (geoMechView) { RigFemResultAddress resAddress = geoMechView->cellResultResultDefinition()->resultAddress(); calc = new RigFemNativeVisibleCellsStatCalc(geoMechView->geoMechCase()->geoMechData(), resAddress, geoMechView->currentTotalCellVisibility().p()); } else if (eclipseView) { size_t scalarIndex = eclipseView->cellResult()->scalarResultIndex(); calc = new RigEclipseNativeVisibleCellsStatCalc(eclipseView->currentGridCellResults()->cellResults(), scalarIndex, eclipseView->currentTotalCellVisibility().p()); } m_visibleCellStatistics = new RigStatisticsDataCache(calc.p()); m_isVisCellStatUpToDate = true; } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimGeoMechCase* RicPasteFeatureImpl::findGeoMechCase(caf::PdmObjectHandle* objectHandle) { RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(objectHandle); if (!geomCase) { RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>(objectHandle); if (geomView) geomCase = geomView->geoMechCase(); } return geomCase; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RicGeoMechPropertyFilterFeatureImpl::setDefaults(RimGeoMechPropertyFilter* propertyFilter) { CVF_ASSERT(propertyFilter); RimGeoMechPropertyFilterCollection* propertyFilterCollection = propertyFilter->parentContainer(); CVF_ASSERT(propertyFilterCollection); RimGeoMechView* reservoirView = propertyFilterCollection->reservoirView(); CVF_ASSERT(reservoirView); propertyFilter->resultDefinition->setGeoMechCase(reservoirView->geoMechCase()); propertyFilter->resultDefinition->setResultAddress(reservoirView->cellResult()->resultAddress()); propertyFilter->resultDefinition->loadResult(); propertyFilter->setToDefaultValues(); propertyFilter->updateFilterName(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- cvf::ref<RivCrossSectionHexGridIntf> RivCrossSectionPartMgr::createHexGridInterface() { RimEclipseView* eclipseView; m_rimCrossSection->firstAnchestorOrThisOfType(eclipseView); if (eclipseView) { RigMainGrid* grid = NULL; grid = eclipseView->eclipseCase()->reservoirData()->mainGrid(); return new RivEclipseCrossSectionGrid(grid, eclipseView->currentActiveCellInfo(), m_rimCrossSection->showInactiveCells()); } RimGeoMechView* geoView; m_rimCrossSection->firstAnchestorOrThisOfType(geoView); if (geoView) { RigFemPart* femPart = geoView->geoMechCase()->geoMechData()->femParts()->part(0); return new RivFemCrossSectionGrid(femPart); } return NULL; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuSelectionChangedHandler::addCurveFromSelectionItem(const RiuGeoMechSelectionItem* geomSelectionItem) const { RimGeoMechView* geoMechView = geomSelectionItem->m_view.p(); if (geoMechView && geoMechView->cellResultResultDefinition() && geoMechView->cellResultResultDefinition()->hasResult() && geoMechView->geoMechCase() && geoMechView->geoMechCase()->geoMechData()) { std::unique_ptr<RiuFemTimeHistoryResultAccessor> timeHistResultAccessor; cvf::Vec3d intersectionPointInDomain = geoMechView->displayCoordTransform()->translateToDomainCoord(geomSelectionItem->m_localIntersectionPointInDisplay); if ( geomSelectionItem->m_hasIntersectionTriangle ) { timeHistResultAccessor = std::unique_ptr<RiuFemTimeHistoryResultAccessor>( new RiuFemTimeHistoryResultAccessor(geoMechView->geoMechCase()->geoMechData(), geoMechView->cellResultResultDefinition()->resultAddress(), geomSelectionItem->m_gridIndex, static_cast<int>(geomSelectionItem->m_cellIndex), geomSelectionItem->m_elementFace, intersectionPointInDomain, geomSelectionItem->m_intersectionTriangle)); } else { timeHistResultAccessor = std::unique_ptr<RiuFemTimeHistoryResultAccessor>( new RiuFemTimeHistoryResultAccessor(geoMechView->geoMechCase()->geoMechData(), geoMechView->cellResultResultDefinition()->resultAddress(), geomSelectionItem->m_gridIndex, static_cast<int>(geomSelectionItem->m_cellIndex), geomSelectionItem->m_elementFace, intersectionPointInDomain)); } QString curveName; curveName.append(geoMechView->geoMechCase()->caseUserDescription() + ", "); caf::AppEnum<RigFemResultPosEnum> resPosAppEnum = geoMechView->cellResultResultDefinition()->resultPositionType(); curveName.append(resPosAppEnum.uiText() + ", "); curveName.append(geoMechView->cellResultResultDefinition()->resultFieldUiName()+ ", ") ; curveName.append(geoMechView->cellResultResultDefinition()->resultComponentUiName() + " "); if ( resPosAppEnum == RIG_ELEMENT_NODAL_FACE ) { if ( geomSelectionItem->m_elementFace >= 0 ) { curveName.append(", " + caf::AppEnum<cvf::StructGridInterface::FaceType>::textFromIndex(geomSelectionItem->m_elementFace)); } else { curveName.append(", from N[" + QString::number(timeHistResultAccessor->closestNodeId()) + "] transformed onto intersection"); } } curveName.append("\n"); curveName.append(timeHistResultAccessor->geometrySelectionText()); std::vector<double> timeHistoryValues = timeHistResultAccessor->timeHistoryValues(); std::vector<QDateTime> dates = geoMechView->geoMechCase()->timeStepDates(); if (dates.size() == timeHistoryValues.size()) { RiuMainWindow::instance()->resultPlot()->addCurve(geoMechView->geoMechCase(), curveName, geomSelectionItem->m_color, dates, timeHistoryValues); } else { std::vector<double> dummyStepTimes; for (size_t i = 0; i < timeHistoryValues.size(); i++) { dummyStepTimes.push_back(i); } RiuMainWindow::instance()->resultPlot()->addCurve(geoMechView->geoMechCase(), curveName, geomSelectionItem->m_color, dummyStepTimes, timeHistoryValues); } } }