Skip to main content

Blocks

In Sedaro, both Agents and Scenarios are made up of blocks. A block represents some discrete component or logical structure, and contains a set of attributes and relationships (collectively referred to as fields) that are used to construct a model. Each field has a name and a value, and some fields may vary over the course of a simulation.

Block Types

Each block has a type, which defines the set of fields on that block. Block types have a hierarchy, where more specific types inherit the fields of their parent type. For instance, the ReactionWheel block type is a subtype of the Actuator type, which is itself a subtype of Component.

Attributes

Attributes are scalar, vector, or compound values. In the case of a compound field, the attribute itself contains further attributes. Attributes often have built-in constraints limiting what values they can take. For example, some scalar floating point attributes are required to always be greater than zero. When an attribute is out of bounds, it will trigger a validation error indicated in the web interface.

Relationships

It is sometimes necessary for a block to refer to other blocks. For instance, a Thruster block refers to a FuelReservoir that it draws fuel from. In Sedaro, these are modeled as relationships. Depending on the relationship, it can be one-to-one, many-to-one, or many-to-many. While a thruster can only draw from one fuel reservoir, a fuel reservoir can be made up of multiple fuel tanks. Relationships may also be dynamic, allowing them to change during the course of a simulation. For instance, a Routine block may change its active subroutine depending on various conditions.