Files
ResInsight/GrpcInterface/Python/rips/example_input_files/simulator_events.events
T
Kristian Bendiksen b0f60c392f #14651 SIMEVENTS 1.1: datetime dates and Go-style durations
Increase the time resolution of the SIMEVENTS format and replace whole-day
integer offsets with Go-style duration literals.

- All DATE values are now datetimes with second resolution. A date-only
  literal means midnight; a time-of-day requires the 'T' separator and
  fractional seconds are rounded to the nearest second.
- DURATION values and offset terms are Go-style literals such as 5d,
  12h30m, 1.5h, 3mon and -3d. Units (mon, d, h, m, s) are mandatory, must
  appear in strictly descending order without repeats, and a fraction is
  allowed only on the last component (never on mon or s). Unitless numbers
  and the legacy DAYS suffix are rejected with hints.
- New Duration type keeps calendar months separate from the fixed
  timedelta part; adding months clamps to the end of shorter months, and
  str() renders the Go-style form.
- Header version bumped to 1.1; 1.0 files are rejected with a migration
  hint.
- Update tests, sample .events file, example script and
  docs/simulatorEvents.md.
2026-09-22 14:20:36 +02:00

51 lines
2.2 KiB
Plaintext

# Example SIMEVENTS well-event-timeline file (version 1.1).
# Parsed by rips.simulator_events; see that module's docstring for the grammar.
# Validate with: python3 -m rips.simulator_events simulator_events.events
SIMEVENTS 1.1
UNIT METRIC
# Typed declarations: dates, Go-style durations (e.g. 5d, 12h30m), well-name aliases, and
# cell filter expressions.
DATE A1_STARTUP = 2018-01-01
DATE A2_STARTUP = 2018-03-01 + 9d
DURATION RAMP = 5d
# A filter becomes a case-level combined data filter attached to the
# perforations that reference it. An unqualified result name is searched in
# STATIC_NATIVE, then DYNAMIC_NATIVE, then GENERATED results; bounds are
# inclusive, so > behaves as >=.
FILTER POROPERM = "PORO > 0.1 AND PERMX > 100.0"
WELL A1 = "55_33-A-1"
# Inserted dates become bare DATES keywords in the generated schedule. Recurring
# dates may use an explicit inclusive end date or default to the last event.
SCHEDULE
INSERT_DATE A1_STARTUP EVERY MONTH
INSERT_DATE A2_STARTUP EVERY 30 DAYS UNTIL A2_STARTUP + 90d
# Raw schedule text is preserved verbatim. This block is inserted immediately
# after the date declaration; lower priorities are emitted first when multiple
# blocks use the same placement.
SCHEDULE
A1_STARTUP + RAMP RAW_TEXT PLACEMENT=AFTER_DATE PRIORITY=10
-- Custom schedule text not modeled by the timeline API
WTRACER
'55_33-A-1' 'SIMULATOR_EVENTS_TRACER' 1.0 /
/
END_RAW_TEXT
WELL A1
A1_STARTUP PERFORATION MDSTART=1644.49 MDEND=1664.28 DIAMETER=0.2413 SKIN=5 COMPLETION_NUMBER=1 FILTER=POROPERM
A1_STARTUP PERFORATION MDSTART=1664.28 MDEND=1674.18 DIAMETER=0.2413 SKIN=5 COMPLETION_NUMBER=2 FILTER=POROPERM
A1_STARTUP PERFORATION MDSTART=1674.18 MDEND=1689.82 DIAMETER=0.2413 SKIN=5 COMPLETION_NUMBER=3
A1_STARTUP + RAMP WCONHIST STATUS=OPEN CMODE=ORAT VFP=1
A1_STARTUP + RAMP WELTARG CMODE=BHP VALUE=50
WELL "55_33-A-2"
# An inline quoted expression declares an anonymous filter for one event.
A2_STARTUP - 1d PERFORATION MDSTART=1692.79 MDEND=1706 DIAMETER=0.2413 SKIN=5 COMPLETION_NUMBER=1 FILTER="PORO > 0.2"
A2_STARTUP WCONHIST STATUS=OPEN CMODE=ORAT VFP=2
A2_STARTUP WELTARG CMODE=BHP VALUE=50