ptolemy.domains.de.lib
Class Integrator
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.de.kernel.DEActor
ptolemy.domains.de.lib.DETransformer
ptolemy.domains.de.lib.Integrator
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, SequenceActor, TimedActor, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Integrator
- extends DETransformer
Output the discrete integral of the input. Inputs are multiplied by the time
gap from the previous input and accumulated. Output is not generated
until two inputs have been consumed.
The output type of this actor is forced to be double.
In postfire(), if an event is present on the reset port, this
actor resets to its initial state, and will not output until two
subsequent inputs have been consumed. This is useful if the input signal is
switched on and off, in which case the time gap between events becomes large
and would otherwise effect the value of the integral.
The integrator performs linear interpolation between input events,
where the output of the integrator follows the equation
y[n] = y[n-1] + (x[n-1] + x[n])*dt/2 where dt is the time
differential between events. This equates to the trapezoidal method of
approximating a Riemann integral.
- Since:
- Ptolemy II 8.0
- Version:
- $Id: Integrator.java 59203 2010-09-23 21:41:27Z cxh $
- Author:
- Jeff C. Jensen
- See Also:
Accumulator
,
Serialized Form
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 |
Integrator(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
Consume at most one token from the input port and output
the average of it and the previous input (linear interpolation),
multiplied by the time gap between the two events. |
void |
initialize()
Reset to indicate that no input has yet been seen. |
boolean |
postfire()
Record the most recent input as the latest input. |
protected void |
resetAccumulation()
Reset value of the accumulator to either an initial value or null. |
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, preinitialize, 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 |
reset
public TypedIOPort reset
- The reset port, which has undeclared type. If this port
receives a token, this actor resets to its initial state,
and no output is generated until two inputs have been received.
initialValue
public Parameter initialValue
- The value produced by the actor on its first iteration.
The default value of this parameter is the double 0.0.
_currentInput
private TimedEvent _currentInput
_lastInput
private TimedEvent _lastInput
_accumulated
private Token _accumulated
Integrator
public Integrator(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone the actor into the specified workspace. This calls the
base class and then sets the ports.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class has
has an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- Consume at most one token from the input port and output
the average of it and the previous input (linear interpolation),
multiplied by the time gap between the two events.
If there has been no previous iteration, no output is sent unless
an initial token has been set.
If there is no input, then produce no output.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If subtraction or division is not
supported by the supplied tokens.
initialize
public void initialize()
throws IllegalActionException
- Reset to indicate that no input has yet been seen.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the parent class throws it.
postfire
public boolean postfire()
throws IllegalActionException
- Record the most recent input as the latest input. If a reset
event has been received, process it here.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException
- If the base class throws it.
resetAccumulation
protected void resetAccumulation()
throws IllegalActionException
- Reset value of the accumulator to either an initial value or null.
- Throws:
IllegalActionException
- If the base class throws it