///////////////////////////////////////////////////////////////////////////////// // // 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 "RimKeywordEvent.h" #include "RimWellEventControl.h" #include "RimWellEventInsertDate.h" #include "RimWellEventPerf.h" #include "RimWellEventRawText.h" #include "RimWellEventState.h" #include "RimWellEventTimeline.h" #include "RimWellEventValve.h" #include "RimWellEventWellSpec.h" #include "cafAppEnum.h" #include "cafPdmField.h" #include "cafPdmObjectMethod.h" #include "cafPdmPtrArrayField.h" #include "cafPdmPtrField.h" #include class RimEclipseCase; class RimWellPath; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addPerfEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addPerfEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField m_startMd; caf::PdmField m_endMd; caf::PdmField m_diameter; caf::PdmField m_skinFactor; caf::PdmField> m_state; caf::PdmField m_completionNumber; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addValveEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addValveEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField m_measuredDepth; caf::PdmField> m_valveType; caf::PdmField> m_state; caf::PdmField m_flowCoefficient; caf::PdmField m_area; caf::PdmField m_aicdStrength; caf::PdmField m_aicdDensityCalibFluid; caf::PdmField m_aicdViscosityCalibFluid; caf::PdmField m_aicdVolFlowExp; caf::PdmField m_aicdViscFuncExp; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addStateEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addStateEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField> m_wellState; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addControlEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addControlEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField> m_controlMode; caf::PdmField m_controlValue; caf::PdmField m_bhpLimit; caf::PdmField m_oilRate; caf::PdmField m_waterRate; caf::PdmField m_gasRate; caf::PdmField m_isProducer; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addSegmentEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addSegmentEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField m_startMd; caf::PdmField m_endMd; caf::PdmField m_innerDiameter; caf::PdmField m_roughness; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addWellSpecEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addWellSpecEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField m_groupName; caf::PdmField m_allowCrossFlow; caf::PdmField> m_referenceDepth; caf::PdmField> m_wellType; caf::PdmField m_pressureDrop; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addWellKeywordEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addWellKeywordEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmPtrField m_wellPath; caf::PdmField m_keywordName; caf::PdmField> m_itemNames; caf::PdmField> m_itemTypes; caf::PdmField> m_itemValues; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addKeywordEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addKeywordEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmField m_keywordName; caf::PdmField> m_itemNames; caf::PdmField> m_itemTypes; caf::PdmField> m_itemValues; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addRawTextEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addRawTextEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmField m_text; caf::PdmField> m_placement; caf::PdmField m_anchorKeyword; caf::PdmField m_priority; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_addInsertDateEvent : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_addInsertDateEvent( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmField m_eventDate; caf::PdmField m_comment; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_setTimestamp : public caf::PdmVoidObjectMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_setTimestamp( caf::PdmObjectHandle* self ); std::expected execute() override; private: caf::PdmField m_timestamp; }; //================================================================================================== /// //================================================================================================== class RimcWellEventTimeline_generateSchedule : public caf::PdmObjectMethod { CAF_PDM_HEADER_INIT; public: RimcWellEventTimeline_generateSchedule( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; private: caf::PdmPtrField m_eclipseCase; caf::PdmPtrArrayField m_exportMswForWells; caf::PdmField m_firstDateAsComment; caf::PdmField m_alignColumns; };