Drake
Drake C++ Documentation
LeafContext< T > Class Template Reference

Detailed Description

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

LeafContext contains all prerequisite data necessary to uniquely determine the results of computations performed by the associated LeafSystem.

See also
Context for more information.
Template Parameters
TThe scalar type, which must be one of the default scalars.

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

Public Member Functions

 LeafContext ()
 
 ~LeafContext () override
 
Does not allow copy, move, or assignment.
 LeafContext (LeafContext &&)=delete
 
LeafContextoperator= (const LeafContext &)=delete
 
LeafContextoperator= (LeafContext &&)=delete
 
- Public Member Functions inherited from Context< T >
 Context (Context &&)=delete
 
Contextoperator= (const Context &)=delete
 
Contextoperator= (Context &&)=delete
 
const T & get_time () const
 Returns the current time in seconds. More...
 
const State< T > & get_state () const
 Returns a const reference to the whole State. 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 num_total_states () const
 Returns the total dimension of all of the basic vector states (as if they were muxed). More...
 
int num_continuous_states () const
 Returns the number of continuous state variables xc = {q, v, z}. More...
 
const ContinuousState< T > & get_continuous_state () const
 Returns a const reference 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 num_discrete_state_groups () const
 Returns the number of vectors (groups) in the discrete state. More...
 
const DiscreteValues< T > & get_discrete_state () const
 Returns a reference to the entire discrete state, which may consist of multiple discrete state vectors (groups). More...
 
const BasicVector< T > & get_discrete_state_vector () const
 Returns a reference to the only discrete state vector. More...
 
const BasicVector< T > & get_discrete_state (int index) const
 Returns a const reference to group (vector) index of the discrete state. More...
 
int num_abstract_states () const
 Returns the number of elements in the abstract state. More...
 
const AbstractValuesget_abstract_state () const
 Returns a const reference to the abstract component of the state, which may be of size zero. 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...
 
const std::optional< double > & get_accuracy () const
 Returns the accuracy setting (if any). More...
 
const Parameters< T > & get_parameters () const
 Returns a const reference to this Context's parameters. More...
 
int num_numeric_parameter_groups () const
 Returns the number of vector-valued parameters. More...
 
const BasicVector< T > & get_numeric_parameter (int index) const
 Returns a const reference to the vector-valued parameter at index. 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...
 
void SetTime (const T &time_sec)
 Sets the current time in seconds. More...
 
void SetContinuousState (const Eigen::Ref< const VectorX< T >> &xc)
 Sets the continuous state to xc, including q, v, and z partitions. More...
 
void SetTimeAndContinuousState (const T &time_sec, const Eigen::Ref< const VectorX< T >> &xc)
 Sets time to time_sec and continuous state to xc. More...
 
void SetDiscreteState (const Eigen::Ref< const VectorX< T >> &xd)
 Sets the discrete state to xd, assuming there is just one discrete state group. More...
 
void SetDiscreteState (int group_index, const Eigen::Ref< const VectorX< T >> &xd)
 Sets the discrete state group indicated by group_index to xd. More...
 
void SetDiscreteState (const DiscreteValues< T > &xd)
 Sets all the discrete state variables in this Context from a compatible DiscreteValues object. More...
 
template<typename ValueType >
void SetAbstractState (int index, const ValueType &value)
 Sets the value of the abstract state variable selected by index. More...
 
template<typename U >
void SetStateAndParametersFrom (const Context< U > &source)
 Copies all state and parameters in source, where numerical values are of type U, to this context. More...
 
template<typename U >
void SetTimeStateAndParametersFrom (const Context< U > &source)
 Copies time, accuracy, all state and all parameters in source, where numerical values are of type U, to this context. More...
 
void SetAccuracy (const std::optional< double > &accuracy)
 Records the user's requested accuracy, which is a unit-less quantity designed for use with simulation and other numerical studies. More...
 
FixedInputPortValueFixInputPort (int index, const AbstractValue &value)
 (Advanced) Connects the input port at index to a FixedInputPortValue with the given abstract value. More...
 
State< T > & get_mutable_state ()
 Returns a mutable reference to the whole State, potentially invalidating all state-dependent computations so requiring out of date notifications to be made for all such computations. More...
 
ContinuousState< T > & get_mutable_continuous_state ()
 Returns a mutable reference to the continuous component of the state, which may be of size zero. More...
 
VectorBase< T > & get_mutable_continuous_state_vector ()
 Returns a mutable reference to the continuous state vector, devoid of second-order structure. More...
 
DiscreteValues< T > & get_mutable_discrete_state ()
 Returns a mutable reference to the discrete component of the state, which may be of size zero. More...
 
BasicVector< T > & get_mutable_discrete_state_vector ()
 Returns a mutable reference to the only discrete state vector. More...
 
BasicVector< T > & get_mutable_discrete_state (int index)
 Returns a mutable reference to group (vector) index of the discrete state. More...
 
AbstractValuesget_mutable_abstract_state ()
 Returns a mutable reference 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 reference to element index of the abstract state. More...
 
Parameters< T > & get_mutable_parameters ()
 Returns a mutable reference to this Context's parameters. More...
 
BasicVector< T > & get_mutable_numeric_parameter (int index)
 Returns a mutable reference to element index of the vector-valued (numeric) parameters. More...
 
AbstractValueget_mutable_abstract_parameter (int index)
 Returns a mutable reference to element index of the abstract-valued parameters. More...
 
VectorBase< T > & SetTimeAndGetMutableContinuousStateVector (const T &time_sec)
 (Advanced) Sets time and returns a mutable reference to the continuous state xc (including q, v, z) as a VectorBase. More...
 
VectorBase< T > & SetTimeAndGetMutableQVector (const T &time_sec)
 (Advanced) Sets time and returns a mutable reference to the second-order continuous state partition q from xc. More...
 
std::pair< VectorBase< T > *, VectorBase< T > * > GetMutableVZVectors ()
 (Advanced) Returns mutable references to the first-order continuous state partitions v and z from xc. More...
 
void SetTimeAndNoteContinuousStateChange (const T &time_sec)
 (Advanced) Sets time and registers an intention to modify the continuous state xc. More...
 
void NoteContinuousStateChange ()
 (Advanced) Registers an intention to modify the continuous state xc. 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...
 
std::string to_string () const
 Returns a partial textual description of the Context, intended to be human-readable. More...
 
- Public Member Functions inherited from ContextBase
std::unique_ptr< ContextBaseClone () const
 Creates an identical copy of the concrete context object. More...
 
 ~ContextBase () override
 
void DisableCaching () const
 (Debugging) Disables caching recursively for this context and all its subcontexts. More...
 
void EnableCaching () const
 (Debugging) Re-enables caching recursively for this context and all its subcontexts. More...
 
void SetAllCacheEntriesOutOfDate () const
 (Debugging) Marks all cache entries out of date, recursively for this context and all its subcontexts. More...
 
void FreezeCache () const
 (Advanced) Freezes the cache at its current contents, preventing any further cache updates. More...
 
void UnfreezeCache () const
 (Advanced) Unfreezes the cache if it was previously frozen. More...
 
bool is_cache_frozen () const final
 (Advanced) Reports whether this Context's cache is currently frozen. More...
 
const std::string & GetSystemName () const final
 Returns the local name of the subsystem for which this is the Context. More...
 
internal::SystemId get_system_id () const
 (Internal) Gets the id of the subsystem that created this context. More...
 
std::string GetSystemPathname () const final
 Returns the full pathname of the subsystem for which this is the Context. More...
 
const Cacheget_cache () const
 Returns a const reference to this subcontext's cache. More...
 
Cacheget_mutable_cache () const
 (Advanced) Returns a mutable reference to this subcontext's cache. More...
 
const DependencyTrackerget_tracker (DependencyTicket ticket) const
 Returns a const reference to a DependencyTracker in this subcontext. More...
 
DependencyTrackerget_mutable_tracker (DependencyTicket ticket)
 Returns a mutable reference to a DependencyTracker in this subcontext. More...
 
const DependencyGraphget_dependency_graph () const
 Returns a const reference to the collection of value trackers within this subcontext. More...
 
DependencyGraphget_mutable_dependency_graph ()
 Returns a mutable reference to the dependency graph. More...
 
int num_input_ports () const
 Returns the number of input ports in this context. More...
 
int num_output_ports () const
 Returns the number of output ports represented in this context. More...
 
DependencyTicket input_port_ticket (InputPortIndex port_num)
 Returns the dependency ticket associated with a particular input port. More...
 
DependencyTicket output_port_ticket (OutputPortIndex port_num)
 Returns the dependency ticket associated with a particular output port. More...
 
FixedInputPortValueFixInputPort (int index, const AbstractValue &value)
 (Advanced) Connects the input port at index to a FixedInputPortValue with the given abstract value. More...
 
const FixedInputPortValueMaybeGetFixedInputPortValue (int index) const
 For input port index, returns a const FixedInputPortValue if the port is fixed, otherwise nullptr. More...
 
FixedInputPortValueMaybeGetMutableFixedInputPortValue (int index)
 For input port index, returns a mutable FixedInputPortValue if the port is fixed, otherwise nullptr. More...
 
int64_t start_new_change_event () const
 (Internal use only) Returns the next change event serial number that is unique for this entire Context tree, not just this subcontext. More...
 
bool is_root_context () const
 Returns true if this context has no parent. More...
 
 ContextBase (ContextBase &&)=delete
 
ContextBaseoperator= (const ContextBase &)=delete
 
ContextBaseoperator= (ContextBase &&)=delete
 

Protected Member Functions

 LeafContext (const LeafContext &source)
 Protected copy constructor takes care of the local data members and all base class members, but doesn't update base class pointers so is not a complete copy. More...
 
std::unique_ptr< ContextBaseDoCloneWithoutPointers () const override
 Derived classes should reimplement and replace this; don't recursively invoke it. More...
 
std::unique_ptr< State< T > > DoCloneState () const override
 Returns the appropriate concrete State object to be returned by CloneState(). More...
 
- Protected Member Functions inherited from Context< T >
 Context ()
 
 Context (const Context< T > &)
 Copy constructor takes care of base class and Context<T> data members. More...
 
virtual void DoPropagateTimeChange (const T &time_sec, const std::optional< T > &true_time, int64_t change_event)
 Invokes PropagateTimeChange() on all subcontexts of this Context. More...
 
virtual void DoPropagateAccuracyChange (const std::optional< double > &accuracy, int64_t change_event)
 Invokes PropagateAccuracyChange() on all subcontexts of this Context. More...
 
void init_continuous_state (std::unique_ptr< ContinuousState< T >> xc)
 (Internal use only) Sets the continuous state to xc, deleting whatever was there before. More...
 
void init_discrete_state (std::unique_ptr< DiscreteValues< T >> xd)
 (Internal use only) Sets the discrete state to xd, deleting whatever was there before. More...
 
void init_abstract_state (std::unique_ptr< AbstractValues > xa)
 (Internal use only) Sets the abstract state to xa, deleting whatever was there before. More...
 
void init_parameters (std::unique_ptr< Parameters< T >> params)
 (Internal use only) Sets the parameters to params, deleting whatever was there before. More...
 
- Protected Member Functions inherited from ContextBase
 ContextBase ()
 Default constructor creates an empty ContextBase but initializes all the built-in dependency trackers that are the same in every System (like time, q, all states, all inputs, etc.). More...
 
 ContextBase (const ContextBase &)=default
 Copy constructor takes care of base class data members, but does not fix up base class pointers. More...
 
bool owns_any_variables_or_parameters () const
 (Internal use only) Returns true if this context provides resources for its own individual state variables or parameters. More...
 
void PropagateBulkChange (int64_t change_event, void(ContextBase::*note_bulk_change)(int64_t change_event))
 (Internal use only) This is a convenience method for invoking the eponymous static method on this context (which occurs frequently). More...
 
virtual void DoPropagateBuildTrackerPointerMap (const ContextBase &clone, DependencyTracker::PointerMap *tracker_map) const
 DiagramContext must implement this to invoke BuildTrackerPointerMap() on each of its subcontexts. More...
 
virtual void DoPropagateFixContextPointers (const ContextBase &source, const DependencyTracker::PointerMap &tracker_map)
 DiagramContext must implement this to invoke FixContextPointers() on each of its subcontexts. More...
 
virtual void DoPropagateCachingChange (void(Cache::*caching_change)()) const
 DiagramContext must implement this to invoke a caching behavior change on each of its subcontexts. More...
 
virtual void DoPropagateBulkChange (int64_t change_event, void(ContextBase::*note_bulk_change)(int64_t change_event))
 DiagramContext must implement this to invoke PropagateBulkChange() on its subcontexts, passing along the indicated method that specifies the particular bulk change (e.g. More...
 
void AddInputPort (InputPortIndex expected_index, DependencyTicket ticket, std::function< void(const AbstractValue &)> fixed_input_type_checker)
 Adds the next input port. More...
 
void AddOutputPort (OutputPortIndex expected_index, DependencyTicket ticket, const internal::OutputPortPrerequisite &prerequisite)
 Adds the next output port. More...
 
void AddDiscreteStateTicket (DependencyTicket ticket)
 Adds a ticket to the list of discrete state tickets. More...
 
void AddAbstractStateTicket (DependencyTicket ticket)
 Adds a ticket to the list of abstract state tickets. More...
 
void AddNumericParameterTicket (DependencyTicket ticket)
 Adds a ticket to the list of numeric parameter tickets. More...
 
void AddAbstractParameterTicket (DependencyTicket ticket)
 Adds a ticket to the list of abstract parameter tickets. More...
 
void NoteTimeChanged (int64_t change_event)
 Notifies the local time tracker that time may have changed. More...
 
void NoteAccuracyChanged (int64_t change_event)
 Notifies the local accuracy tracker that the accuracy setting may have changed. More...
 
void NoteAllStateChanged (int64_t change_event)
 Notifies the local continuous, discrete, and abstract state trackers that each of them may have changed, likely because someone has asked to modify the whole state x. More...
 
void NoteAllContinuousStateChanged (int64_t change_event)
 Notifies the local q, v, and z trackers that each of them may have changed, likely because someone has asked to modify continuous state xc. More...
 
void NoteAllVZChanged (int64_t change_event)
 Notifies the local v and z trackers that each of them may have changed, likely because someone has asked to modify just the first-order state variables in xc. More...
 
void NoteAllQChanged (int64_t change_event)
 Notifies the local q tracker that the q's may have changed. More...
 
void NoteAllVChanged (int64_t change_event)
 Notifies the local v tracker that the v's may have changed. More...
 
void NoteAllZChanged (int64_t change_event)
 Notifies the local z tracker that the z's may have changed. More...
 
void NoteAllDiscreteStateChanged (int64_t change_event)
 Notifies each local discrete state group tracker that the value of the discrete state group it manages may have changed. More...
 
void NoteAllAbstractStateChanged (int64_t change_event)
 Notifies each local abstract state variable tracker that the value of the abstract state variable it manages may have changed. More...
 
void NoteAllParametersChanged (int64_t change_event)
 Notifies the local numeric and abstract parameter trackers that each of them may have changed, likely because someone asked to modify all the parameters. More...
 
void NoteAllNumericParametersChanged (int64_t change_event)
 Notifies each local numeric parameter tracker that the value of the parameter it manages may have changed. More...
 
void NoteAllAbstractParametersChanged (int64_t change_event)
 Notifies each local abstract parameter tracker that the value of the parameter it manages may have changed. More...
 

Friends

class LeafContextTest
 

Additional Inherited Members

- Static Protected Member Functions inherited from Context< T >
static void PropagateTimeChange (Context< T > *context, const T &time, const std::optional< T > &true_time, int64_t change_event)
 (Internal use only) Sets a new time and notifies time-dependent quantities that they are now invalid, as part of a given change event. More...
 
static void PropagateAccuracyChange (Context< T > *context, const std::optional< double > &accuracy, int64_t change_event)
 (Internal use only) Sets a new accuracy and notifies accuracy-dependent quantities that they are now invalid, as part of a given change event. More...
 
static Parameters< T > & access_mutable_parameters (Context< T > *context)
 (Internal use only) Returns a reference to mutable parameters without invalidation notifications. More...
 
static State< T > & access_mutable_state (Context< T > *context)
 (Internal use only) Returns a reference to a mutable state without invalidation notifications. More...
 
static std::unique_ptr< Context< T > > CloneWithoutPointers (const Context< T > &source)
 (Internal use only) Clones a context but without any of its internal pointers. More...
 
- Static Protected Member Functions inherited from ContextBase
static std::unique_ptr< ContextBaseCloneWithoutPointers (const ContextBase &source)
 (Internal use only) Clones a context but without copying any of its internal pointers; the clone's pointers are set to null. More...
 
static void BuildTrackerPointerMap (const ContextBase &source, const ContextBase &clone, DependencyTracker::PointerMap *tracker_map)
 (Internal use only) Given a new context clone containing an identically-structured dependency graph as the one in source, creates a mapping of all tracker memory addresses from source to clone. More...
 
static void FixContextPointers (const ContextBase &source, const DependencyTracker::PointerMap &tracker_map, ContextBase *clone)
 (Internal use only) Assuming clone is a recently-cloned Context that has yet to have its internal pointers updated, sets those pointers now. More...
 
static void PropagateCachingChange (const ContextBase &context, void(Cache::*caching_change)())
 (Internal use only) Applies the given caching-change notification method to context, and propagates the notification to subcontexts if context is a DiagramContext. More...
 
static void PropagateBulkChange (ContextBase *context, int64_t change_event, void(ContextBase::*note_bulk_change)(int64_t change_event))
 (Internal use only) Applies the given bulk-change notification method to the given context, and propagates the notification to subcontexts if this is a DiagramContext. More...
 
static void set_parent (ContextBase *child, ContextBase *parent)
 Declares that parent is the context of the enclosing Diagram. More...
 

Constructor & Destructor Documentation

◆ LeafContext() [1/3]

LeafContext ( LeafContext< T > &&  )
delete

◆ LeafContext() [2/3]

◆ ~LeafContext()

~LeafContext ( )
override

◆ LeafContext() [3/3]

LeafContext ( const LeafContext< T > &  source)
protected

Protected copy constructor takes care of the local data members and all base class members, but doesn't update base class pointers so is not a complete copy.

Member Function Documentation

◆ DoCloneState()

std::unique_ptr<State<T> > DoCloneState ( ) const
overrideprotectedvirtual

Returns the appropriate concrete State object to be returned by CloneState().

The implementation should not set_system_id on the result, the caller will set an id on the state after this method returns.

Implements Context< T >.

◆ DoCloneWithoutPointers()

std::unique_ptr<ContextBase> DoCloneWithoutPointers ( ) const
overrideprotectedvirtual

Derived classes should reimplement and replace this; don't recursively invoke it.

Implements ContextBase.

◆ operator=() [1/2]

LeafContext& operator= ( const LeafContext< T > &  )
delete

◆ operator=() [2/2]

LeafContext& operator= ( LeafContext< T > &&  )
delete

Friends And Related Function Documentation

◆ LeafContextTest

friend class LeafContextTest
friend

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