ptolemy.domains.ct.lib
Class ContinuousTransferFunction
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.kernel.CompositeEntity
ptolemy.actor.CompositeActor
ptolemy.actor.TypedCompositeActor
ptolemy.domains.ct.lib.ContinuousTransferFunction
- 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 ContinuousTransferFunction
- extends TypedCompositeActor
A transfer function in the continuous time domain.
This actor implements a transfer function where the single input (u) and
single output (y) can be expressed in (Laplace) transfer function
form as the following equation:
y(s) b(1)*s^(m-1) + b(2)*s^(m-2) + ... + b(m)
----- = -------------------------------------------
u(s) a(1)*s^(n-1) + a(2)*s^(n-2) + ... + a(n)
where m and n are the number of numerator and denominator coefficients,
respectively. This actors has two parameters -- numerator and denominator --
containing the coefficients of the numerator and denominator in
descending powers of s. These coefficients are double numbers.
The order of the denominator (n) must be greater
than or equal to the order of the numerator (m).
This actor extends TypedCompositeActor and works as a higher-order function.
Whenever the parameters are changed, the actor will build a transparent
subsystem inside it using integrators, adders, and scales. This is called
a realization of the transfer function. Notice that there are infinite
number of realizations of a transfer function, and they are equivalent if and
only if the initial conditions are all zero. Here we choose the controllable
canonical form and preset all initial states of the integrators to zero.
If you need to set arbitrary initial
conditions you have to use the state-space representation, for example,
use the LinearStateSpace actor.
- Since:
- Ptolemy II 1.0
- Version:
- $Id: ContinuousTransferFunction.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Jie Liu
- See Also:
CTBaseIntegrator
,
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 |
Method Summary |
void |
attributeChanged(Attribute attribute)
If the argument is the numerator or the denominator
parameters, request for initialization from the director if
there is one. |
Director |
getDirector()
Return the executive director, regardless what isOpaque returns. |
boolean |
isOpaque()
Return the opaqueness of this composite actor. |
void |
preinitialize()
Sanity check the parameters; if the parameters are legal
create a continuous-time subsystem that implement the transfer
function, preinitialize all the actors in the subsystem,
and set the opaqueness of this actor to true. |
void |
wrapup()
Set the opaqueness to true and wrapup. |
Methods inherited from class ptolemy.actor.CompositeActor |
_actorFiring, _actorFiring, _finishedAddEntity, _getPublishedPort, _setDirector, addActorFiringListener, addInitializable, addPiggyback, clone, connectionsChanged, createReceivers, createSchedule, fire, getCausalityInterface, getExecutiveDirector, getManager, inferringWidths, inferWidths, initialize, inputPortList, isFireFunctional, isStrict, iterate, linkToPublishedPort, linkToPublishedPort, needsWidthInference, newInsideReceiver, newReceiver, notifyConnectivityChange, outputPortList, postfire, prefire, recordFiring, registerPublisherPort, removeActorFiringListener, removeInitializable, removePiggyback, requestChange, setContainer, setDirector, setManager, stop, stopFire, terminate, unlinkToPublishedPort, unlinkToPublishedPort, unregisterPublisherPort |
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.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, 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 |
input
public TypedIOPort input
- Single input port.
output
public TypedIOPort output
- Single output port.
numerator
public Parameter numerator
- The coefficients of the numerator, containing an array of
DoubleTokens.
The default value is {1.0}.
denominator
public Parameter denominator
- The coefficients of the denominator, containing an array
of DoubleTokens.
The array must have a length greater
than or equal to the length of the numerator.
The default value is {1.0}.
_opaque
private boolean _opaque
ContinuousTransferFunction
public ContinuousTransferFunction(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct the composite actor with a name and a container.
- Parameters:
container
- The container.name
- The name.
- Throws:
NameDuplicationException
- If another entity already had
this name.
IllegalActionException
- If there was an internal problem.- See Also:
CTBaseIntegrator
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- If the argument is the numerator or the denominator
parameters, request for initialization from the director if
there is one. Also check that the denominator vector
cannot start with 0.
Other sanity checks, like that the denominator must have a higher
order than that of the numerator, and that the first element of the
denominator should not be zero, are done in the preinitialize()
method.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the numerator and the
denominator matrix is not a row vector.
getDirector
public Director getDirector()
- Return the executive director, regardless what isOpaque returns.
- Specified by:
getDirector
in interface Actor
- Overrides:
getDirector
in class CompositeActor
- Returns:
- The director responsible for invocation of inside actors.
- See Also:
CompositeActor.setDirector(Director)
isOpaque
public boolean isOpaque()
- Return the opaqueness of this composite actor. This actor is
opaque if it has not been preinitialized after creation or
changes of parameters. Otherwise, it is not opaque.
- Overrides:
isOpaque
in class CompositeActor
- Returns:
- True if the entity is opaque.
- See Also:
CompositeEntity
preinitialize
public void preinitialize()
throws IllegalActionException
- Sanity check the parameters; if the parameters are legal
create a continuous-time subsystem that implement the transfer
function, preinitialize all the actors in the subsystem,
and set the opaqueness of this actor to true.
This method need the write access on the workspace.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class CompositeActor
- Throws:
IllegalActionException
- If there is no CTDirector,
or any contained actors throw it in its preinitialize() method
.
wrapup
public void wrapup()
throws IllegalActionException
- Set the opaqueness to true and wrapup.
- Specified by:
wrapup
in interface Initializable
- Overrides:
wrapup
in class CompositeActor
- Throws:
IllegalActionException
- If there is no director.