# CoupledDEVS

class pypdevs.DEVS.CoupledDEVS(name=None)

  Abstract base class for all coupled-DEVS descriptive classes.

  __init__(name=None)

    Constructor.

    Parameters

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

  addSubModel(model, location=None)

    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)

    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)

    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)

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

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

  forceSequential()

    Force a sequential simulation

  getModelLoad(lst)

    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)

    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)

    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)

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

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