mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-27 15:41:00 -05:00
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.
51 lines
2.2 KiB
Plaintext
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
|