Landscape Events
Landscape events are the primary abstraction in SELES for modelling processes of landscape change. A landscape event is designed to represent any process that recurrently initiates on a landscape, possibly spreads (in contiguous or non-contiguous patches), and makes changes in the spatio-temporal contexts it visits.
4.1 Landscape Event Properties
Landscape events define when and where state changes should occur, and the nature of those state changes, using a set of properties. Each property is defined by a set of assignments and expressions.
Table 2 — Landscape event properties
| Property | Description |
|---|---|
| Initial State | Specifies the number of initial event instances created at simulation start. |
Return Time (ReturnTime) | The time interval between recurrences of the event. Specifies the time between a new instance being created and when it is processed. |
Event Location (EventLocation) | Defines the set of cells (spatial region) in which the event can potentially initiate. Default is the whole map. |
Number of Clusters (NumClusters) | The number of cells in which to initiate the event. If not specified, each cell in EventLocation is tested independently using ProbInit as an absolute probability. |
Probability of Initiation (ProbInit) | Absolute or relative probability of the event initiating at a specific spatial location, as a function of cell state. Used in conjunction with NumClusters. |
| Transitions | Tests whether the event "occurs" in an active cell (reached by initiation or spread). Determines if state change happens and whether the event will spread. This is the logical location for main state transitions. |
Spread Time (SpreadTime) | In spreading events: the time interval to schedule spreading from the current cell to its neighbours. Processed after Transitions, before spreading. |
Spread Location (SpreadLocation) | In spreading events: the set of cells to which an event can potentially spread from the current cell. Default is the cardinal neighbours. |
Number of Recipients (NumRecipients) | In spreading events: the number of cells to which the event should spread from the current cell. Works in conjunction with SpreadProb. |
Probability of Spread (SpreadProb) | In spreading events: the absolute or relative probability that the event spreads to a particular neighbouring cell. |
End Cluster (EndCluster) | Processed when a cluster terminates (no more active cells). In SELES 10, only the preliminary context is defined. |
End Event (EndEvent) | Processed when an event instance terminates (no more active clusters). In SELES 10, only the preliminary context is defined. |
ProbInit and NumClusters Together
ProbInit and NumClusters together specify the cells in which events will initiate. Many processes are sensitive to the underlying spatial structure of the landscape, so the probability of initiation at a specific location may be conditional on the state of that location.
ProbInit may specify either an absolute probability (used when NumClusters is not defined) or a relative probability (used when NumClusters is defined, to weight cell selection).
Table 3 — Relationship between ProbInit and NumClusters
| ProbInit NOT specified (all cells equal probability) | ProbInit specified (each cell has individual probability Pi) | |
|---|---|---|
| NumClusters NOT specified | Event initiates in every cell of EventLocation | ProbInit is the absolute probability; expected initiations = sum(Pi) |
| NumClusters specified (event initiates in exactly N cells) | N locations chosen at random, equal probability | ProbInit is a relative probability; exactly N cells chosen |
For each cell that initiates, a new active cell and cluster are created. The Transitions property then determines whether or not the event occurs in that cell, and whether it will spread.
:::note Initiation vs Occurrence
SELES distinguishes between initiation (an event instance is "dropped" into a cell) and occurrence (the Transitions property evaluates to true). For example, a lightning strike may initiate a fire in the cell it hits, but whether the fire actually occurs depends on fuel and weather conditions.
:::
SpreadTime and Spreading
SpreadTime specifies when an active cell will spread to its neighbours — analogous to ReturnTime but computed at the current location. An active cell can only spread if it has occurred (i.e. passed the Transitions test). If it did not occur, it terminates without spreading.
When spreading is processed, new active cells are created in neighbouring cells within the same active cluster and event instance as the original spreading cell. SpreadLocation, SpreadProb, and NumRecipients work together to select which neighbours receive the spread — analogous to how EventLocation, ProbInit, and NumClusters work for initiation.
Eventually a cluster (the set of active cells sharing a common initiation cell) runs out of active cells and terminates, triggering EndCluster. When all clusters of an event instance terminate, EndEvent is triggered.
4.2 Landscape Event Instances
It is important to distinguish between the definition and an instance of a landscape event.
- The definition is the set of assignments and expressions in the
.lsefile. - Instances are dynamically created and scheduled on the event queue during a simulation.
When an instance is taken off the queue and executed, it initially has no spatial location. The first step is initiation: selecting cells according to EventLocation, NumClusters, and ProbInit. After initiation (and usually before spreading), the instance schedules a new instance for a later time via ReturnTime.
An instance remains active as long as it has at least one active cluster. A cluster remains active as long as it has at least one active cell. A cell is active if it is currently being processed or scheduled to spread. An active cell is terminated either by failing Transitions, or after finishing spreading.
More than one instance of a single landscape event may be active simultaneously — for example, one instance of a logging process may be created for each management unit.
:::note Cell identity The identity of an active cell is determined by the source of its initiation, not by its location. It is therefore possible for more than one active cell to exist simultaneously in the same grid cell (e.g. if a fire spreads to the same cell from two different clusters). If this is undesirable, the landscape event should include state and conditions to prevent it. :::
For brevity, both landscape event definitions and instances are simply referred to as "landscape events" throughout the rest of this documentation.
4.3 Dynamic Context Variables
In addition to the shared state space (global and spatial variables and constants), a landscape event may declare four types of local dynamic context variables:
| Type | Scope | Description | Example |
|---|---|---|---|
| Local variable | Landscape event | Non-spatial variable local to this event (not in the shared state space) | A running tally used only within this event |
| Event variable | Event instance | Unique to each active instance of the event | NumFires — count of fires per storm instance |
| Cluster variable | Cluster | Unique to each active cluster within an instance | FireSize — target size for each individual fire patch |
| Cell variable | Active cell | Unique to each cell on the active front | Intensity — fire intensity at each burning cell |
When a new event instance, cluster, or active cell is created, its respective variable types are dynamically created (with no initial value). When an entity is extinguished, its variables are removed.
Figure 5 — The hierarchical structure of the dynamic state. Each active event has a unique set of event variables and one or more active clusters. Each active cluster has a unique set of cluster variables and one or more active cells. Each active cell has a unique set of cell variables.
(Diagram from original documentation — to be recreated)
SELES handles memory management automatically. Modellers declare variables of the appropriate type and use them in the appropriate contexts; the system handles allocation and destruction. Before their first assignment, dynamic context variables are undefined.
This hierarchical structure allows lower-order entities (e.g. cell level) to act semi-independently while still coordinating with higher-order entities (cluster, event, and global levels).
4.4 Spatio-temporal Contexts of Properties
Each property has two associated contexts:
- The operating context is the context in which the property's main expression is evaluated, along with any preliminary expressions. It reflects the behaviour of the landscape event that led to this point.
- The consequent context arises from evaluating the property, and may result in zero or more new contexts (e.g. specifying that 3 fires will ignite creates 3 active spatial contexts, one at each ignition point).
Property contexts are automatically managed by SELES, letting modellers focus on high-level behaviour rather than technical context management.
The contexts associated with each property in the general process algorithm are:
| Property | Operating Context | Consequent Context |
|---|---|---|
| Initial State | Global | Event Instance (creates first instances) |
| Return Time | Event Instance | Event Instance (schedules processing at future time) |
| Event Location | Event Instance | Spatial (identifies potential initiation cells) |
| Number of Clusters | Event Instance | Active Cell (creates cluster and active cell for each chosen cell) |
| Probability of Initiation | Spatial (potential cells) | Active Cell (creates cluster and active cell for each chosen cell) |
| Transitions | Active Cell | Active Cell (continues) or terminated |
| Spread Time | Active Cell | Active Cell (schedules spreading at future time) |
| Spread Location | Active Cell | Recipient (identifies potential spread cells) |
| Number of Recipients | Active Cell | Active Recipient (creates new active cell for each chosen cell) |
| Probability of Spread | Recipient | Active Recipient (creates new active cell for each chosen cell) |
| End Cluster | Active Cell (last) | — (cluster terminates) |
| End Event | Active Cell (last of last cluster) | — (event instance terminates) |
Figure 6 — Spatio-temporal contexts associated with the property operating context and consequent context, refining the general process algorithm.
(Diagram from original documentation — to be recreated)
4.5 Landscape Event Property Details
This section gives a detailed description of the behaviour of each landscape event property. The following notation is used:
- Q — the simulation engine priority event queue (see Section 2.1).
- S — the set of n variables available in the current context. For spatial contexts, Sᵢⱼ is a vector of n variables containing state variable values at cell (i, j).
Each property is described by:
- Result — the contexts created or modified.
- Default — the behaviour when the property is not defined.
- Context — the operating and consequent contexts; determines which state variables are accessible. Contexts in order from least to most specific: global → event instance → spatial → active cell → recipient → active recipient.
- Description — the property's function and timing.
InitialState
Defines the number of event instances to create at simulation start-up.
- Result: A set of event instances.
- Default: One instance.
- Context:
- Preliminary expressions: global
- Main expression: global
- Consequent expressions: event instance
- Description: The main expression defines the number of event instances to create at simulation start. Preliminary expressions are evaluated once; consequent expressions are evaluated for each new event instance. Event variables are not available in the preliminary context (no instance exists yet). After each instance is created,
ReturnTimeis evaluated to schedule it for future processing.
Figure: InitialState flow — Preliminary expressions → Main expression → for each event instance: Create instance → InitialState consequent expressions → process instance via ReturnTime.
(Diagram from original documentation — to be recreated)
ReturnTime
Defines the interval between creation of new event instances and when they are processed.
- Result: Schedule a new event instance on Q for future processing.
- Default: Schedule the event to be processed exactly once at simulation start-up (
ReturnTime = 0). - Context:
- Preliminary expressions: event instance
- Main expression
rt(S): event instance - Consequent expressions: event instance
- Description: When an event instance is created, the preliminary expressions and main expression
rt(S)are evaluated. The instance is scheduled to be processedrt(S)time units in the future. When taken off Q, consequent expressions are evaluated, thenEventLocationis invoked to begin initiation. Once initiation completes, a new instance is created — its initial variable values are copied from the previous instance. Note: a spreading event instance may not have terminated before the next instance is created.
Figure: ReturnTime flow — Preliminary expressions → Main expression → Schedule on Q → (time passes) → Consequent expressions → Initiation.
(Diagram from original documentation — to be recreated)
EventLocation
Defines the set of potential cells in which an event can initiate.
- Result: A set of spatial locations for potential initiation (
InitRegion). - Default: Every cell in the landscape.
- Context:
- Preliminary expressions: event instance
- Main expression: event instance (must be a region expression)
- Consequent expressions: spatial
- Description: The region returned by the main expression defines the landscape as seen during initiation via
ProbInitandNumClusters. Only cells inInitRegionare candidates for initiation. Preliminary expressions are evaluated once; consequent expressions are evaluated in each cell ofInitRegion. Consequent expressions can refer to layer variables but not active cell variables (active cells have not yet been created at this point).
Figure: EventLocation flow — Preliminary expressions → Main expression → Consequent expressions (for each cell in region) → Initiate cells.
(Diagram from original documentation — to be recreated)
ProbInit
Defines the probability (relative or absolute) that an event will initiate in a particular cell.
- Result: A transient probability surface over
InitRegion, with a floating-point initiation potentialpInitfor each cell. - Default: Every cell in
InitRegionhas value 1.0. - Context:
- Preliminary expressions: spatial
- Main expression
pi(S): spatial - Consequent expressions: active cell
- Description: Preliminary expressions and
pi(S)are evaluated for each cell inInitRegion. The value is normally between 0 and 1 for absolute probabilities. Cluster and active cell variables cannot be referenced in preliminary/main expressions (no active cells exist yet). Consequent expressions are evaluated only in cells where the event actually initiates (determined byNumClusters).
Figure: ProbInit flow — Preliminary expressions (per cell in region) → Main expression (per cell in region) → [cells where event initiates via NumClusters] → Consequent expressions.
(Diagram from original documentation — to be recreated)
NumClusters
Defines the number of clusters (initiation cells) for an event instance.
-
Result: A set of active cells derived from
InitRegionandpInit. -
Default: Each cell in
InitRegionis tested independently usingpInitas an absolute probability — the number of initiating cells is emergent (unbounded). -
Context:
- Preliminary expressions: event instance
- Main expression
nc(S): event instance - Consequent expressions: active cell
-
Description: Once
ProbInithas produced the probability surfacepInit,NumClustersdetermines how many cells to initiate. Cells are selected stochastically fromInitRegionwith relative probabilities frompInit. Consequent expressions for bothNumClustersandProbInitare evaluated in each initiated cell.If
NumClustersis not defined (or evaluates to < 0), cells are selected independently usingpInitas an absolute probability.
Figure: NumClusters flow — Preliminary expressions → Main expression → Select N locations from InitRegion → for each: Create cluster + active cell → NumClusters and ProbInit consequent expressions → Initiate event in cell.
(Diagram from original documentation — to be recreated)
Transitions
Defines whether the event occurs in an active cell.
- Result: Either a continuing or a terminating active cell.
- Default: The event occurs (continues).
- Context:
- Preliminary expressions: active cell
- Main expression
tr(S): active cell (Boolean) - Consequent expressions: active cell
- Description: When an active cell initiates (via initiation or spread), preliminary expressions and
tr(S)are evaluated. Iftr(S)is TRUE (> 0), the event occurs: consequent expressions are evaluated and spreading is attempted (viaSpreadTime). If FALSE, the active cell terminates without spreading or consequent expressions.
Figure: Transitions flow — Preliminary expressions → Main expression → if TRUE: Consequent expressions → Schedule spread; if FALSE: terminate active cell.
(Diagram from original documentation — to be recreated)
SpreadTime
Defines the time between occurrence of an event in a cell and its spread to neighbouring cells.
-
Result: Schedule an active cell on Q for future spread processing.
-
Default: Event does not spread.
-
Context:
- Preliminary expressions: active cell
- Main expression
st(S): active cell - Consequent expressions: active cell
-
Description: After occurrence (
Transitions= TRUE), preliminary expressions are evaluated, thenst(S)determines how far in the future the active cell schedules its spread. After spreading is processed, consequent expressions are evaluated and the active cell terminates.Immediate mode: If
st(S)is negative, spreading bypasses Q and is processed immediately using a temporary internal queue for the cluster. The magnitude orders cells within that queue (e.g. −1 is processed before −2). This allows patches to spread completely before the next cluster initiates. Use with caution: a model that allows immediate spreading repeatedly to the same cell can create infinite loops.
Figure: SpreadTime flow — Preliminary expressions → Main expression → Schedule on Q → (time passes) → Process spreading → Consequent expressions → active cell terminates.
(Diagram from original documentation — to be recreated)
SpreadLocation
Defines the set of potential cells to which an active cell can spread.
- Result: A set of spatial locations for potential spread (
SpreadRegion). - Default: The four cardinal neighbours (north, south, east, west).
- Context:
- Preliminary expressions: active cell
- Main expression: active cell (must be a region expression)
- Consequent expressions: recipient
- Description: The region defines the landscape seen during spread via
SpreadProbandNumRecipients. Only cells inSpreadRegionare spread candidates. Preliminary expressions are evaluated once; consequent expressions in each cell ofSpreadRegion. Consequent expressions can refer to cluster variables and — via theSOURCEprefix — to the source spreading cell's layer and cell variables. Active cell variables of the recipient cells are not available (they have not yet been activated).
Figure: SpreadLocation flow — Preliminary expressions → Main expression → Consequent expressions (for each cell in region) → Spread to cells.
(Diagram from original documentation — to be recreated)
SpreadProb
Defines the probability (relative or absolute) that an active cell will spread to a particular cell.
- Result: A transient spread probability surface over
SpreadRegionwith a floating-point valuepSpreadfor each cell. - Default: Every cell in
SpreadRegionhas value 1.0. - Context:
- Preliminary expressions: recipient
- Main expression
sp(S): recipient - Consequent expressions: active recipient
- Description: Preliminary expressions and
sp(S)are evaluated for each cell inSpreadRegion. Consequent expressions are evaluated only in cells that the active cell actually spreads to (determined byNumRecipients). Since the source spreading cell is still active,SOURCE-prefixed layer and cell variables refer to values at the source. The consequent context (active recipient) additionally includes active cell variables for the newly activated cell.
Figure: SpreadProb flow — Preliminary expressions (per cell in region) → Main expression (per cell in region) → [cells spread to via NumRecipients] → Consequent expressions.
(Diagram from original documentation — to be recreated)
NumRecipients
Defines the number of cells to which to spread.
-
Result: A set of active cells derived from
SpreadRegionandpSpread. -
Default: Each cell in
SpreadRegionis tested independently usingpSpreadas an absolute probability — the number of cells spread to is emergent (unbounded). -
Context:
- Preliminary expressions: active cell
- Main expression
nr(S): active cell - Consequent expressions: active recipient
-
Description: After
SpreadProbhas produced the spread probability surface,NumRecipientsdetermines the target number of cells to spread to. Cells are selected stochastically fromSpreadRegionwith relative probabilities frompSpread. Consequent expressions for bothNumRecipientsandSpreadProbare evaluated in each newly activated cell (active recipient), thenTransitionsis invoked for each new cell.If
NumRecipientsis not defined (or < 0), cells are selected independently usingpSpreadas an absolute probability.
Figure: NumRecipients flow — Preliminary expressions → Main expression → Select N locations from SpreadRegion → for each: Create active cell in same cluster → NumRecipients and SpreadProb consequent expressions → Initiate event in cell.
(Diagram from original documentation — to be recreated)
EndCluster and EndEvent
EndCluster is processed when a cluster terminates (no more active cells in the cluster). EndEvent is processed when an event instance terminates (no more active clusters). In SELES 10, only the preliminary context of these two properties is defined — the main expression is undefined. They provide a finalisation context useful for cleanup or output at the end of a cluster or event instance.