CoupledDEVS

class pypdevs.DEVS.CoupledDEVS(name=None)[source]

Abstract base class for all coupled-DEVS descriptive classes.

__init__(name=None)[source]

Constructor.

Parameters

name – the name of the coupled model, can be None for an automatically generated name

addSubModel(model, location=None)[source]

Adds a specified model to the current coupled model as its child. This is the function that must be used to make distributed simulation possible.

Parameters
  • model – the model to be added as a child

  • location – the location at which the child must run

Returns

model – the model that was created as a child

Changed in version 2.1.3: model can no longer be a string, this was previously a lot more efficient in partial distribution, though this functionality was removed together with the partial distribution functionality.

connectPorts(p1, p2, z=None)[source]

Connects two ports together. The coupling is to begin at p1 and to end at p2.

Parameters
  • p1 – the port at the start of the new connection

  • p2 – the port at the end of the new connection

  • z – the translation function for the events either input-to-input, output-to-input or output-to-output.

disconnectPorts(p1, p2)[source]

Disconnect two ports

Note

If these ports are connected multiple times, only one of them will be removed.

Parameters
  • p1 – the port at the start of the connection

  • p2 – the port at the end of the connection

finalize(name, model_counter, model_ids, locations, select_hierarchy)[source]

Finalize the model hierarchy by doing all pre-simulation configuration

Note

Parameters model_ids and locations are updated by reference.

Parameters
  • name – the name of the hierarchy above

  • model_counter – the model ID counter

  • model_ids – a list with all model_ids and their model

  • locations – dictionary of locations and where every model runs

  • select_hierarchy – hierarchy to perform selections in Classic DEVS

Returns

int – the new model ID counter

flattenConnections()[source]

Flattens the pickling graph, by removing backreference from the ports.

forceSequential()[source]

Force a sequential simulation

getModelLoad(lst)[source]

Fetch the number of atomic models at this model

Parameters

lst – list containing all locations and their current load

Returns

number of atomic models in this subtree, including non-local ones

removeSubModel(model)[source]

Remove a specified model from the current coupled model, only callable while in a simulation.

Parameters

model – the model to remove as a child

select(imm_children)[source]

DEFAULT select function, only used when using Classic DEVS simulation

Parameters

imm_children – list of all children that want to transition

Returns

child – a single child that is allowed to transition

setLocation(location, force=False)[source]

Sets the location of this coupled model and its submodels if they don’t have their own preference.

Parameters
  • location – the location to set

  • force – whether or not to force this location, even if another is already defined

unflattenConnections()[source]

Unflattens the pickling graph, by reconstructing backreference from the ports.