Class Default

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class Default
    extends TypedAtomicActor
    A Synchronous default operator.

    When the preferred input has a token, then the output is equal to that token. If the preferred input is absent, then the output is equal to the alternate input (whether it is absent or not). This actor is non-strict, in that can produce an output even if alternate input is unknown. Thus, it can be used to break causality loops.

    This actor is inspired by the "default" operator in the synchronous language SIGNAL, and is similar to the "followed by" operator in Lustre. But in the context of the Ptolemy II SR domain, its behavior is deterministic. This is because the Ptolemy II SR domain has a Lustre or Esterel style master clock, and this actor is given the opportunity to fire on each tick of that master clock. In SIGNAL, by contrast, this actor can be used to "upsample" to a higher rate clock; however, without considerable care, its use in SIGNAL results in nondeterminism.

    This actor is typically used in the SR domain, but may also be used inside the Continuous domain.

    P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice, "LUSTRE: A Declarative Language for Programming Synchronous Systems," Conference Record of the 14th Annual ACM Symp. on Principles of Programming Languages, Munich, Germany, January, 1987.

    A. Benveniste and P. Le Guernic, "Hybrid Dynamical Systems Theory and the SIGNAL Language," IEEE Tr. on Automatic Control, Vol. 35, No. 5, pp. 525-546, May 1990.

    Since:
    Ptolemy II 10.0
    Version:
    $Id$
    Author:
    Edward A. Lee
    Pt.AcceptedRating:
    Red (cxh)
    Pt.ProposedRating:
    Yellow (eal)
    • Field Detail

      • preferred

        public TypedIOPort preferred
        The preferred input port. If there is a token here, then that token is produced on the output. Any data type is accepted.
      • alternate

        public TypedIOPort alternate
        The alternate input port. If there is no token on the preferred input port, then the output will equal whatever is here (including absent). Any data type is accepted.
      • output

        public TypedIOPort output
        The output port. The type is greater than or equal to the types of the two input ports.