public class LevelCrossingDetector extends TypedAtomicActor implements ContinuousStepSizeController
This actor has a one microstep delay before it will produce an output. That is, when a level crossing is detected, the actor requests a refiring in the next microstep at the current time, and only in that refiring produces the output. This ensures that the output satisfies the piecewise continuity constraint. It is always absent at microstep 0.
This actor will not produce an event at the time of the first firing unless there is a level crossing discontinuity at that time.
| Red (hyzheng) |
| Yellow (hyzheng) |
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 value of a continuous
input needs to be to the specified level to produce the output event.
|
Parameter |
level
The parameter that specifies the level threshold.
|
TypedIOPort |
output
The output port.
|
TypedIOPort |
trigger
The trigger port.
|
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, LINKSCOMPLETED, NOT_READY, STOP_ITERATING| Constructor and Description |
|---|
LevelCrossingDetector(CompositeEntity container,
java.lang.String name)
Construct an actor in the specified container with the specified
name.
|
| 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.
|
void |
declareDelayDependency()
Declare that the output does not depend on the input in a firing.
|
void |
fire()
Detect whether the current input compared to the input
on the last iteration indicates that a level crossing in the
appropriate direction has occurred, if the time is within
errorTolerance of the time at which the crossing occurs.
|
void |
initialize()
Initialize the execution.
|
boolean |
isStepSizeAccurate()
Return false if with the current step size we miss a level crossing.
|
boolean |
isStrict()
Return false.
|
boolean |
postfire()
Prepare for the next iteration, by making the current trigger
token to be the history trigger token.
|
void |
preinitialize()
Make sure the actor runs with a ContinuousDirector.
|
double |
refinedStepSize()
Return the refined step size if there is a missed event,
otherwise return the current step size.
|
double |
suggestedStepSize()
Return the maximum Double value.
|
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, iterate, newReceiver, outputPortList, prefire, 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, workspaceequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcreateReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortListisFireFunctional, iterate, prefire, stop, stopFire, terminateaddInitializable, removeInitializable, wrapupdescription, getContainer, getDisplayName, getFullName, getName, getName, setNamegetDerivedLevel, getDerivedList, propagateValuepublic StringParameter direction
public Parameter errorTolerance
public Parameter level
public Parameter value
public TypedIOPort output
public TypedIOPort trigger
protected double _level
public LevelCrossingDetector(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container - The subsystem that this actor is lived inname - The actor's nameIllegalActionException - If the entity cannot be contained
by the proposed container.NameDuplicationException - If name coincides with
an entity already in the container.public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged in class NamedObjattribute - 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 TypedAtomicActorworkspace - 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 declareDelayDependency()
throws IllegalActionException
declareDelayDependency in class AtomicActor<TypedIOPort>IllegalActionException - If the causality interface
cannot be computed.AtomicActor.getCausalityInterface()public void fire()
throws IllegalActionException
fire in interface Executablefire in class AtomicActor<TypedIOPort>IllegalActionException - If it cannot get a token from the trigger
port or cannot send a token through the output port.public void initialize()
throws IllegalActionException
initialize in interface Initializableinitialize in class AtomicActor<TypedIOPort>IllegalActionException - If thrown by the super class.public boolean isStepSizeAccurate()
isStepSizeAccurate in interface ContinuousStepSizeControllerpublic boolean isStrict()
isStrict in interface ExecutableisStrict in class AtomicActor<TypedIOPort>public boolean postfire()
throws IllegalActionException
postfire in interface Executablepostfire in class AtomicActor<TypedIOPort>IllegalActionException - If thrown by the super class.public void preinitialize()
throws IllegalActionException
preinitialize in interface Initializablepreinitialize in class AtomicActor<TypedIOPort>IllegalActionException - If the director is not
a ContinuousDirector or the parent class throws it.public double refinedStepSize()
refinedStepSize in interface ContinuousStepSizeControllerpublic double suggestedStepSize()
suggestedStepSize in interface ContinuousStepSizeController