///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2017- Statoil ASA // // 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 "RigSimulationInputSettings.h" #include "cafAppEnum.h" #include "cafPdmChildArrayField.h" #include "cafPdmField.h" #include "cafPdmObject.h" #include "cafVecIjk.h" #include "cvfVector3.h" #include #include #include #include class RigEclipseCaseData; class RigSimWellData; class RimEclipseView; class RimKeywordBcprop; //================================================================================================== /// //================================================================================================== class RicExportEclipseSectorModelUi : public caf::PdmObject { CAF_PDM_HEADER_INIT; enum ResultExportOptions { EXPORT_NO_RESULTS, EXPORT_TO_GRID_FILE, EXPORT_TO_SINGLE_SEPARATE_FILE, EXPORT_TO_SEPARATE_FILE_PER_RESULT }; using ResultExportOptionsEnum = caf::AppEnum; enum GridBoxSelection { VISIBLE_CELLS_BOX, ACTIVE_CELLS_BOX, VISIBLE_WELLS_BOX, FULL_GRID_BOX, MANUAL_SELECTION }; using GridBoxSelectionEnum = caf::AppEnum; using BoundaryConditionEnum = caf::AppEnum; public: RicExportEclipseSectorModelUi(); ~RicExportEclipseSectorModelUi() override; const QStringList& tabNames() const; void setCaseData( RigEclipseCaseData* caseData = nullptr, RimEclipseView* eclipseView = nullptr, const caf::VecIjk0& visibleMin = caf::VecIjk0::ZERO, const caf::VecIjk0& visibleMax = caf::VecIjk0::ZERO ); caf::VecIjk0 min() const; caf::VecIjk0 max() const; void setMin( const caf::VecIjk0& min ); void setMax( const caf::VecIjk0& max ); void applyBoundaryDefaults(); void removeInvalidKeywords(); cvf::Vec3st refinement() const; QString exportFaultsFilename() const; QString exportGridFilename() const; QString exportParametersFilename() const; bool writeEchoKeywords() const; static std::vector getVisibleSimulationWells( RimEclipseView* view ); static std::pair computeVisibleWellCells( RimEclipseView* view, RigEclipseCaseData* caseData, int visibleWellsPadding ); caf::PdmField exportGrid; caf::PdmField exportInLocalCoordinates; caf::PdmField makeInvisibleCellsInactive; caf::PdmField exportFaults; caf::PdmField exportParameters; caf::PdmField> selectedKeywords; caf::PdmField exportGridBox; caf::PdmChildArrayField m_bcpropKeywords; caf::PdmField m_exportSimulationInput; caf::PdmField m_boundaryCondition; caf::PdmField m_porvMultiplier; caf::PdmField m_visibleWellsPadding; caf::PdmField refinementCountI; caf::PdmField refinementCountJ; caf::PdmField refinementCountK; protected: caf::PdmField minI; caf::PdmField maxI; caf::PdmField minJ; caf::PdmField maxJ; caf::PdmField minK; caf::PdmField maxK; void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; static std::set mainKeywords(); QString defaultFolder() const; QString defaultGridFileName() const; QString defaultResultsFileName() const; QString defaultFaultsFileName() const; private: caf::PdmField m_exportFolder; caf::PdmField m_exportFaultsFilename; caf::PdmField m_exportParametersFilename; caf::PdmField m_exportGridFilename; caf::PdmField m_writeEchoInGrdeclFiles; RigEclipseCaseData* m_caseData; RimEclipseView* m_eclipseView; caf::VecIjk0 m_visibleMin; caf::VecIjk0 m_visibleMax; QStringList m_tabNames; };