ptolemy.domains.sr.lib
Class Default
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.sr.lib.Default
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Default
- extends TypedAtomicActor
A default operator for the SR domain.
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.
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 4.1
- Version:
- $Id: Default.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Edward A. Lee
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
Default(CompositeEntity container,
java.lang.String name)
Construct an actor in the specified container with the specified
name. |
Method Summary |
void |
fire()
If the preferred input is known and present, then its token is
sent to the output port. |
boolean |
isStrict()
Return false. |
void |
preinitialize()
Override the base class to declare that the output
does not depend on the alternate in a firing. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, iterate, newReceiver, outputPortList, postfire, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
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.
Default
public Default(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
- Construct an actor in the specified container with the specified
name.
- Parameters:
container
- The container.name
- The name of this actor within the container.
- Throws:
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the name coincides with
an actor already in the container.
fire
public void fire()
throws IllegalActionException
- If the preferred input is known and present, then its token is
sent to the output port. Otherwise, the output is obtained from
the alternate input port.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If there is no director.
isStrict
public boolean isStrict()
- Return false. This actor is non-strict in that it can produce
an output even if alternate input is unknown.
- Specified by:
isStrict
in interface Executable
- Overrides:
isStrict
in class AtomicActor
- Returns:
- False.
preinitialize
public void preinitialize()
throws IllegalActionException
- Override the base class to declare that the output
does not depend on the alternate in a firing.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- If the superclass throws it.