home home aetion-technologies

Compositional simulation Our simulator is a system that enables the definition of a library of components, entities, and the ways in which they can be conjoined, the relations. The relations mediate the interactions of the parts of a composite entity. Entities and relations have state that they carry as simulation time progresses. Behavior is entirely local: entities carry rules that govern their state and that of their parts, and relations carry rules that govern their state and that of the entities they relate. Rules are typically in the form of mathematical equations that constrain the state variables, with applicability that depends on predicates.

So, the basic framework includes entities and relations, each of which may specialize multiple superclasses. Entities may have parts, which are entities linked by relations. Both entities and relations have attributes, which are like variables, and behavior, which contains equations that constrain the attributes' values. The equations may be conditionally-applicable, which is clearly valuable for modeling a system component's failure modes. An entity's behavior is in terms of its attributes and those of its parts. A relation's behavior is in terms of its attributes and those of the entities it relates.

An entity's behavior may be supplied by external programs, thus allowing the simulator to be used to glue multiple external simulators together and to simulate the remaining parts of the system.

Constraint propagation The simulation proceeds through time in a step-wise fashion (derivatives and integrals with respect to time being handled numerically), dynamically reasoning from independent to dependent variables.

Our simulator deduces what it can as it reasons from attribute value to attribute value, and timestep to timestep, based on the behavior, but it does not demand to be able to completely solve for every variable. It can therefore be used to extract predictions from partially-specified situations.

Question-directed The simulator stops when the specified questions are answered. The compositional nature of the simulator's models means that it is natural to think of simulated artifacts being separate from their environment and monitoring equipment, with relations mediating the interactions between them. This means that one can vary the environment and monitoring equipment with which a simulated artifact is conjoined to ask different questions of the artifact.

Example Part of a model of a simple water kettle might look like:

entity Kettle {

 parts
   water : Body_of_Water;
   heating_element : Heater;

 relations
   water_in_kettle : Heater_heats_Liquid(heating_element, water); }

entity Body_of_Liquid {

  attributes
    shc : Number joule kelvin-1 gram-1;
    temperature : Number kelvin;
    volume : Number meter3;
    density : Number gram meter-3;
    weight : Number gram;
    thermal_capacity : Number joule kelvin-1;

  behavior
    weight = density * volume;
    thermal_capacity = weight * shc; }

entity Body_of_Water {

  superclasses Body_of_Liquid;

  behavior
    shc = 4.1868 [joule kelvin-1 gram-1];
    density = 1 [kilo gram litre-1]; }

entity Heater {

  attributes
    power : Number watt;
    target_temperature : Number kelvin;
    thermostat_state : String;

  behavior
    thermostat_state == off => power = 0 [kilo watt];
    thermostat_state == on => power = 2 [kilo watt]; }

relation Heater_heats_Liquid {

  participants
    heater : Heater;
    liquid : Body_of_Liquid;

  behavior
    liquid.temperature < heater.target_temperature
      => heater.thermostat_state = on;
    liquid.temperature >= heater.target_temperature
      => heater.thermostat_state = off;
    newdiff liquid.temperature = 
      heater.power / liquid.thermal_capacity; }

See how our modelling and simulation techniques complement our other technologies here.