///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2025 Equinor 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 "cafFilePath.h" #include "cafPdmField.h" #include "cafPdmObject.h" #include "cafPdmPtrField.h" #include "cafVecIjk.h" #include "RiaModelExportDefines.h" #include #include #include class RimKeywordBcprop; class RimEclipseCase; class RimEclipseView; //================================================================================================== /// //================================================================================================== class RicExportSectorModelUi : public caf::PdmObject { CAF_PDM_HEADER_INIT; using GridBoxSelectionEnum = caf::AppEnum; using BoundaryConditionEnum = caf::AppEnum; public: RicExportSectorModelUi(); ~RicExportSectorModelUi() override; const QStringList& pageNames() const; const QStringList& pageSubTitles() const; void setEclipseView( RimEclipseView* view ); // data access caf::VecIjk0 min() const; caf::VecIjk0 max() const; void setMin( const caf::VecIjk0& min ); void setMax( const caf::VecIjk0& max ); cvf::Vec3st refinement() const; std::vector keywordsToRemove() const; std::vector bcpropKeywords() const; RiaModelExportDefines::BoundaryCondition boundaryCondition() const; double porvMultiplier() const; QString exportDeckFilename() const; RiaModelExportDefines::GridBoxSelection gridBoxSelection() const; int wellPadding() const; bool shouldCreateSimulationJob() const; bool startSimulationJobAfterExport() const; QString newSimulationJobFolder() const; QString newSimulationJobName() const; protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; std::map validate( const QString& configName ) const override; void setDefaultKeywordsToRemove(); private: enum WizardPageEnum : unsigned int { ExportSettings = 0, GridBoxSelection = 1, GridRefinement = 2, BoundaryConditions = 3, KeywordAdjustments = 4, SimulationJob = 5, TotalPages = 6 }; void applyBoundaryDefaults(); static QString defaultFolder(); private: caf::PdmField m_exportFolder; caf::PdmField m_exportDeckName; caf::PdmField m_visibleWellsPadding; caf::PdmField m_gridBoxSelection; caf::PdmField m_minI; caf::PdmField m_maxI; caf::PdmField m_minJ; caf::PdmField m_maxJ; caf::PdmField m_minK; caf::PdmField m_maxK; caf::PdmField m_refineGrid; caf::PdmField m_refinementCountI; caf::PdmField m_refinementCountJ; caf::PdmField m_refinementCountK; caf::PdmField m_boundaryCondition; caf::PdmChildArrayField m_bcpropKeywords; caf::PdmField m_porvMultiplier; caf::PdmField> m_keywordsToRemove; caf::PdmField m_createSimulationJob; caf::PdmField m_simulationJobFolder; caf::PdmField m_simulationJobName; caf::PdmField m_startSimulationJobAfterExport; caf::PdmPtrField m_eclipseCase; caf::PdmPtrField m_eclipseView; QStringList m_pageNames; QStringList m_pageSubtitles; caf::VecIjk0 m_visibleMin; caf::VecIjk0 m_visibleMax; int m_totalCells; };