public class SmoothZeroCrossingDetector extends TypedAtomicActor
NOTE: This actor currently discards all derivatives of the input higher than the second derivative. Hence, it could miss a zero crossing by a substantial margin if there are higher-order derivatives.
QSSDirector
Entity.ContainedObjectsIterator
Modifier and Type | Field and Description |
---|---|
protected double |
_level
The level threshold this actor detects.
|
StringParameter |
direction
A parameter that can be used to limit the detected level crossings
to rising or falling.
|
Parameter |
errorTolerance
The error tolerance specifying how close the time needs to be to
the zero crossing to produce the output event.
|
TypedIOPort |
input
Input signal.
|
Parameter |
level
The parameter that specifies the level threshold.
|
TypedIOPort |
output
Output event with value 0.0 when the zero crossing occurs.
|
Parameter |
value
The output value to produce when a level-crossing is detected.
|
_typesValid
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
COMPLETED, NOT_READY, STOP_ITERATING
Constructor and Description |
---|
SmoothZeroCrossingDetector(CompositeEntity container,
java.lang.String name)
Construct a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
attributeChanged(Attribute attribute)
Update the attribute if it has been changed.
|
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace and set the type
constraints.
|
void |
fire()
If an input is available and either it equals zero or it has crossed
zero from the most recently seen input, then output 0.0; otherwise, if
an input available and that input is a
SmoothToken with non-zero
derivatives, then predict the time at which a zero crossing will occur
and request a refiring at that time; Otherwise, if no input is available
and current time matches the time of a previous refiring request, then
produce the output 0.0. |
void |
initialize()
Initialize this actor to indicate that no input has yet been provided.
|
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
addInitializable, preinitialize, removeInitializable, wrapup
description, getContainer, getDisplayName, getFullName, getName, getName, setName
getDerivedLevel, getDerivedList, propagateValue
public StringParameter direction
public Parameter errorTolerance
public TypedIOPort input
public Parameter level
public TypedIOPort output
public Parameter value
protected double _level
public SmoothZeroCrossingDetector(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container
- The container.name
- The name.IllegalActionException
- If setting up ports and parameters fails.NameDuplicationException
- If the container already contains an object with this name.public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged
in class NamedObj
attribute
- The attribute that has changed.IllegalActionException
- If the attribute change failed.public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
clone
in class TypedAtomicActor
workspace
- The workspace for the new object.java.lang.CloneNotSupportedException
- If a derived class contains
an attribute that cannot be cloned.NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
public void fire() throws IllegalActionException
SmoothToken
with non-zero
derivatives, then predict the time at which a zero crossing will occur
and request a refiring at that time; Otherwise, if no input is available
and current time matches the time of a previous refiring request, then
produce the output 0.0.fire
in interface Executable
fire
in class AtomicActor<TypedIOPort>
IllegalActionException
- If sending an output fails.public void initialize() throws IllegalActionException
initialize
in interface Initializable
initialize
in class AtomicActor<TypedIOPort>
IllegalActionException
- If the director is not a DEDirector.