mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 15:10:22 -05:00
INSERT_DATE statements are now expanded into one timeline event per occurrence instead of a list of bare dates, so each generated date keeps the COMMENT of its statement. - New RimWellEventInsertDate (EventType::INSERT_DATE): a date-only event that generates no keyword, added with WellEventTimeline.add_insert_date_event(event_date, comment). - The schedule generator writes the comment of an insert-date event as "--" lines directly below its DATES keyword. - generate_schedule(_text) no longer takes additional_dates; insert-date events are part of the timeline, but keep the previous behavior of not being filtered by set_timestamp(). - SimulatorEventsDocument.report_dates and ApplyReport.report_dates are replaced by SimulatorEventsDocument.insert_date_events/insert_dates; merging files drops insert dates repeating both date and comment.
153 lines
5.6 KiB
C++
153 lines
5.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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 <http://www.gnu.org/licenses/gpl.html>
|
|
// for more details.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "RimWellEvent.h"
|
|
|
|
#include "RimTools.h"
|
|
#include "RimWellPath.h"
|
|
|
|
#include "cafPdmFieldScriptingCapability.h"
|
|
#include "cafPdmObjectScriptingCapability.h"
|
|
#include "cafPdmUiDateEditor.h"
|
|
|
|
namespace caf
|
|
{
|
|
template <>
|
|
void AppEnum<RimWellEvent::EventType>::setUp()
|
|
{
|
|
addItem( RimWellEvent::EventType::PERF, "PERF", "Perforation" );
|
|
addItem( RimWellEvent::EventType::VALVE, "VALVE", "Valve" );
|
|
addItem( RimWellEvent::EventType::TUBING, "TUBING", "Tubing" );
|
|
addItem( RimWellEvent::EventType::WSTATE, "WSTATE", "Well State" );
|
|
addItem( RimWellEvent::EventType::WTYPE, "WTYPE", "Well Type" );
|
|
addItem( RimWellEvent::EventType::WELLSPEC, "WELLSPEC", "Well Specification" );
|
|
addItem( RimWellEvent::EventType::WCONTROL, "WCONTROL", "Well Control" );
|
|
addItem( RimWellEvent::EventType::KEYWORD, "KEYWORD", "Well Keyword" );
|
|
addItem( RimWellEvent::EventType::SCHEDULE_KEYWORD, "SCHEDULE_KEYWORD", "Schedule Keyword" );
|
|
addItem( RimWellEvent::EventType::RAW_TEXT, "RAW_TEXT", "Raw Text" );
|
|
addItem( RimWellEvent::EventType::INSERT_DATE, "INSERT_DATE", "Insert Date" );
|
|
setDefault( RimWellEvent::EventType::PERF );
|
|
}
|
|
} // namespace caf
|
|
|
|
CAF_PDM_ABSTRACT_SOURCE_INIT( RimWellEvent, "WellEvent" );
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RimWellEvent::RimWellEvent()
|
|
{
|
|
CAF_PDM_InitScriptableObject( "Well Event", "", "", "WellEvent" );
|
|
|
|
CAF_PDM_InitField( &m_eventDate, "EventDate", QDateTime(), "Event Date" );
|
|
CAF_PDM_InitScriptableFieldNoDefault( &m_wellPath, "WellPath", "Well Path" );
|
|
CAF_PDM_InitScriptableField( &m_comment, "Comment", QString(), "Comment" );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RimWellEvent::~RimWellEvent()
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QDateTime RimWellEvent::eventDate() const
|
|
{
|
|
return m_eventDate();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RimWellEvent::setEventDate( const QDateTime& date )
|
|
{
|
|
m_eventDate = date;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RimWellPath* RimWellEvent::wellPath() const
|
|
{
|
|
return m_wellPath();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RimWellEvent::setWellPath( RimWellPath* wellPath )
|
|
{
|
|
m_wellPath = wellPath;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RimWellEvent::wellName() const
|
|
{
|
|
if ( m_wellPath() )
|
|
{
|
|
return m_wellPath()->name();
|
|
}
|
|
return QString();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RimWellEvent::comment() const
|
|
{
|
|
return m_comment();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RimWellEvent::setComment( const QString& comment )
|
|
{
|
|
m_comment = comment;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RimWellEvent::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
|
{
|
|
uiOrdering.add( &m_wellPath );
|
|
uiOrdering.add( &m_eventDate );
|
|
uiOrdering.add( &m_comment );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QList<caf::PdmOptionItemInfo> RimWellEvent::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions )
|
|
{
|
|
QList<caf::PdmOptionItemInfo> options;
|
|
|
|
if ( fieldNeedingOptions == &m_wellPath )
|
|
{
|
|
RimTools::wellPathOptionItems( &options );
|
|
}
|
|
|
|
return options;
|
|
}
|