WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
warptwin::Model Class Reference

Base model class for derived implementation. More...

#include <Model.h>

Inheritance diagram for warptwin::Model:

Public Member Functions

 Model (Model &pnt, int16 schedule_slot, const std::string &m_name="Unnamed")
 Task-based constructor for the task. Auto-assigns executive.
 Model (SimulationExecutive &executive, int16 schedule_slot, const std::string &m_name="Unnamed")
 Executive-based constructor for the task.
virtual ~Model ()
 Desrtuctor. Doesn't really do anything.
std::vector< std::string > listDefaultConfigs ()
 List all default options for the model type.
int configureFromDefault (const std::string &default_name)
 Configure model from a default configuration.
int configureFromJson (const std::string &file_path)
 Configure model from a json file with keys as params of the model.
int configureFromJson (nlohmann::json j)
 Configure model from a json file with keys as params of the model.
virtual nlohmann::json asJson ()
 Get model information as json.
void dump ()
 Dump all information associated with the model.
Public Member Functions inherited from warpos::App
 App (FlightExecutive &executive, const char *name, uint16 apid, uint8 instance=0)
 Executive-based constructor for the task.
virtual ~App ()
 Destructor. Doesn't really do anything.
int16 startup ()
 Initialize the app. Should be called once before step.
int16 step ()
 Step the app by a single step. Maps params, inputs, etc. to outputs.
virtual int16 activate ()
 Activate the app. The app will step when active.
virtual int16 deactivate ()
 Deactivate the app. The app will not step when deactivated.
virtual int16 command (uint16 apid, uint8 *buffer, uint16 size)
 Process commands issued to the app.
log_level_e logLevel ()
 Get the log level set for the executive.
void logLevel (log_level_e log_level)
 Set the executive log level.
bool isStarted ()
 Return whether task startup has been run.
uint16 apid ()
 Get the apid for this app.
uint8 & instance ()
 Get the instance of this app (used to differentiate between multiple instances of the same app).
Public Member Functions inherited from clockwerk::GraphTreeObject
 GraphTreeObject (const char *gt_nme="", GraphTreeObject **storage_array=nullptr, uint32 storage_size=0)
 Name-based constructor for GraphTreeObject which will have no children by default.
virtual ~GraphTreeObject ()
 Destructor.
GraphTreeObjectparent ()
 Functions to get object's parent/children.
GraphTreeObject ** children ()
GraphTreeObjectchildAtIndex (uint8 i) const
int16 parent (GraphTreeObject *new_parent)
 Function to assign the node's parent via pointer.
int16 parent (GraphTreeObject &new_parent)
 Function to assign the node's parent via reference.
uint8 nChildren () const
 Getters for number of children and descendants.
uint16 nDescendants () const
uint8 capacity () const
const char * name () const
 Getter and setter for object name.
int16 name (const char *new_name)
uint8 rank ()
 Getter for the object rank.
int8 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.
GraphTreeObjectgetRootDataPointer ()
 Get the pointer to the highest object in the graph tree.
virtual int16 str (char *output, size_t size) const
 Get object represented as string.
virtual int16 fromStr (const char *val)
 Set value of graphtreeobject from string.

Protected Member Functions

virtual std::string classType ()
 Return the name of the class type.
Protected Member Functions inherited from warpos::App
virtual int16 start ()
 Init the app. This is the specific call and should be overwritten in derived apps. Called from startup.
virtual int16 execute ()
 Step the app. This is the specific call and should be overwritten in derived apps. Called from step.
Protected Member Functions inherited from clockwerk::GraphTreeObject
int16 _setStorage (GraphTreeObject **storage_array, uint8 storage_size)
 Getter for object's string address.
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.
int16 _addChild (GraphTreeObject *child)
 Function to decompose a string into a series of substrings via indexing.
int16 _removeChild (GraphTreeObject *child)
 Function to remove a child from the graph node's children.

Protected Attributes

SimulationExecutiveexc
std::string _default_configuration_name = ""
 Hold default configuration name model is defined from.
int16 _schedule_slot = 0
 Internal variable to hold schedule slot for model.
Protected Attributes inherited from warpos::App
FlightExecutiveexc
 Override our executive to include the FlightExecutive instead.
int16 _error = 0
 Internal variable to track and return error on app step through.
uint16 _apid = 0
 Internal variable to hold the APID for this app.
bool _is_started = false
 Flag indicating whether app has been started or not.
log_level_e _local_log_level = log_level_e::LOG_WARNING
 The log level for this particular app.
GraphTreeObject_app_children [MAXIMUM_APP_CHILDREN]
 Local storage for App children so it can live on the graph tree.
uint8 _instance
 Instance number of this app. Used to differentiate between multiple instances of the same app.
Protected Attributes inherited from clockwerk::GraphTreeObject
GraphTreeObject_parent = nullptr
GraphTreeObject ** _children_ptr = nullptr
uint32 _max_num_children = 0
uint16 _num_descendants = 0
char _name [MAXIMUM_NAME_CHARS] = ""
 String name for object.
uint8 _num_children = 0
 Number of direct children of the tree (not including the tree itself).
uint8 _rank = 0
int8 _graph_tree_type = BASE_GRAPH_TREE
 Variable to store graph tree object type.
bool _loggable = false
 Variable to indicate whether the selected object is loggable. Set to false by default.
uint32 _index = 0
 Index pointing to the next write location for the graph tree children.

Additional Inherited Members

Public Attributes inherited from warpos::App
clockwerk::DataIO< bool > active = clockwerk::DataIO<bool>(this, "active", true)
 The active flag for the task – set to true by default.

Detailed Description

Base model class for derived implementation.

This is the base model class, which should be implemented in derived models via class inheritence. It is designed around the "black box" design of models, where each model is given startup parameters, inputs, and outputs as defined:

PARAMETERS: Configuration flags which should be carefully controlled and only modified at few, select events (i.e. not every timestep) INPUTS: Input parameters to the model which may, but do not have to, change often. These will often be connected to the outputs of other models. OUTPUTS: Output parameters from the model which are the result of an internal calculation in the model.

Functions are created in the base model class to be implemented in the derived model. Each of the following may be left unmodified, in which case they will do nothing. Functions should only be modified if the developer wants them to do something. Once implemented, the functions will be called automatically by the model and should not be invoked directly.

Functionally, Model is no different than Task. However, Models are configured for simulation specifically to work with the SimulationExecutive. This makes a number of model features easier to use at the expense of making them non- embedded C++.

Note
Models are allowed to have up to MAXIMUM_APP_CHILDREN children

Constructor & Destructor Documentation

◆ Model() [1/2]

warptwin::Model::Model ( Model & pnt,
int16 schedule_slot,
const std::string & m_name = "Unnamed" )

Task-based constructor for the task. Auto-assigns executive.

Parameters
pntThe task to assign as parent of this task
nmeName of the task
schedule_slotThe slot to which the task should be scheduled. Negative indicates it should not be scheduled. Default is to schedule for ALL steps.

◆ Model() [2/2]

warptwin::Model::Model ( SimulationExecutive & executive,
int16 schedule_slot,
const std::string & m_name = "Unnamed" )

Executive-based constructor for the task.

Parameters
executiveThe executive to set
m_nameThe name for the task
schedule_slotThe slot to which the task should be scheduled. Negative indicates it should not be scheduled.
Default is to schedule for ALL steps.

◆ ~Model()

virtual warptwin::Model::~Model ( )
inlinevirtual

Desrtuctor. Doesn't really do anything.

Member Function Documentation

◆ asJson()

nlohmann::json warptwin::Model::asJson ( )
virtual

Get model information as json.

Returns
json object including model inputs/outputs/params and other config items

◆ classType()

virtual std::string warptwin::Model::classType ( )
inlineprotectedvirtual

Return the name of the class type.

Returns
The type of the class

◆ configureFromDefault()

int warptwin::Model::configureFromDefault ( const std::string & default_name)

Configure model from a default configuration.

Parameters
default_nameThe name of the default to load for this model type, with no filepath data
Returns
Error code corresponding to success/failure

This function configures the model according to a default specified in data/defaults/<Model type name>. Implicitly calls configureFromJson

◆ configureFromJson() [1/2]

int warptwin::Model::configureFromJson ( const std::string & file_path)

Configure model from a json file with keys as params of the model.

Parameters
file_pathThe path to the JSON file
Returns
Error code corresponding to success/failure

This function configures a model from any json object where the keys in the object represent the names of the params of the model.

◆ configureFromJson() [2/2]

int warptwin::Model::configureFromJson ( nlohmann::json j)

Configure model from a json file with keys as params of the model.

Parameters
jThe JSON file you wish to configure with
Returns
Error code corresponding to success/failure

This function configures a model from any json object where the keys in the object represent the names of the params of the model.

◆ dump()

void warptwin::Model::dump ( )

Dump all information associated with the model.

◆ listDefaultConfigs()

std::vector< std::string > warptwin::Model::listDefaultConfigs ( )

List all default options for the model type.

Returns
Vector containing all default options for the model type

This function returns all of the pre-configured default json configurations for the model as stored in data/defaults/<Model type name>

Member Data Documentation

◆ _default_configuration_name

std::string warptwin::Model::_default_configuration_name = ""
protected

Hold default configuration name model is defined from.

◆ _schedule_slot

int16 warptwin::Model::_schedule_slot = 0
protected

Internal variable to hold schedule slot for model.

◆ exc

SimulationExecutive& warptwin::Model::exc
protected

Override our executive to include the SimulationExecutive instead. Models will work with the SimulationExecutive per Alex decision 5/2024. In all other respects they will be identical to tasks.


The documentation for this class was generated from the following files:
  • /Users/mickey/Documents/Projects/warptwin/cpp/src/simulation/Model.h
  • /Users/mickey/Documents/Projects/warptwin/cpp/src/simulation/Model.cpp