Reaction

interface Reaction<T> : Actionable<T>

Parameters

The type which describes the concentration of a molecule

A generic reaction. Every reaction in the system must implement this interface.

Properties

Link copied to clipboard
abstract var actions: List<Action<T>>

The list of Actions of the Reaction. Please be careful when you modify this list.

Link copied to clipboard
abstract var conditions: List<Condition<T>>

The list of Conditions of the Reaction. Please be careful when you modify this list.

Link copied to clipboard
abstract val inboundDependencies: ListSet<out Dependency>
Link copied to clipboard
abstract val inputContext: Context

The widest Context among Conditions, namely the smallest Context in which the Reaction can read informations.

Link copied to clipboard
abstract val node: Node<T>
Link copied to clipboard
abstract val outboundDependencies: ListSet<out Dependency>
Link copied to clipboard
abstract val outputContext: Context

The widest Context among Actions, namely the smallest context in which the Reaction can do modifications.

Link copied to clipboard
open val rate: Double

Returns the speed of this Reaction. It is an average number, and can potentially change during the simulation, depending on the implementation.

Link copied to clipboard
open val tau: Time
Link copied to clipboard

Functions

Link copied to clipboard
abstract fun canExecute(): Boolean
Link copied to clipboard
abstract fun cloneOnNewNode(node: Node<T>, currentTime: Time): Reaction<T>

This method allows to clone this reaction on a new node. It may result useful to support runtime creation of nodes with the same reaction programming, e.g. for morphogenesis.

Link copied to clipboard
abstract operator fun compareTo(other: Actionable<T>): Int
Link copied to clipboard
abstract fun execute()

Executes the reactions.

Link copied to clipboard
abstract fun initializationComplete(atTime: Time, environment: Environment<T, *>)

This method is called when the environment has completed its initialization. Can be used by this reaction to compute its next execution time - in case such computation requires an inspection of the environment.

Link copied to clipboard
abstract fun update(currentTime: Time, hasBeenExecuted: Boolean, environment: Environment<T, *>)

Updates the scheduling of this reaction.