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

NameDescription
CommandParameterInfoThis node returns the list of parameter names and types of the input command.
CompoundThis node acts as a container of a subgraph. Thus, an additional layer of abstraction is provided.
CompoundInterfaceThis node acts as an interface between a compound and its containing graphs.
ConcentratorThis 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.
DateTimeFromSecondsThis node converts a value in seconds since epoch to every one of its human readable components.
EvaluatorThe Evaluator node is the terminal node that determines which nodes are actually evaluated at graph execution.
ExecuteCommandThis node executes all the commands with the input Class IDs sequentially.
ForThe For node is a special node that can be used to perform graph iterations.
GetAllGlobalVariableNamesThis node returns all names of actual defined global variables. The result is stored for every allowed type separately.
GetCurrentDateTimeThis node returns the current computer local time.
GetGraphNumberOfThreadsThis node returns the number of threads used for the excecution of the current compound and its children.
GraphCancelThis node evaluates its input 'in' and then stops the execution of the current graph if the input 'condition' is 'true'.
GraphInterfaceThis node acts as an interface between a graph and the rest of RealFlow.
GraphPurgeMemoryThis node clears the memory, messages and timing data stored in the current graph scene nodes and pins.
HasCommandThis node checks if there are commands in RealFlow with the given Class ID.
KernelThe Kernel node is a special node that can be used to perform graph iterations in parallel.
MemoryUsageInfoThis node outputs the memory usage in kilobytes for the current state of the graph.
MessagePrintThis node prints a standard RealFlow message in the MessageWindow, using a string representation of the provided input 'value'.
NodePurgeMemoryThis 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.
PassThis node acts as a passthrough node. The output value is exactly the same as the input. No copy is performed.
PinPurgeMemoryThis node purges the data stored in the connected 'input' pin.Basic types (like Integer or String) store their values in the pins.
PinSignatureComputes the MD5 signature of the input data.
PythonCodeExecuteThis node executes the input Python source code, but does not return any value.
SelectorThis 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.
SetGraphNumberOfThreadsThis node changes the number of threads used for the current compound and its children behind this nodes evaluation.
SleepThis 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

NameTypesPassThroughDescription
class idInteger64 (1) 

The Class ID of the command to be checked

Outputs

NameTypesPassThroughDescription
parameter namesString 

The names of the parameters that belong to the input command

parameter typesString 

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

NameTypesPassThroughDescription
inPassThrough
 Optional

out

The in

Outputs

NameTypesPassThroughDescription
outPassThrough
 Optional

in

The out

 

DateTimeFromSeconds

This node converts a value in seconds since epoch to every one of its human readable components.

Inputs

NameTypesPassThroughDescription
total secondsInteger64through

The total number of seconds since epoch to convert

Outputs

NameTypesPassThroughDescription
yearInteger 

The year number in four digit format

monthInteger 

The month number

dayInteger 

The month day

hourInteger 

The hour in local time

minuteInteger 

The minute in local time

secondInteger 

The second in local time

gmtInteger 

The local GMT offset

throughPassThroughtotal 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

NameTypesPassThroughDescription
evaluate
 Evaluate

Integer
Integer64
Real
Double
Bit
Edit
Static
Browse
Color4
List
Button
CButton
Vector3
Matrix4
Quaternion
ObjectSelector
Mesh
DistanceField
FilePath
Folder
String
Image
Directory
Particles
GraphParticle
Box
Daemon
Object
StandardEmitter
ParticleLegacyMesh
ParticleMesh
ParticleMesh_VDB
HybridoMesh
HybridoMesh_VDB
Camera
HybridoDomain
HybridoEmitter
HybridoMist
MultiBody
MultiJoint
MultiServo
MultiServoPosLinear
MultiServoPosAngular
MultiServoVelLinear
MultiServoVelAngular
IDOC
HybridoSplash
HybridoFoam
HybridoBubbles
HybridoBubblesAndFoam
HybridoWet
HybridoWaterLine
HybridoSplashAndFoam
HybridoWetAndFoam
DyversoDomain
DyversoEmitter
SplineNode
RealFlowGroup
RealFlowNode
ObjectMesh
RealWaveMesh
Vertices
Faces
GridFluidDomainParticles
GridFluidDomainParticle
StandardParticles
StandardParticle
Condition
Vector3Field
ParameterType
Curve
Key
MeshVoxelization
Evaluate
RealField
ParticleVoxelization
MaskField
Spline
ColorGradient

 

The evaluate

 

ExecuteCommand

This node executes all the commands with the input Class IDs sequentially.

Inputs

NameTypesPassThroughDescription
class idInteger64 

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

inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
startInteger (1) 

The start

stopInteger (1) 

The stop

stepInteger (1) 

The step

Outputs

NameTypesPassThroughDescription
current indexInteger 

The current index

 

GetAllGlobalVariableNames

This node returns all names of actual defined global variables. The result is stored for every allowed type separately.

Outputs

NameTypesPassThroughDescription
bit namesString 

The bit names

box namesString 

The box names

distance field namesString 

The distance field names

image namesString 

The image names

mesh namesString 

The mesh names

mesh voxelization namesString 

The mesh voxelization names

particle voxelization namesString 

The particle voxelization names

num namesString 

The num names

scene node namesString 

The scene node names

string namesString 

The string names

vector3 field namesString 

The vector3 field names

graph particles namesString 

The graph particles names

real field namesString 

The real field names

spline namesString 

The spline names

key namesString 

The key names

curve namesString 

The curve names

 

GetCurrentDateTime

This node returns the current computer local time.

Inputs

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
yearInteger 

The current year number in four digit format

monthInteger 

The current month number

dayInteger 

The current month day

hourInteger 

The current hour in local time

minuteInteger 

The current minute in local time

secondInteger 

The current second in local time

gmtInteger 

The local GMT offset

total secondsInteger64 

The current total number of seconds since epoch in local time

throughPassThroughin

The input 'in'

 

GetGraphNumberOfThreads

This node returns the number of threads used for the excecution of the current compound and its children.

Inputs

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
threadsInteger 

The current number of threads. 0 for default

actual threadsInteger 

The actual current number of threads

throughPassThroughin

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

NameTypesPassThroughDescription
cancelBit (1) 

The cancel

quietBit (1) 

Set to 'true' to cancel graph execution without showing any error

inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

The input 'in'

 

HasCommand

This node checks if there are commands in RealFlow with the given Class ID.

Inputs

NameTypesPassThroughDescription
class idInteger64 

The Class ID of the command to be checked

Outputs

NameTypesPassThroughDescription
maskBit 

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

NameTypesPassThroughDescription
array
 Numeric

Integer
Integer64
Real
Vector3
Color4
ColorGradient
Quaternion
Matrix4

 

The array

threadsInteger (1) 

The threads

startInteger (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

stopInteger (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

NameTypesPassThroughDescription
element
 Numeric

Integer
Integer64
Real
Vector3
Color4
ColorGradient
Quaternion
Matrix4

 

The element

thread idInteger 

The thread id

indexInteger 

The index

 

MemoryUsageInfo

This node outputs the memory usage in kilobytes for the current state of the graph.

Inputs

NameTypesPassThroughDescription
inPassThroughthrough

The pin to query the memory usage from

Outputs

NameTypesPassThroughDescription
pin kbReal 

Memory usage in kilobytes for the pin connected to 'input'

node kbReal 

Memory usage in kilobytes for the node which owns the pin connected to 'input'

graph kbReal 

Memory usage in kilobytes for the whole current graph

throughPassThroughin

The input 'in'

 

MessagePrint

This node prints a standard RealFlow message in the MessageWindow, using a string representation of the provided input 'value'.

Inputs

NameTypesPassThroughDescription
valueAllthrough

The value

Outputs

NameTypesPassThroughDescription
throughPassThroughvalue

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

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
signatureString 

The signature of the input data

throughPassThroughin

The input 'in'

 

PythonCodeExecute

This node executes the input Python source code, but does not return any value.

Inputs

NameTypesPassThroughDescription
codeString (1) 

The Python source code to be executed

inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

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

NameTypesPassThroughDescription
inPassThrough
 Optional

out

The in

Outputs

NameTypesPassThroughDescription
outPassThrough
 Optional

in

The out

 

SetGraphNumberOfThreads

This node changes the number of threads used for the current compound and its children behind this nodes evaluation.

Inputs

NameTypesPassThroughDescription
threadsInteger (1) 

The desired number of threads. 0 for default

inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

The input 'in'

 

Sleep

This node freezes the graph evaluation for the input 'milisecs' amount of time in miliseconds.

Inputs

NameTypesPassThroughDescription
milisecsInteger 

The miliseconds to sleep

inPassThroughthrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

The input 'in'