ptolemy.domains.continuous.lib
Class PeriodicSampler
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.domains.continuous.lib.PeriodicSampler
- 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 PeriodicSampler
- extends Transformer
This actor generates discrete events by periodically sampling the input signal.
The sampling rate is given by parameter "samplePeriod", which has default value
0.1. Specifically, if the actor is initialized at time t and the sample
period is T, then the output will have the value of the input
at times t + nT, for all natural numbers n.
This sampler will send to the output the first non-absent input event that occurs
at a sample time. It produces it one microstep later than that input event.
This ensures that the output at microstep 0 is always absent, thus
ensuring continuity from the left. That is, the input is absent prior
to the sample time, so continuity requires that it be absent at
microstep 0 at the sample time. Moreover, this ensures that the
sampler outputs the initial value of the input at the sample time.
This actor has multiport inputs and outputs. Signals in
each input channel are sampled and produced to corresponding output
channel. When there are multiple inputs, the first non-absent input
from each channel is read, and the output is produced at the first
microstep after the last of the inputs became non-absent.
- Since:
- Ptolemy II 8.0
- Version:
- $Id: PeriodicSampler.java 57046 2010-01-27 23:35:53Z 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 |
PeriodicSampler(CompositeEntity container,
java.lang.String name)
Construct an actor in the specified container with the specified
name. |
Method Summary |
java.lang.Object |
clone(Workspace workspace)
Clone this actor into the specified workspace. |
void |
fire()
Generate an output if the current time is one of the sampling
times. |
void |
initialize()
Set the next sampling time as the start time (i.e. the current time). |
boolean |
postfire()
Set the next sampling time and return true. |
void |
preinitialize()
Make sure the actor runs inside a Continuous domain. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, 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 |
samplePeriod
public Parameter samplePeriod
- The parameter for the sampling period. This is a double
whose default value is 0.1.
_inputIsComplete
private boolean _inputIsComplete
- Flag indicating that the record of inputs is complete.
_nextSamplingTime
private Time _nextSamplingTime
- The next sampling time.
_recordedInputs
private Token[] _recordedInputs
- The recorded input data.
PeriodicSampler
public PeriodicSampler(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
- Construct an actor in the specified container with the specified
name. The name must be unique within the container or an exception
is thrown. The container argument must not be null, or a
NullPointerException will be thrown.
The actor can be either dynamic, or not. It must be set at the
construction time and can't be changed thereafter.
A dynamic actor will produce a token at its initialization phase.
- Parameters:
container
- The container of this actor.name
- The actor's name
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If name coincides with
an entity already in the container.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone this actor into the specified workspace. The new actor is
not added to the directory of that workspace (you must do this
yourself if you want it there).
The result is a new actor with the same ports as the original, but
no connections and no container. A container must be set before
much can be done with this actor.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the cloned object.
- Returns:
- A new ComponentEntity.
- Throws:
java.lang.CloneNotSupportedException
- If cloned ports cannot have
as their container the cloned entity (this should not occur), or
if one of the attributes cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- Generate an output if the current time is one of the sampling
times. The value of the event is the value of the input signal at the
current time.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If the transfer of tokens failed.
initialize
public void initialize()
throws IllegalActionException
- Set the next sampling time as the start time (i.e. the current time).
We do not register the start time as a breakpoint, since the
director will fire at the start time any way.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If thrown by the supper class.
postfire
public boolean postfire()
throws IllegalActionException
- Set the next sampling time and return true.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True.
- Throws:
IllegalActionException
- If the superclass throws it.
preinitialize
public void preinitialize()
throws IllegalActionException
- Make sure the actor runs inside a Continuous domain.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- If the director is not
a ContinuousDirector or the parent class throws it.