GenericNode

open class GenericNode<T>(val incarnation: Incarnation<T, *>, val environment: Environment<T, *>, val id: Int = idFromEnv(environment), val reactions: MutableList<Reaction<T>> = ArrayList(), val molecules: MutableMap<Molecule, T> = LinkedHashMap(), val properties: MutableList<NodeProperty<T>> = ArrayList()) : Node<T>

This class realizes an abstract node. You may extend it to realize your own nodes.

Parameters

concentration type

Inheritors

Constructors

Link copied to clipboard
constructor(environment: Environment<T, *>)
constructor(incarnation: Incarnation<T, *>, environment: Environment<T, *>, id: Int = idFromEnv(environment), reactions: MutableList<Reaction<T>> = ArrayList(), molecules: MutableMap<Molecule, T> = LinkedHashMap(), properties: MutableList<NodeProperty<T>> = ArrayList())

Properties

Link copied to clipboard
open override val contents: Map<Molecule, T>
Link copied to clipboard

The environment in which the node is places.

Link copied to clipboard
override val id: Int
Link copied to clipboard

simulation incarnation.

Link copied to clipboard
open override val moleculeCount: Int
Link copied to clipboard

The node's molecules.

Link copied to clipboard
Link copied to clipboard

This method allows to access all the reaction of the node.

Functions

Link copied to clipboard
override fun addProperty(nodeProperty: NodeProperty<T>)

Adds a capability to the node.

Link copied to clipboard
override fun addReaction(reactionToAdd: Reaction<T>)

Adds a reaction to this node. The reaction is added only in the node, but not in the it.unibo.alchemist.core.Simulation scheduler, so it will never be executed. To add the reaction also in the scheduler (and start to execute it), you have to call also the method it.unibo.alchemist.core.Simulation.reactionAdded.

Link copied to clipboard
open fun <C : NodeProperty<T>> asProperty(superType: Class<C>): C
open fun <C : NodeProperty<T>> asProperty(superType: KClass<C>): C

returns a NodeProperty of the provided superType.

Link copied to clipboard
inline fun <T, C : NodeProperty<T>> Node<T>.asProperty(): C

returns a NodeProperty of the provided type C.

Link copied to clipboard
open fun <C : NodeProperty<T>> asPropertyOrNull(superType: Class<in C>): C?
open fun <C : NodeProperty<T>> asPropertyOrNull(superType: KClass<in C>): C?

returns a NodeProperty of the provided superType.

Link copied to clipboard
inline fun <T, C : NodeProperty<T>> Node<T>.asPropertyOrNull(): C?

returns a NodeProperty of the provided type C or null if the node does not have a compatible property.

Link copied to clipboard
open override fun cloneNode(currentTime: Time): Node<T>

Creates a new Node which is a clone of the current Node. The new Node will have all the current Node's properties, such as reactions and molecules, but it will also have a different ID.

Link copied to clipboard
operator override fun compareTo(other: Node<T>): Int
Link copied to clipboard
open operator override fun contains(molecule: Molecule): Boolean

Tests whether a node contains a Molecule.

Link copied to clipboard
operator override fun equals(other: Any?): Boolean
Link copied to clipboard
override fun forEach(action: Consumer<in Reaction<T>>)

Performs an action for every reaction.

Link copied to clipboard
open override fun getConcentration(molecule: Molecule): T

Calculates the concentration of a molecule.

Link copied to clipboard
override fun hashCode(): Int
Link copied to clipboard
operator override fun iterator(): Iterator<Reaction<T>>
Link copied to clipboard
fun <R> Iterable<R>.randomElement(randomGenerator: <Error class: unknown class>): R

Returns a random element of the Iterable using the provided randomGenerator.

Link copied to clipboard
override fun removeConcentration(moleculeToRemove: Molecule)
Link copied to clipboard
override fun removeReaction(reactionToRemove: Reaction<T>)

Removes a reaction from this node. The reaction is removed only in the node, but not in the it.unibo.alchemist.core.Simulation scheduler, so the scheduler will continue to execute the reaction. To remove the reaction also in the scheduler (and stop to execute it), you have to call also the method it.unibo.alchemist.core.Simulation.reactionRemoved.

Link copied to clipboard
open override fun setConcentration(molecule: Molecule, concentration: T)

Sets the concentration of mol to c.

Link copied to clipboard
fun <R> Iterable<R>.shuffled(randomGenerator: <Error class: unknown class>): Iterable<R>

Fisher–Yates shuffle algorithm using a RandomGenerator. More information on Wikipedia.

Link copied to clipboard
override fun spliterator(): Spliterator<Reaction<T>>

Returns the reactions.

Link copied to clipboard
Link copied to clipboard
fun <T, P : Position<out P>, TS : Any, PS : PositionSurrogate> Node<T>.toNodeSurrogate(environment: Environment<T, P>, toConcentrationSurrogate: (T) -> TS, toPositionSurrogate: (P) -> PS): NodeSurrogate<TS, PS>
Link copied to clipboard
open override fun toString(): String