///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2023 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 "RimCheckableNamedObject.h" #include "RimPolylinePickerInterface.h" #include "RimPolylinesDataInterface.h" #include "RimTimeStepFilter.h" #include "cafFilePath.h" #include "cafPdmChildArrayField.h" #include "cafPdmChildField.h" #include "cafPdmField.h" #include "cafPdmObject.h" #include "cafPdmPtrField.h" #include "cvfColor3.h" #include "cvfVector3.h" #include #include #include #include #include class RicPolylineTargetsPickEventHandler; class RimEclipseCase; class RimFaultInView; class RimPolylineTarget; class RimTimeStepFilter; class RivFaultReactivationModelPartMgr; class RigBasicPlane; class RigFaultReactivationModel; namespace cvf { class BoundingBox; class Plane; } // namespace cvf class RimFaultReactivationModel : public RimCheckableNamedObject, public RimPolylinePickerInterface, public RimPolylinesDataInterface { CAF_PDM_HEADER_INIT; using TimeStepFilterEnum = caf::AppEnum; public: RimFaultReactivationModel(); ~RimFaultReactivationModel() override; QString userDescription(); void setUserDescription( QString description ); void setFault( RimFaultInView* fault ); RimFaultInView* fault() const; void setTargets( cvf::Vec3d target1, cvf::Vec3d target2 ); RivFaultReactivationModelPartMgr* partMgr(); // polyline picker interface void insertTarget( const RimPolylineTarget* targetToInsertBefore, RimPolylineTarget* targetToInsert ) override; void deleteTarget( RimPolylineTarget* targetToDelete ) override; void updateEditorsAndVisualization() override; void updateVisualization() override; std::vector activeTargets() const override; bool pickingEnabled() const override; caf::PickEventHandler* pickEventHandler() const override; // polyline data interface cvf::ref polyLinesData() const override; cvf::ref faultPlane() const; bool showFaultPlane() const; cvf::ref model() const; bool showModel() const; std::pair localCoordSysNormalsXY() const; bool extractAndExportModelData(); QString baseDir() const; void setBaseDir( QString path ); std::vector selectedTimeSteps() const; bool isFirstTimeStepsSelected() const; QStringList commandParameters() const; QString outputOdbFilename() const; QString inputFilename() const; QString settingsFilename() const; void updateTimeSteps(); protected: caf::PdmFieldHandle* userDescriptionField() override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; RimEclipseCase* eclipseCase(); void initAfterRead() override; QString baseFilename() const; bool exportModelSettings(); private: std::shared_ptr m_pickTargetsEventHandler; cvf::ref m_partMgr; caf::PdmField m_baseDir; caf::PdmField m_modelThickness; caf::PdmField m_userDescription; caf::PdmPtrField m_fault; caf::PdmChildArrayField m_targets; caf::PdmField m_faultPlaneColor; caf::PdmField m_modelPart1Color; caf::PdmField m_modelPart2Color; caf::PdmField m_showFaultPlane; caf::PdmField m_showModelPlane; caf::PdmField m_extentVerticalAbove; caf::PdmField m_extentVerticalBelow; caf::PdmField m_extentHorizontal; caf::PdmField m_modelExtentFromAnchor; caf::PdmField m_modelMinZ; caf::PdmField m_modelBelowSize; caf::PdmField m_numberOfCellsHorzPart1; caf::PdmField m_numberOfCellsHorzPart2; caf::PdmField m_numberOfCellsVertUp; caf::PdmField m_numberOfCellsVertMid; caf::PdmField m_numberOfCellsVertLow; cvf::ref m_faultPlane; cvf::ref m_modelPlane; caf::PdmField m_timeStepFilter; caf::PdmField> m_selectedTimeSteps; std::vector m_availableTimeSteps; };