# AtomicDEVS

class pypdevs.DEVS.AtomicDEVS(name=None)

  Abstract base class for all atomic-DEVS descriptive classes.

  __init__(name=None)

    Constructor for an AtomicDEVS model

    Parameters

      name – name of the model, can be None to have an automatically generated name

  confTransition(inputs)

    DEFAULT Confluent Transition Function.

    Accesses state and elapsed attributes, as well as inputs through the passed dictionary. Returns the new state.

    Note

    Should only write to the state attribute.

    Parameters

      inputs – dictionary containing all ports and their corresponding outputs

    Returns

      state – the new state of the model

  extTransition(inputs)

    DEFAULT External Transition Function.

    Accesses state and elapsed attributes, as well as inputs through the passed dictionary. Returns the new state. The elapsed time is accessible as an attribute (i.e., self.elapsed), see Elapsed time for a detailed explanation.

    Note

    Should only write to the state attribute.

    Parameters

      inputs – dictionary containing all ports and their corresponding outputs

    Returns

      state – the new state of the model

  fetchActivity(time, activities)

    Fetch the activity of the model up to a certain time

    Parameters

      - time – the time up to which the activity should be calculated

      - activities – dictionary containing all activities for the models

  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.

  getModelLoad(lst)

    Add this atomic model to the load of its location

    Parameters

      lst – list containing all locations and their current load

    Returns

      int – number of children in this subtree

  getState(request_time, first_call=True)

    For the distributed termination condition: fetch the state of the model at a certain time

    Parameters

      - request_time – the time (including age!) for which the state should be fetched

      - first_call – whether or not this is the first call of a possible recursive call

    Returns

      state – the state at that time

  intTransition()

    DEFAULT Internal Transition Function.

    Note

    Should only write to the state attribute.

    Returns

      state – the new state of the model

    Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.

  outputFnc()

    DEFAULT Output Function.

    Accesses only state attribute. Returns the output on the different ports as a dictionary.

    Note

    Should not write to any attribute.

    Returns

      dictionary containing output ports as keys and lists of output on that port as value

    Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.

  postActivityCalculation(prevalue)

    DEFAULT post-transition activity fetcher. The returned value will be passed on to the relocator and MUST be an addable (e.g. integer, float, …)

    Parameters

      prevalue – the value returned from the preActivityCalculation method

    Returns

      addable (float, integer, …) – passed to the relocator

  preActivityCalculation()

    DEFAULT pre-transition activity fetcher. The returned value is passed to the postActivityCalculation function

    Returns

      something – passed to the postActivityCalculation

  revert(time, memorize)

    Revert the model to the specified time. All necessary cleanup for this model will be done (fossil collection).

    Parameters

      - time – the time up to which should be reverted

      - memorize – whether or not the saved states should still be kept for memoization

  setGVT(gvt, activities, last_state_only)

    Set the GVT of the model, cleaning up the states vector as required for the time warp algorithm

    Parameters

      - gvt – the new value of the GVT

      - activities – dictionary containing all activities for the models

      - last_state_only – whether or not to only use a single state for activity

  setLocation(location, force=False)

    Sets the location of the atomic DEVS model if it was not already set

    Parameters

      - location – the location to set

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

  timeAdvance()

    DEFAULT Time Advance Function.

    Note

    Should ideally be deterministic, though this is not mandatory for simulation.

    Returns

      the time advance of the model

    Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.

  unflattenConnections()

    Unflattens the picking graph, by reconstructing backreferences from the ports.