ptolemy.domains.ct.kernel
Class CTCompositeActor

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.kernel.CompositeEntity
                      extended by ptolemy.actor.CompositeActor
                          extended by ptolemy.actor.TypedCompositeActor
                              extended by ptolemy.domains.ct.kernel.CTCompositeActor
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, CTDynamicActor, CTEventGenerator, CTStatefulActor, CTStepSizeControlActor, CTWaveformGenerator, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
ModalModel, Refinement

public class CTCompositeActor
extends TypedCompositeActor
implements CTEventGenerator, CTStatefulActor, CTStepSizeControlActor, CTDynamicActor, CTWaveformGenerator

A composite actor designed for the CT domain. This class extends TypedCompositeActor and implements the following interfaces: CTDynamicActor, CTEventGenerator, CTStatefulActor, CTStepSizeControlActor, and CTWaveformGenerator.

In the CT domain, normal opaque composite actors are not fired in every iteration. They are only fired in the discrete phase of execution and when they have trigger events. On the other hand, CTCompositeActors are fired in both discrete and continuous phases of execution in each iteration.

The key task of this actor is to implement step-size control methods. If the local director of this actor is an instance of CTTransparentDirector, then any step-size control methods called on this actor will be delegated to the local director. If the local director is not a CTTransparentDirector, the implementations of the step-size control methods do not affect the current step size.

This composite actor should be used when a CT subsystem needs to transfer its step size control information to the outer domain. Typical usage includes CT inside CT or CT inside FSM inside CT.

Since:
Ptolemy II 0.2
Version:
$Id: CTCompositeActor.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Jie Liu, Haiyang Zheng
See Also:
CTDynamicActor, CTEventGenerator, CTStatefulActor, CTStepSizeControlActor, CTWaveformGenerator, CTTransparentDirector, Serialized Form
Accepted Rating:
Green (hyzheng)
Proposed Rating:
Green (hyzheng)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
 
Field Summary
 
Fields inherited from class ptolemy.actor.CompositeActor
_actorFiringListeners, _causalityInterface, _initializables, _notifyingActorFiring, _publishedPorts, _publisherRelations, _stopRequested
 
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
CTCompositeActor()
          Construct a CTCompositeActor in the default workspace with no container and an empty string as its name.
CTCompositeActor(CompositeEntity container, java.lang.String name)
          Create an CTCompositeActor with a name and a container.
CTCompositeActor(Workspace workspace)
          Construct a CTCompositeActor in the specified workspace with no container and an empty string as a name.
 
Method Summary
 boolean containsDynamicActors()
          Return true if this CTCompositeActor contains dynamic actors.
 boolean containsWaveformGenerators()
          Return true if this CTCompositeActor contains waveform generators.
 void emitCurrentStates()
          Call the emitCurrentStates() method of the local director if the local director is an instance of CTTransparentDirector.
 void goToMarkedState()
          Call the goToMarkedState() method of the local director if the local director is an instance of CTTransparentDirector.
 boolean hasCurrentEvent()
          Call the hasCurrentEvent() method of the local director if the local director is an instance of CTTransparentDirector.
 boolean isOutputAccurate()
          Call the isOutputAccurate() method of the local director if the local director is an instance of CTTransparentDirector.
 boolean isStateAccurate()
          Call the isStateAccurate() method of the local director if the local director is an instance of CTTransparentDirector.
 void markState()
          Call the markState() method of the local director if the local director is an instance of CTTransparentDirector.
 double predictedStepSize()
          Call the predictedStepSize() method of the local director if the local director is an instance of CTTransparentDirector.
 boolean prefireDynamicActors()
          Call the prefireDynamicActors() method of the local director if the local director is an instance of CTTransparentDirector.
 double refinedStepSize()
          Call the refinedStepSize() method of the local director if the local director is an instance of CTTransparentDirector.
 
Methods inherited from class ptolemy.actor.TypedCompositeActor
_addEntity, _addPort, _addRelation, _checkTypesFromTo, _typeConstraintsFromTo, newPort, newRelation, resolveTypes, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.CompositeActor
_actorFiring, _actorFiring, _finishedAddEntity, _getPublishedPort, _setDirector, addActorFiringListener, addInitializable, addPiggyback, clone, connectionsChanged, createReceivers, createSchedule, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inferringWidths, inferWidths, initialize, inputPortList, isFireFunctional, isOpaque, isStrict, iterate, linkToPublishedPort, linkToPublishedPort, needsWidthInference, newInsideReceiver, newReceiver, notifyConnectivityChange, outputPortList, postfire, prefire, preinitialize, recordFiring, registerPublisherPort, removeActorFiringListener, removeInitializable, removePiggyback, requestChange, setContainer, setDirector, setManager, stop, stopFire, terminate, unlinkToPublishedPort, unlinkToPublishedPort, unregisterPublisherPort, wrapup
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _recordDecoratedAttributes, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepEntityList, deepGetEntities, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, statistics, uniqueName
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_removePort, connectedPortList, connectedPorts, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, attributeTypeChanged, clone, 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, 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
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Constructor Detail

CTCompositeActor

public CTCompositeActor()
Construct a CTCompositeActor in the default workspace with no container and an empty string as its name. Add the actor to the workspace directory.


CTCompositeActor

public CTCompositeActor(CompositeEntity container,
                        java.lang.String name)
                 throws IllegalActionException,
                        NameDuplicationException
Create an CTCompositeActor with a name and a container. The container argument must not be null, or a NullPointerException will be thrown. This actor will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. Increment the version of the workspace. This actor will have no local director initially, and its executive director will be simply the director of the container.

Parameters:
container - The container actor.
name - The name of this actor.
Throws:
IllegalActionException - If the container is incompatible with this actor.
NameDuplicationException - If the name coincides with an actor already in the container.

CTCompositeActor

public CTCompositeActor(Workspace workspace)
Construct a CTCompositeActor in the specified workspace with no container and an empty string as a name. If the workspace argument is null, then use the default workspace. Increment the version number of the workspace.

Parameters:
workspace - The workspace that will list the actor.
Method Detail

containsDynamicActors

public boolean containsDynamicActors()
Return true if this CTCompositeActor contains dynamic actors.

Returns:
True if this CTCompositeActor contains dynamic actors.

containsWaveformGenerators

public boolean containsWaveformGenerators()
Return true if this CTCompositeActor contains waveform generators.

Returns:
True if this CTCompositeActor contains waveform generators.

emitCurrentStates

public void emitCurrentStates()
                       throws IllegalActionException
Call the emitCurrentStates() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, do nothing.

Specified by:
emitCurrentStates in interface CTDynamicActor
Throws:
IllegalActionException - If tentative states cannot be emitted.

goToMarkedState

public void goToMarkedState()
                     throws IllegalActionException
Call the goToMarkedState() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, do nothing.

Specified by:
goToMarkedState in interface CTStatefulActor
Throws:
IllegalActionException - If there is no marked state.

hasCurrentEvent

public boolean hasCurrentEvent()
Call the hasCurrentEvent() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, return false, indicating that this composite actor does not have an event at the current time.

Specified by:
hasCurrentEvent in interface CTEventGenerator
Returns:
True if there is an event at the current time.

isOutputAccurate

public boolean isOutputAccurate()
Call the isOutputAccurate() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, return true, which indicates the current step size is accurate w.r.t. outputs.

Specified by:
isOutputAccurate in interface CTStepSizeControlActor
Returns:
True if the current step size is accurate w.r.t. outputs.

isStateAccurate

public boolean isStateAccurate()
Call the isStateAccurate() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, return true, which indicates the current step size is accurate w.r.t. the current states.

Specified by:
isStateAccurate in interface CTStepSizeControlActor
Returns:
True if the current step size is accurate w.r.t. the current states.

markState

public void markState()
Call the markState() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, do nothing.

Specified by:
markState in interface CTStatefulActor

predictedStepSize

public double predictedStepSize()
Call the predictedStepSize() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, return java.lang.Double.MAX_VALUE.

Specified by:
predictedStepSize in interface CTStepSizeControlActor
Returns:
The predicted step size.

prefireDynamicActors

public boolean prefireDynamicActors()
                             throws IllegalActionException
Call the prefireDynamicActors() method of the local director if the local director is an instance of CTTransparentDirector. Return true if all dynamic actors are prefired, otherwise, return false. If the local director is not an instance of CTTransparentDirector, return true always.

Returns:
True if all dynamic actors are prefired.
Throws:
IllegalActionException - If the local director throws it.

refinedStepSize

public double refinedStepSize()
Call the refinedStepSize() method of the local director if the local director is an instance of CTTransparentDirector. Otherwise, return the current step size of the executive director.

Specified by:
refinedStepSize in interface CTStepSizeControlActor
Returns:
The refined step size.