ptolemy.domains.ct.lib
Class DifferentialSystem
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.DifferentialSystem
- 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 DifferentialSystem
- extends TypedCompositeActor
A differential system in the CT domain.
The differential system model implements a system whose behavior
is defined by:
dx/dt = f(x, u, t)
y = g(x, u, t)
x(0) = x0
where x is the state vector, u is the input vector, and y is the output
vector, t is the time. Users must give the name of the variables
by filling in parameters
The actor, upon creation, has no input and no output. Upon filling
in the names in the inputVariableNames and
outputVariableNames parameters, the ports will be created.
The name of the state variables are manually added by filling in
the stateVariableNames parameter.
The state equations and output maps must be manually created by users.
If there are n state variables x1, ...
xn,
then users must create n additional parameters, one
for each state equation. And the parameters must be named as:
"x1_dot", ..., "xn_dot" respectively.
Similarly, if the output ports have name y1, ...,
yr, then users must create additional r
parameters for output maps. These parameters should be named
"y1", ... "yr" respectively.
This actor works like a higher-order function. Upon preinitialization,
the actor will create a subsystem using integrators and expressions.
After that, the actor becomes transparent, and the director
takes over the control of the actors contained by this actor.
- Since:
- Ptolemy II 1.0
- Version:
- $Id: DifferentialSystem.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 |
private void |
_checkParameters()
Check the dimensions of all parameters and ports. |
private void |
_requestInitialization()
Set this composite actor to opaque and request for reinitialization
from the director if there is one. |
void |
attributeChanged(Attribute attribute)
If the argument is the initialState
parameters, check that it is a row vector;
Other sanity checks, like whether a differential equation matches
a state variable name, are done in preinitialize() and run time. |
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 model,
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 |
stateVariableNames
public Parameter stateVariableNames
- The names of the state variables, in an array of strings.
The default is an ArrayToken of an empty String.
initialStates
public Parameter initialStates
- The initial condition for the state variables. This must be
a vector (double matrix with only one row) whose
default value is empty.
_opaque
private boolean _opaque
DifferentialSystem
public DifferentialSystem(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct the composite actor with a name and a container.
This constructor creates the ports, parameters, and the icon.
- Parameters:
container
- The container.name
- The name.
- Throws:
NameDuplicationException
- If another entity already had
this name.
IllegalActionException
- If there was an internal problem.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- If the argument is the initialState
parameters, check that it is a row vector;
Other sanity checks, like whether a differential equation matches
a state variable name, are done in preinitialize() and run time.
- 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 model,
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.
_checkParameters
private void _checkParameters()
throws IllegalActionException
- Check the dimensions of all parameters and ports.
- Throws:
IllegalActionException
- If the dimensions are illegal.
_requestInitialization
private void _requestInitialization()
- Set this composite actor to opaque and request for reinitialization
from the director if there is one.