///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2011- Statoil ASA // Copyright (C) 2013- Ceetron Solutions AS // Copyright (C) 2011-2012 Ceetron AS // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "cvfBase.h" #include "cvfObject.h" #include "cafPdmField.h" #include "cafPdmObject.h" #include "cafAppEnum.h" #include "RimEclipseCase.h" #include "RimDefines.h" class RimIdenticalGridCaseGroup; class RimEclipseResultDefinition; class RimEclipseStatisticsCaseCollection; class RigMainGrid; class RigSingleWellResultsData; //================================================================================================== // // // //================================================================================================== class RimEclipseStatisticsCase : public RimEclipseCase { CAF_PDM_HEADER_INIT; public: RimEclipseStatisticsCase(); virtual ~RimEclipseStatisticsCase(); void setMainGrid(RigMainGrid* mainGrid); void computeStatistics(); bool hasComputedStatistics() const; void clearComputedStatistics(); void computeStatisticsAndUpdateViews(); void updateConnectedEditorsAndReservoirViews(); virtual bool openEclipseGridFile(); RimCaseCollection* parentStatisticsCaseCollection(); enum PercentileCalcType { NEAREST_OBSERVATION, HISTOGRAM_ESTIMATED, INTERPOLATED_OBSERVATION }; caf::PdmField< bool > m_calculateEditCommand; virtual void updateFilePathsFromProjectPath(const QString& projectPath, const QString& oldProjectPath){} private: void scheduleACTIVEGeometryRegenOnReservoirViews(); RimIdenticalGridCaseGroup* caseGroup(); void getSourceCases(std::vector& sourceCases); void populateWithDefaultsIfNeeded(); void updateSelectionListVisibilities(); void updateSelectionSummaryLabel(); void updatePercentileUiVisibility(); void setWellResultsAndUpdateViews(const cvf::Collection& sourceCaseWellResults); // Pdm system overrides virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) ; virtual QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly ); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute ); // Fields caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > m_resultType; caf::PdmField< caf::AppEnum< RimDefines::PorosityModelType > > m_porosityModel; caf::PdmField m_selectionSummary; caf::PdmField > m_selectedDynamicProperties; caf::PdmField > m_selectedStaticProperties; caf::PdmField > m_selectedGeneratedProperties; caf::PdmField > m_selectedInputProperties; caf::PdmField > m_selectedFractureDynamicProperties; caf::PdmField > m_selectedFractureStaticProperties; caf::PdmField > m_selectedFractureGeneratedProperties; caf::PdmField > m_selectedFractureInputProperties; caf::PdmField< bool > m_calculatePercentiles; caf::PdmField< caf::AppEnum< PercentileCalcType > > m_percentileCalculationType; caf::PdmField m_lowPercentile; caf::PdmField m_midPercentile; caf::PdmField m_highPercentile; caf::PdmField m_wellDataSourceCase; caf::PdmField< bool > m_useZeroAsInactiveCellValue; };