Execution
This class contains nodes for a wide variety of applications. With these nodes it is, for example, possible to
- create loops
- add helper nodes for cleaner graphs
- purge the memory allocated by a graph
- change the number of threads used for the execution of a graph
- print out information to RealFlow's "Messages" window
Some of the "Execution" nodes have certain requirements and we recommend reading "RealFlow's Graphs Guide". There we have prepared a dedicated chapter explaining how to use these nodes.
Nodes
Name | Description |
---|---|
CommandParameterInfo | This node returns the list of parameter names and types of the input command. |
Compound | This node acts as a container of a subgraph. Thus, an additional layer of abstraction is provided. |
CompoundInterface | This node acts as an interface between a compound and its containing graphs. |
Concentrator | This node acts as a passthrough node for as many inputs as desired. However, ALL inputs are ALWAYS evaluated. Evaluation order of the inputs is top to bottom.Take care, that all outputs have an associated input to avoid evaluation time errors. |
DateTimeFromSeconds | This node converts a value in seconds since epoch to every one of its human readable components. |
Evaluator | The Evaluator node is the terminal node that determines which nodes are actually evaluated at graph execution. |
ExecuteCommand | This node executes all the commands with the input Class IDs sequentially. |
For | The For node is a special node that can be used to perform graph iterations. |
GetAllGlobalVariableNames | This node returns all names of actual defined global variables. The result is stored for every allowed type separately. |
GetCurrentDateTime | This node returns the current computer local time. |
GetGraphNumberOfThreads | This node returns the number of threads used for the excecution of the current compound and its children. |
GraphCancel | This node evaluates its input 'in' and then stops the execution of the current graph if the input 'condition' is 'true'. |
GraphInterface | This node acts as an interface between a graph and the rest of RealFlow. |
GraphPurgeMemory | This node clears the memory, messages and timing data stored in the current graph scene nodes and pins. |
HasCommand | This node checks if there are commands in RealFlow with the given Class ID. |
Kernel | The Kernel node is a special node that can be used to perform graph iterations in parallel. |
MemoryUsageInfo | This node outputs the memory usage in kilobytes for the current state of the graph. |
MessagePrint | This node prints a standard RealFlow message in the MessageWindow, using a string representation of the provided input 'value'. |
NodePurgeMemory | This node purges the data stored in the owner of the connected 'input' pin.Nodes that allocate big data structures (like all the Copy nodes) store their data inside the node. |
Pass | This node acts as a passthrough node. The output value is exactly the same as the input. No copy is performed. |
PinPurgeMemory | This node purges the data stored in the connected 'input' pin.Basic types (like Integer or String) store their values in the pins. |
PinSignature | Computes the MD5 signature of the input data. |
PythonCodeExecute | This node executes the input Python source code, but does not return any value. |
Selector | This node allows the user to freely connect its passthrough inputs to its passthrough outputs. Keep in mind that all outputs should have an associated input to avoid evaluation time errors. |
SetGraphNumberOfThreads | This node changes the number of threads used for the current compound and its children behind this nodes evaluation. |
Sleep | This node freezes the graph evaluation for the input 'milisecs' amount of time in miliseconds. |
CommandParameterInfo
This node returns the list of parameter names and types of the input command.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
class id | Integer64 (1) | The Class ID of the command to be checked |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
parameter names | String | The names of the parameters that belong to the input command | |
parameter types | String | The parameter types |
Compound
This node acts as a container of a subgraph. Thus, an additional layer of abstraction is provided.
The Compound node allows the creation of dynamic input/output pins with used-defined names.
If a pin is added to the Compound, an equivalent interface node is created within the contained graph.
CompoundInterface
This node acts as an interface between a compound and its containing graphs.
The CompoundInterface node allows the creation of dynamic input/output pins with user-defined names.
If a pin is added to the CompoundInterface node, a pin with the same name is created in its parent compound.
When a pin is added to the Compound, an equivalent interface node is created in its contained graph.
Concentrator
This node acts as a passthrough node for as many inputs as desired. However, ALL inputs are ALWAYS evaluated. Evaluation order of the inputs is top to bottom.Take care, that all outputs have an associated input to avoid evaluation time errors.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out | PassThrough | The out |
DateTimeFromSeconds
This node converts a value in seconds since epoch to every one of its human readable components.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
total seconds | Integer64 | through | The total number of seconds since epoch to convert |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
year | Integer | The year number in four digit format | |
month | Integer | The month number | |
day | Integer | The month day | |
hour | Integer | The hour in local time | |
minute | Integer | The minute in local time | |
second | Integer | The second in local time | |
gmt | Integer | The local GMT offset | |
through | PassThrough | total seconds | The input 'total seconds' |
Evaluator
The Evaluator node is the terminal node that determines which nodes are actually evaluated at graph execution.
At graph execution, every Evaluator node pin computes the chain of nodes connected to it and executes them in the proper order.
This node accepts the creation of dynamic input/output pins with used-defined names.
Take note that Evaluator nodes can only be located at the root level.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
evaluate | The evaluate |
ExecuteCommand
This node executes all the commands with the input Class IDs sequentially.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
class id | Integer64 | The Class ID of the command to be executed. Keep in mind that most built-in commands are not created when RealFlow is launched on command line mode | |
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
For
The For node is a special node that can be used to perform graph iterations.
A For node must always be inside a Compound node. It cannot be located at the root level.
Nodes - at the same level as the For node - are evaluated as many times as the For condition requires. Thus, a node depending on the For 'currentIndex' output is evaluated for each iteration. If it is connected several times to an evaluator node, it is evaluated accordingly repetitively. This is a limitation yet to be solved.Only one single For node is allowed at the same graph level. Nested For iterations can be performed using nested Compounds, each containing a separate For node.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
start | Integer (1) | The start | |
stop | Integer (1) | The stop | |
step | Integer (1) | The step |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
current index | Integer | The current index |
GetAllGlobalVariableNames
This node returns all names of actual defined global variables. The result is stored for every allowed type separately.
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
bit names | String | The bit names | |
box names | String | The box names | |
distance field names | String | The distance field names | |
image names | String | The image names | |
mesh names | String | The mesh names | |
mesh voxelization names | String | The mesh voxelization names | |
particle voxelization names | String | The particle voxelization names | |
num names | String | The num names | |
scene node names | String | The scene node names | |
string names | String | The string names | |
vector3 field names | String | The vector3 field names | |
graph particles names | String | The graph particles names | |
real field names | String | The real field names | |
spline names | String | The spline names | |
key names | String | The key names | |
curve names | String | The curve names |
GetCurrentDateTime
This node returns the current computer local time.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
year | Integer | The current year number in four digit format | |
month | Integer | The current month number | |
day | Integer | The current month day | |
hour | Integer | The current hour in local time | |
minute | Integer | The current minute in local time | |
second | Integer | The current second in local time | |
gmt | Integer | The local GMT offset | |
total seconds | Integer64 | The current total number of seconds since epoch in local time | |
through | PassThrough | in | The input 'in' |
GetGraphNumberOfThreads
This node returns the number of threads used for the excecution of the current compound and its children.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
threads | Integer | The current number of threads. 0 for default | |
actual threads | Integer | The actual current number of threads | |
through | PassThrough | in | The input 'in' |
GraphCancel
This node evaluates its input 'in' and then stops the execution of the current graph if the input 'condition' is 'true'.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
cancel | Bit (1) | The cancel | |
quiet | Bit (1) | Set to 'true' to cancel graph execution without showing any error | |
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
GraphInterface
This node acts as an interface between a graph and the rest of RealFlow.
The Graph Interface node allows the creation of dynamic output pins with user-defined names and types.
GraphPurgeMemory
This node clears the memory, messages and timing data stored in the current graph scene nodes and pins.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
HasCommand
This node checks if there are commands in RealFlow with the given Class ID.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
class id | Integer64 | The Class ID of the command to be checked |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
mask | Bit | The mask |
Kernel
The Kernel node is a special node that can be used to perform graph iterations in parallel.
If the start value is larger than the stop value, the kernel is not executed (except, if the stop value is negative).
A Kernel node must always be inside a Compound node. It cannot be created at root level.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
array | The array | ||
threads | Integer (1) | The threads | |
start | Integer (1) | The index of the first element of the input to apply the kernel to. If negative, the array is processed from the first value | |
stop | Integer (1) | The index of the last element of the input to apply the kernel to. If negative, the array is processed up to the last element |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
element | The element | ||
thread id | Integer | The thread id | |
index | Integer | The index |
MemoryUsageInfo
This node outputs the memory usage in kilobytes for the current state of the graph.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The pin to query the memory usage from |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
pin kb | Real | Memory usage in kilobytes for the pin connected to 'input' | |
node kb | Real | Memory usage in kilobytes for the node which owns the pin connected to 'input' | |
graph kb | Real | Memory usage in kilobytes for the whole current graph | |
through | PassThrough | in | The input 'in' |
MessagePrint
This node prints a standard RealFlow message in the MessageWindow, using a string representation of the provided input 'value'.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
value | All | through | The value |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | value | The input 'value' |
NodePurgeMemory
This node purges the data stored in the owner of the connected 'input' pin.Nodes that allocate big data structures (like all the Copy nodes) store their data inside the node.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
Pass
This node acts as a passthrough node. The output value is exactly the same as the input. No copy is performed.
A common use of Pass nodes is the reduction of graph cluttering.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
PinPurgeMemory
This node purges the data stored in the connected 'input' pin.Basic types (like Integer or String) store their values in the pins.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
PinSignature
Computes the MD5 signature of the input data.
Basic types return a single value (except String values). Complex types return as many signatures as the input array size.
If something is wrong, the signature is 0xffffffffffffffffffffffffffffffff.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
signature | String | The signature of the input data | |
through | PassThrough | in | The input 'in' |
PythonCodeExecute
This node executes the input Python source code, but does not return any value.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
code | String (1) | The Python source code to be executed | |
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
Selector
This node allows the user to freely connect its passthrough inputs to its passthrough outputs. Keep in mind that all outputs should have an associated input to avoid evaluation time errors.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
in | PassThrough | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
out | PassThrough | The out |
SetGraphNumberOfThreads
This node changes the number of threads used for the current compound and its children behind this nodes evaluation.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
threads | Integer (1) | The desired number of threads. 0 for default | |
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |
Sleep
This node freezes the graph evaluation for the input 'milisecs' amount of time in miliseconds.
Inputs
Name | Types | PassThrough | Description |
---|---|---|---|
milisecs | Integer | The miliseconds to sleep | |
in | PassThrough | through | The in |
Outputs
Name | Types | PassThrough | Description |
---|---|---|---|
through | PassThrough | in | The input 'in' |