![]() |
ModelSpace
|
Class to manage time for the simulation object. More...
#include <SimTimeManager.h>
Public Member Functions | |
SimTimeManager () | |
Base constructor – time manager should initialize to zeros and then be set. | |
virtual void | stepTime (const clockwerk::Time &step) |
Function to increment all times. | |
virtual clockwerk::Time | wallClockTimer () override |
Function to return the wall clock time since run start. | |
double | str2tdb (const std::string &time_input) |
std::string | tdbTime () |
Function to return the TDB time as a string. | |
std::string | utcTime () |
Function to return the TDB time as a string. | |
std::string | jdTime () |
Function to return the Julian date as a string. | |
std::string | gpsTime () |
Function to return the GPS time as a string. | |
void | setTime (const std::string &time_input=DEFAULT_SIMULATION_TIME) |
Function to set time by string input. | |
void | updateStep (const Time &step) |
Function to increment step start and end time. | |
Time | operator() () |
Function to return base time by call for easy access. | |
bool | wallClockIsStarted () |
Function to return whether the wall clock timer is started. | |
GraphTreeObject * | parent () |
Functions to get object's parent/children. | |
int | parent (GraphTreeObject *new_parent) |
Function to assign the node's parent via pointer. | |
int | parent (GraphTreeObject &new_parent) |
Function to assign the node's parent via reference. | |
std::vector< GraphTreeObject * > & | children () |
unsigned int | nChildren () |
Getters for number of children and descendants. | |
unsigned int | nDescendants () |
std::string | name () const |
Getter and setter for object name. | |
int | name (const std::string &new_name) |
int | rank () |
Getter for the object rank. | |
virtual int | type () |
Function to indicate type – -1 by default unless implemented downstream. | |
bool | loggable () |
Getter for object logability flag – note no setter because should only be set by this or a derived class in its definition. | |
std::string | address () |
Getter for object's string address. | |
std::vector< std::string > | search (const std::string &address) |
Function to search through the graph tree by string address. | |
GraphTreeObject * | getByAddress (const std::string &address) |
Function to get an object from the graph tree by string address. | |
void | dump (bool recursive=false) |
Function to dump the graph node, optionally including descendents. | |
void | graphNodeInfo () |
Function to return all info associated with a given graph node. | |
void | recurseGraphNodeInfo (unsigned int counter) |
Function to recurse through graph tree and print all node info. | |
virtual int | header (void *logger) |
Function to pass headers for this object to the logger. | |
virtual std::vector< std::string > | header_info () const |
void | findLoggable (std::vector< GraphTreeObject * > &matches) |
Function to find all loggable parameters in this node and its children. | |
virtual int | log (void *logger) |
Function to log data to a logger. | |
void | lock (bool recursive=true) |
Function to lock the graph tree object and its children to changes. | |
void | unlock (bool recursive=true) |
Function to unlock the graph tree and its children for changes. | |
bool | locked () |
Function to return whether graph tree object is locked. | |
Public Attributes | |
clockwerk::DataIO< clockwerk::Time > | tdb_time = clockwerk::DataIO<clockwerk::Time>(this, "tdb_time") |
Incrementing clocks – these are standard clocks that begin on start and continue incrementing as the scheduler steps forward. | |
DataIO< Time > | step_start_time = DataIO<Time>(this, "step_start_time") |
DataIO< Time > | step_end_time = DataIO<Time>(this, "step_end_time") |
This is the time at the end of a given scheduler step. | |
DataIO< Time > | base_time = DataIO<Time>(this, "base_time") |
This is the exact current time as the scheduler steps forward. | |
Protected Member Functions | |
void | recalculateDescendants () |
Function to recursively re-calculate the number of descendants of a given node on the tree. | |
void | recalculateRank () |
Function to recursively re-calculate the rank of a given node on the tree. | |
std::vector< std::string > | decomposeAddress (std::string address) |
Function to decompose a string into a series of substrings via indexing. | |
void | findMatches (const std::vector< std::string > &subaddresses, const unsigned int &num_subaddresses, unsigned int index, bool match_found, std::vector< GraphTreeObject * > &matches) |
Function to find all addresses mathcing the set of substrings @parem subaddresses A vector of subaddresses to match. | |
std::vector< GraphTreeObject * > | searchNodes (const std::string &address) |
Function to search through the graph tree by string address. | |
int | addChild (GraphTreeObject *child) |
Function to add a child to the graph tree object. | |
int | removeChild (GraphTreeObject *child) |
Function to remove a child from the graph node's children. | |
Protected Attributes | |
clockwerk::Time * | _tdb_ptr |
Pointers to our time objects. | |
clockwerk::Time | _diff |
struct timespec | _tmp |
Time * | _start_step_ptr |
Pointers to our time objects. | |
Time * | _end_step_ptr |
Time * | _base_time_ptr |
bool | _started = false |
Time | _start |
Time | _now |
GraphTreeObject * | _parent = nullptr |
Pointer to the object's parent – should be null if the object is the root. Is set to null by default. | |
std::vector< GraphTreeObject * > | _children |
Pointers to the object's children – automatically set to an empty vector, and can be increased to any size. | |
std::string | _name = DEFAULT_NAME |
String name for object. | |
uint16_t | _num_descendants = 0 |
Total number of descendants (includes children of children) of the tree, again not including the tree itself. | |
uint8_t | _num_children = 0 |
Number of direct children of the tree (not including the tree itself) | |
uint8_t | _rank = 0 |
Rank for how far down on the graph tree the object is – starts at zero and maxes out at 256 via variable size. | |
uint8_t | _graph_tree_type = BASE_GRAPH_TREE |
Variable to store graph tree object type. | |
bool | _locked = false |
Variable to lock the graph tree object and prevent structural updates. | |
bool | _loggable = false |
Variable to indicate whether the selected object is loggable. Set to false by default. | |
Class to manage time for the simulation object.
This class uses the SPICE module to manage time within the simulation. Internally it steps the sim time and the spice ephemeris time (TDB time), which is used to cast UTC and JD time scales. All are published on the time manager.
Time representations are based on the clockwerk Time class.
|
protectedinherited |
Function to add a child to the graph tree object.
child | A pointer to the graph tree object to add to the tree |
|
inherited |
Getter for object's string address.
|
protectedinherited |
Function to decompose a string into a series of substrings via indexing.
address | The address to be decomposed |
Function to dump the graph node, optionally including descendents.
recursive | Parameter indicating whether to dump only one node (default/false) or the entire tree (true) |
|
inherited |
Function to find all loggable parameters in this node and its children.
matches | Expandable vector to hold all matches in the tree |
|
protectedinherited |
Function to find all addresses mathcing the set of substrings @parem subaddresses A vector of subaddresses to match.
num_subaddresses | The number of subaddresses to match |
index | The index of subaddresses to search in |
match_found | Variable indicating whether a match was found higher in the tree |
matches | Implicit return of all matches to the specified address |
|
inherited |
Function to get an object from the graph tree by string address.
address | The exact string address to access the variable with |
std::string modelspace::SimTimeManager::gpsTime | ( | ) |
Function to return the GPS time as a string.
|
inlinevirtualinherited |
Function to pass headers for this object to the logger.
logger | Pointer to logger |
Reimplemented in clockwerk::DataIO< T >, clockwerk::DataIO< bool >, clockwerk::DataIO< clockwerk::Body< double > * >, clockwerk::DataIO< clockwerk::Body< T > * >, clockwerk::DataIO< clockwerk::CartesianVector< double, 2 > >, clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > >, clockwerk::DataIO< clockwerk::CartesianVector< T, 3 > >, clockwerk::DataIO< clockwerk::Euler321< double > >, clockwerk::DataIO< clockwerk::Frame< double > * >, clockwerk::DataIO< clockwerk::Frame< T > * >, clockwerk::DataIO< clockwerk::Matrix< double, 2, 2 > >, clockwerk::DataIO< clockwerk::Matrix< double, 3, 3 > >, clockwerk::DataIO< clockwerk::Matrix< double, 6, 3 > >, clockwerk::DataIO< clockwerk::Matrix< double, 6, 6 > >, clockwerk::DataIO< clockwerk::Matrix< T, 3, 3 > >, clockwerk::DataIO< clockwerk::Node< double > * >, clockwerk::DataIO< clockwerk::Quaternion< double > >, clockwerk::DataIO< clockwerk::Quaternion< T > >, clockwerk::DataIO< clockwerk::Time >, clockwerk::DataIO< double >, clockwerk::DataIO< int >, clockwerk::DataIO< modelspace::integrator_type_e >, clockwerk::DataIO< std::string >, and clockwerk::DataIO< void * >.
|
inlinevirtualinherited |
Reimplemented in clockwerk::Time.
std::string modelspace::SimTimeManager::jdTime | ( | ) |
Function to return the Julian date as a string.
Function to lock the graph tree object and its children to changes.
recursive | Flag to indicate whether lock should be recursive |
|
inlinevirtualinherited |
Function to log data to a logger.
logger | Pointer to logger |
Reimplemented in clockwerk::Time, clockwerk::DataIO< T >, clockwerk::DataIO< bool >, clockwerk::DataIO< clockwerk::Body< double > * >, clockwerk::DataIO< clockwerk::Body< T > * >, clockwerk::DataIO< clockwerk::CartesianVector< double, 2 > >, clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > >, clockwerk::DataIO< clockwerk::CartesianVector< T, 3 > >, clockwerk::DataIO< clockwerk::Euler321< double > >, clockwerk::DataIO< clockwerk::Frame< double > * >, clockwerk::DataIO< clockwerk::Frame< T > * >, clockwerk::DataIO< clockwerk::Matrix< double, 2, 2 > >, clockwerk::DataIO< clockwerk::Matrix< double, 3, 3 > >, clockwerk::DataIO< clockwerk::Matrix< double, 6, 3 > >, clockwerk::DataIO< clockwerk::Matrix< double, 6, 6 > >, clockwerk::DataIO< clockwerk::Matrix< T, 3, 3 > >, clockwerk::DataIO< clockwerk::Node< double > * >, clockwerk::DataIO< clockwerk::Quaternion< double > >, clockwerk::DataIO< clockwerk::Quaternion< T > >, clockwerk::DataIO< clockwerk::Time >, clockwerk::DataIO< double >, clockwerk::DataIO< int >, clockwerk::DataIO< modelspace::integrator_type_e >, clockwerk::DataIO< std::string >, and clockwerk::DataIO< void * >.
|
inlineinherited |
Function to return base time by call for easy access.
|
inherited |
Function to assign the node's parent via reference.
new_parent | The new parent to assign the node to |
|
inherited |
Function to assign the node's parent via pointer.
new_parent | The new parent to assign the node to |
Function to recurse through graph tree and print all node info.
|
protectedinherited |
Function to remove a child from the graph node's children.
child | The child to remove |
|
inherited |
Function to search through the graph tree by string address.
address | `The address or address chunk to search for |
|
protectedinherited |
Function to search through the graph tree by string address.
address | `The address or address chunk to search for |
void modelspace::SimTimeManager::setTime | ( | const std::string & | time_input = DEFAULT_SIMULATION_TIME | ) |
Function to set time by string input.
Methods to set time The following functions allow users to set time based on string
valid inputs are any input which is accepted by the SPICE function STR2ET. More info here: https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/FORTRAN/spicelib/str2et.html This value defaults to 2023 September 26, 12:00:00 MDT
|
virtual |
Function to increment all times.
step | Time object to step by |
double modelspace::SimTimeManager::str2tdb | ( | const std::string & | time_input | ) |
|
inline |
|
inlinevirtualinherited |
Function to indicate type – -1 by default unless implemented downstream.
Function to unlock the graph tree and its children for changes.
recursive | Flag to indicate whether unlock should be recursive |
Function to increment step start and end time.
step | Time object to step by |
std::string modelspace::SimTimeManager::utcTime | ( | ) |
Function to return the TDB time as a string.
|
inlineinherited |
Function to return whether the wall clock timer is started.
|
overridevirtual |
Function to return the wall clock time since run start.
Reimplemented from clockwerk::TimeManager.
|
inherited |
clockwerk::DataIO<clockwerk::Time> modelspace::SimTimeManager::tdb_time = clockwerk::DataIO<clockwerk::Time>(this, "tdb_time") |