Drake
DiagramContext< T > Class Template Reference

The DiagramContext is a container for all of the data necessary to uniquely determine the computations performed by a Diagram. More...

#include <drake/systems/framework/diagram_context.h>

Inheritance diagram for DiagramContext< T >:
[legend]
Collaboration diagram for DiagramContext< T >:
[legend]

Public Types

typedef int SystemIndex
 
typedef int PortIndex
 
typedef std::pair< SystemIndex, PortIndexPortIdentifier
 

Public Member Functions

 DiagramContext (int num_subsystems)
 Constructs a DiagramContext with the given num_subsystems, which is final: you cannot resize a DiagramContext after construction. More...
 
void AddSystem (SystemIndex index, std::unique_ptr< Context< T >> context, std::unique_ptr< SystemOutput< T >> output)
 Declares a new subsystem in the DiagramContext. More...
 
void ExportInput (const PortIdentifier &id)
 Declares that a particular input port of a particular subsystem is an input to the entire Diagram that allocates this Context. More...
 
void Connect (const PortIdentifier &src, const PortIdentifier &dest)
 Declares that the output port specified by src is connected to the input port specified by dest. More...
 
void MakeState ()
 Generates the state vector for the entire diagram by wrapping the states of all the constituent diagrams. More...
 
void MakeParameters ()
 Generates the parameters for the entire diagram by wrapping the parameters of all the constituent Systems. More...
 
SystemOutput< T > * GetSubsystemOutput (SystemIndex index) const
 Returns the output structure for a given constituent system at index. More...
 
const Context< T > & GetSubsystemContext (SystemIndex index) const
 Returns the context structure for a given constituent system index. More...
 
Context< T > & GetMutableSubsystemContext (SystemIndex index)
 Returns the context structure for a given subsystem index. More...
 
void set_time (const T &time_sec) override
 Recursively sets the time on this context and all subcontexts. More...
 
int get_num_input_ports () const override
 Returns the number of input ports. More...
 
void SetInputPortValue (int index, std::unique_ptr< InputPortValue > port) override
 Connects the input port at index to the value source port_value. More...
 
const State< T > & get_state () const override
 
State< T > * get_mutable_state () override
 
const Parameters< T > & get_parameters () const final
 
Parameters< T > & get_mutable_parameters () final
 
Does not allow copy, move, or assignment
 DiagramContext (const DiagramContext &)=delete
 
DiagramContextoperator= (const DiagramContext &)=delete
 
 DiagramContext (DiagramContext &&)=delete
 
DiagramContextoperator= (DiagramContext &&)=delete
 
- Public Member Functions inherited from Context< T >
 Context ()=default
 
virtual ~Context ()=default
 
const T & get_time () const
 Returns the current time in seconds. More...
 
bool is_stateless () const
 Returns true if the Context has no state. More...
 
bool has_only_continuous_state () const
 Returns true if the Context has continuous state, but no discrete or abstract state. More...
 
bool has_only_discrete_state () const
 Returns true if the Context has discrete state, but no continuous or abstract state. More...
 
int get_num_total_states () const
 Returns the total dimension of all of the basic vector states (as if they were muxed). More...
 
void set_continuous_state (std::unique_ptr< ContinuousState< T >> xc)
 Sets the continuous state to xc, deleting whatever was there before. More...
 
ContinuousState< T > * get_mutable_continuous_state ()
 Returns a mutable pointer to the continuous component of the state, which may be of size zero. More...
 
VectorBase< T > * get_mutable_continuous_state_vector ()
 Returns a mutable pointer to the continuous state, devoid of second-order structure. More...
 
const ContinuousState< T > * get_continuous_state () const
 Returns a const pointer to the continuous component of the state, which may be of size zero. More...
 
const VectorBase< T > & get_continuous_state_vector () const
 Returns a reference to the continuous state vector, devoid of second-order structure. More...
 
int get_num_discrete_state_groups () const
 Returns the number of elements in the discrete state. More...
 
const DiscreteValues< T > * get_discrete_state () const
 
const VectorBase< T > & get_discrete_state_vector () const
 Returns a reference to the discrete state vector. More...
 
DiscreteValues< T > * get_mutable_discrete_state ()
 Returns a mutable pointer to the discrete component of the state, which may be of size zero. More...
 
BasicVector< T > * get_mutable_discrete_state (int index)
 Returns a mutable pointer to element index of the discrete state. More...
 
void set_discrete_state (std::unique_ptr< DiscreteValues< T >> xd)
 Sets the discrete state to xd, deleting whatever was there before. More...
 
const BasicVector< T > * get_discrete_state (int index) const
 Returns a const pointer to the discrete component of the state at index. More...
 
int get_num_abstract_state_groups () const
 Returns the number of elements in the abstract state. More...
 
const AbstractValuesget_abstract_state () const
 Returns a pointer to the abstract component of the state, which may be of size zero. More...
 
AbstractValuesget_mutable_abstract_state ()
 Returns a mutable pointer to the abstract component of the state, which may be of size zero. More...
 
template<typename U >
U & get_mutable_abstract_state (int index)
 Returns a mutable pointer to element index of the abstract state. More...
 
void set_abstract_state (std::unique_ptr< AbstractValues > xa)
 Sets the abstract state to xa, deleting whatever was there before. More...
 
template<typename U >
const U & get_abstract_state (int index) const
 Returns a const reference to the abstract component of the state at index. More...
 
void FixInputPort (int index, std::unique_ptr< BasicVector< T >> value)
 Connects the input port at index to a FreestandingInputPortValue with the given vector value. More...
 
void FixInputPort (int index, std::unique_ptr< AbstractValue > value)
 Connects the input port at index to a FreestandingInputPortValue with the given abstract value. More...
 
FreestandingInputPortValueFixInputPort (int index, const Eigen::Ref< const VectorX< T >> &data)
 Connects the input port at index to a FreestandingInputPortValue with the given vector value. More...
 
const InputPortValueEvalInputPort (const detail::InputPortEvaluatorInterface< T > *evaluator, const InputPortDescriptor< T > &descriptor) const
 Evaluates and returns the value of the input port identified by descriptor, using the given evaluator, which should be the Diagram containing the System that allocated this Context. More...
 
const BasicVector< T > * EvalVectorInput (const detail::InputPortEvaluatorInterface< T > *evaluator, const InputPortDescriptor< T > &descriptor) const
 Evaluates and returns the vector value of the input port with the given descriptor. More...
 
const AbstractValueEvalAbstractInput (const detail::InputPortEvaluatorInterface< T > *evaluator, const InputPortDescriptor< T > &descriptor) const
 Evaluates and returns the abstract value of the input port with the given descriptor. More...
 
template<typename V >
const V * EvalInputValue (const detail::InputPortEvaluatorInterface< T > *evaluator, const InputPortDescriptor< T > &descriptor) const
 Evaluates and returns the data of the input port at index. More...
 
int num_numeric_parameters () const
 Returns the number of vector-valued parameters. More...
 
const BasicVector< T > * get_numeric_parameter (int index) const
 Returns a const pointer to the vector-valued parameter at index. More...
 
BasicVector< T > * get_mutable_numeric_parameter (int index)
 Returns a mutable pointer to element index of the vector-valued parameters. More...
 
int num_abstract_parameters () const
 Returns the number of abstract-valued parameters. More...
 
const AbstractValueget_abstract_parameter (int index) const
 Returns a const reference to the abstract-valued parameter at index. More...
 
AbstractValueget_mutable_abstract_parameter (int index)
 Returns a mutable reference to element index of the abstract-valued parameters. More...
 
void set_accuracy (const optional< double > &accuracy)
 Records the user's requested accuracy. More...
 
const optional< double > & get_accuracy () const
 Returns the accuracy setting (if any). More...
 
std::unique_ptr< Context< T > > Clone () const
 Returns a deep copy of this Context. More...
 
std::unique_ptr< State< T > > CloneState () const
 Returns a deep copy of this Context's State. More...
 
void SetTimeStateAndParametersFrom (const Context< double > &source)
 Initializes this context's time, state, and parameters from the real values in source, regardless of this context's scalar type. More...
 
void set_parent (const Context< T > *parent)
 Declares that parent is the context of the enclosing Diagram. More...
 
template<typename T1 = T>
void VerifyInputPort (const InputPortDescriptor< T1 > &descriptor) const
 Throws an exception unless the given descriptor matches the inputs actually connected to this context in shape. More...
 
 Context (const Context &)=delete
 
Contextoperator= (const Context &)=delete
 
 Context (Context &&)=delete
 
Contextoperator= (Context &&)=delete
 

Protected Member Functions

DiagramContext< T > * DoClone () const override
 The caller owns the returned memory. More...
 
State< T > * DoCloneState () const override
 The caller owns the returned memory. More...
 
const InputPortValueGetInputPortValue (int index) const override
 Returns the input port at the given index, which of course belongs to the subsystem whose input was exposed at that index. More...
 
- Protected Member Functions inherited from Context< T >
const StepInfo< T > & get_step_info () const
 Returns a const reference to current time and step information. More...
 
StepInfo< T > * get_mutable_step_info ()
 Provides writable access to time and step information, with the side effect of invaliding any computation that is dependent on them. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from Context< T >
static const InputPortValueGetInputPortValue (const Context< T > &context, int index)
 Returns the InputPortValue at the given index from the given context. More...
 

Detailed Description

template<typename T>
class drake::systems::DiagramContext< T >

The DiagramContext is a container for all of the data necessary to uniquely determine the computations performed by a Diagram.

Specifically, a DiagramContext contains contexts and outputs for all the constituent Systems, wired up as specified by calls to DiagramContext::Connect.

In general, users should not need to interact with a DiagramContext directly. Use the accessors on Diagram instead.

Template Parameters
TThe mathematical type of the context, which must be a valid Eigen scalar.

Member Typedef Documentation

typedef std::pair<SystemIndex, PortIndex> PortIdentifier
typedef int PortIndex
typedef int SystemIndex

Constructor & Destructor Documentation

DiagramContext ( const DiagramContext< T > &  )
delete
DiagramContext ( DiagramContext< T > &&  )
delete
DiagramContext ( int  num_subsystems)
inlineexplicit

Constructs a DiagramContext with the given num_subsystems, which is final: you cannot resize a DiagramContext after construction.

Member Function Documentation

void AddSystem ( SystemIndex  index,
std::unique_ptr< Context< T >>  context,
std::unique_ptr< SystemOutput< T >>  output 
)
inline

Declares a new subsystem in the DiagramContext.

Subsystems are identified by number. If the subsystem has already been declared, aborts.

User code should not call this method. It is for use during Diagram context allocation only.

void Connect ( const PortIdentifier src,
const PortIdentifier dest 
)
inline

Declares that the output port specified by src is connected to the input port specified by dest.

User code should not call this method. It is for use during Diagram context allocation only.

Here is the call graph for this function:

DiagramContext<T>* DoClone ( ) const
inlineoverrideprotectedvirtual

The caller owns the returned memory.

Implements Context< T >.

State<T>* DoCloneState ( ) const
inlineoverrideprotectedvirtual

The caller owns the returned memory.

Implements Context< T >.

Here is the call graph for this function:

void ExportInput ( const PortIdentifier id)
inline

Declares that a particular input port of a particular subsystem is an input to the entire Diagram that allocates this Context.

Aborts if the subsystem has not been added to the DiagramContext.

User code should not call this method. It is for use during Diagram context allocation only.

Parameters<T>& get_mutable_parameters ( )
inlinefinalvirtual

Implements Context< T >.

State<T>* get_mutable_state ( )
inlineoverridevirtual

Implements Context< T >.

int get_num_input_ports ( ) const
inlineoverridevirtual

Returns the number of input ports.

Implements Context< T >.

const Parameters<T>& get_parameters ( ) const
inlinefinalvirtual

Implements Context< T >.

const State<T>& get_state ( ) const
inlineoverridevirtual

Implements Context< T >.

const InputPortValue* GetInputPortValue ( int  index) const
inlineoverrideprotectedvirtual

Returns the input port at the given index, which of course belongs to the subsystem whose input was exposed at that index.

Implements Context< T >.

Here is the call graph for this function:

Context<T>& GetMutableSubsystemContext ( SystemIndex  index)
inline

Returns the context structure for a given subsystem index.

Aborts if index is out of bounds, or if no system has been added to the DiagramContext at that index. TODO(david-german-tri): Rename to get_mutable_subsystem_context.

const Context<T>& GetSubsystemContext ( SystemIndex  index) const
inline

Returns the context structure for a given constituent system index.

Aborts if index is out of bounds, or if no system has been added to the DiagramContext at that index. TODO(david-german-tri): Rename to get_subsystem_context.

Here is the caller graph for this function:

SystemOutput<T>* GetSubsystemOutput ( SystemIndex  index) const
inline

Returns the output structure for a given constituent system at index.

Aborts if index is out of bounds, or if no system has been added to the DiagramContext at that index.

Here is the caller graph for this function:

void MakeParameters ( )
inline

Generates the parameters for the entire diagram by wrapping the parameters of all the constituent Systems.

The wrapper simply holds pointers to the parameters in the subsystem Contexts. It does not make a copy, or take ownership.

User code should not call this method. It is for use during Diagram context allocation only.

Here is the call graph for this function:

void MakeState ( )
inline

Generates the state vector for the entire diagram by wrapping the states of all the constituent diagrams.

User code should not call this method. It is for use during Diagram context allocation only.

Here is the call graph for this function:

DiagramContext& operator= ( DiagramContext< T > &&  )
delete
DiagramContext& operator= ( const DiagramContext< T > &  )
delete
void set_time ( const T &  time_sec)
inlineoverridevirtual

Recursively sets the time on this context and all subcontexts.

Reimplemented from Context< T >.

Here is the call graph for this function:

void SetInputPortValue ( int  index,
std::unique_ptr< InputPortValue port_value 
)
inlineoverridevirtual

Connects the input port at index to the value source port_value.

Disconnects whatever value source was previously there, and deregisters it from the output port on which it depends. In some Context implementations, may require a recursive search through a tree of subcontexts. Asserts if index is out of range.

Implements Context< T >.


The documentation for this class was generated from the following file: