SST  7.1.0
StructuralSimulationToolkit
SST::Component Class Reference

Main component object for the simulation. More...

#include <component.h>

Inheritance diagram for SST::Component:
SST::BaseComponent

Public Member Functions

 Component (ComponentId_t id)
 Constructor. More...
 
bool registerExit ()
 Register that the simulation should not end until this component says it is OK to. More...
 
bool unregisterExit ()
 Indicate permission for the simulation to end. More...
 
void registerAsPrimaryComponent ()
 Register as a primary component, which allows the component to specifiy when it is and is not OK to end simulation. More...
 
void primaryComponentDoNotEndSim ()
 Tells the simulation that it should not exit. More...
 
void primaryComponentOKToEndSim ()
 Tells the simulation that it is now OK to end simulation. More...
 
- Public Member Functions inherited from SST::BaseComponent
ComponentId_t getId () const
 Returns unique component ID.
 
virtual void emergencyShutdown (void)
 Called when SIGINT or SIGTERM has been seen. More...
 
const std::string & getName () const
 Returns component Name.
 
virtual void init (unsigned int UNUSED(phase))
 Used during the init phase. More...
 
virtual void setup ()
 Called after all components have been constructed and inialization has completed, but before simulation time has begun. More...
 
virtual void finish ()
 Called after simulation completes, but before objects are destroyed. More...
 
virtual bool Status ()
 Currently unused function.
 
virtual void printStatus (Output &UNUSED(out))
 Called by the Simulation to request that the component print it's current status. More...
 
bool isPortConnected (const std::string &name) const
 Determine if a port name is connected to any links.
 
LinkconfigureLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureSelfLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
TimeConverterregisterClock (std::string freq, Clock::HandlerBase *handler, bool regAll=true)
 Registers a clock for this component. More...
 
TimeConverterregisterClock (const UnitAlgebra &freq, Clock::HandlerBase *handler, bool regAll=true)
 
void unregisterClock (TimeConverter *tc, Clock::HandlerBase *handler)
 Removes a clock handler from the component.
 
Cycle_t reregisterClock (TimeConverter *freq, Clock::HandlerBase *handler)
 Reactivates an existing Clock and Handler. More...
 
Cycle_t getNextClockCycle (TimeConverter *freq)
 Returns the next Cycle that the TimeConverter would fire.
 
TimeConverterregisterOneShot (std::string timeDelay, OneShot::HandlerBase *handler)
 Registers a OneShot event for this component. More...
 
TimeConverterregisterOneShot (const UnitAlgebra &timeDelay, OneShot::HandlerBase *handler)
 
TimeConverterregisterTimeBase (std::string base, bool regAll=true)
 Registers a default time base for the component and optionally sets the the component's links to that timebase. More...
 
TimeConvertergetTimeConverter (const std::string &base)
 
TimeConvertergetTimeConverter (const UnitAlgebra &base)
 
SimTime_t getCurrentSimTime (TimeConverter *tc) const
 return the time since the simulation began in units specified by the parameter. More...
 
SimTime_t getCurrentSimTime () const
 return the time since the simulation began in the default timebase
 
SimTime_t getCurrentSimTime (std::string base)
 return the time since the simulation began in timebase specified More...
 
SimTime_t getCurrentSimTimeNano () const
 Utility function to return the time since the simulation began in nanoseconds.
 
SimTime_t getCurrentSimTimeMicro () const
 Utility function to return the time since the simulation began in microseconds.
 
SimTime_t getCurrentSimTimeMilli () const
 Utility function to return the time since the simulation began in milliseconds.
 
template<typename T >
Statistic< T > * registerStatistic (std::string statName, std::string statSubId="")
 Registers a statistic. More...
 
template<typename T >
Statistic< T > * registerStatistic (const char *statName, const char *statSubId="")
 
ModuleloadModule (std::string type, Params &params)
 Loads a module from an element Library. More...
 
ModuleloadModuleWithComponent (std::string type, Component *comp, Params &params)
 Loads a module from an element Library. More...
 
SubComponentloadSubComponent (std::string type, Component *comp, Params &params)
 Loads a SubComponent from an element Library. More...
 
SubComponentloadNamedSubComponent (std::string name)
 
SubComponentloadNamedSubComponent (std::string name, Params &params)
 
SubComponentSlotInfogetSubComponentSlotInfo (std::string name, bool fatalOnEmptyIndex=false)
 
const std::vector< double > & getCoordinates () const
 Retrieve the X,Y,Z coordinates of this component.
 

Protected Member Functions

ComponentgetTrueComponent () const final override
 
BaseComponentgetStatisticOwner () const final override
 Returns self if Component If sub-component, returns self if a "modern" subcomponent otherwise, return base component.
 
virtual bool doesComponentInfoStatisticExist (const std::string &statisticName) const final override
 
- Protected Member Functions inherited from SST::BaseComponent
void setDefaultTimeBase (TimeConverter *tc)
 Manually set the default detaulTimeBase.
 
LinkselfLink (std::string name, Event::HandlerBase *handler=NULL)
 Creates a new selfLink.
 
SharedRegiongetLocalSharedRegion (const std::string &key, size_t size)
 Find a lookup table.
 
SharedRegiongetGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=NULL)
 
SimulationgetSimulation () const
 
uint8_t getComponentInfoStatisticEnableLevel (const std::string &statisticName) const
 
std::string getComponentInfoStatisticUnits (const std::string &statisticName) const
 

Friends

class SubComponent
 

Additional Inherited Members

- Protected Attributes inherited from SST::BaseComponent
TimeConverterdefaultTimeBase
 Timebase used if no other timebase is specified for calls like BaseComponent::getCurrentSimTime(). More...
 
ComponentInfomy_info
 
Simulationsim
 
ComponentInfocurrentlyLoadingSubComponent
 

Detailed Description

Main component object for the simulation.

All models inherit from this.

Constructor & Destructor Documentation

◆ Component()

SST::Component::Component ( ComponentId_t  id)

Constructor.

Generally only called by the factory class.

Parameters
idUnique component ID

Member Function Documentation

◆ primaryComponentDoNotEndSim()

void SST::Component::primaryComponentDoNotEndSim ( )

Tells the simulation that it should not exit.

The component will remain in this state until a call to primaryComponentOKToEndSim().

See also
Component::registerAsPrimaryComponent()
Component::primaryComponentOKToEndSim()

References SST::Simulation::getExit(), SST::BaseComponent::getId(), SST::Simulation::getRank(), and SST::Exit::refInc().

◆ primaryComponentOKToEndSim()

void SST::Component::primaryComponentOKToEndSim ( )

Tells the simulation that it is now OK to end simulation.

Simulation will not end until all primary components have called this function.

See also
Component::registerAsPrimaryComponent()
Component::primaryComponentDoNotEndSim()

References SST::Simulation::getExit(), SST::BaseComponent::getId(), SST::Simulation::getRank(), and SST::Exit::refDec().

◆ registerAsPrimaryComponent()

void SST::Component::registerAsPrimaryComponent ( )

Register as a primary component, which allows the component to specifiy when it is and is not OK to end simulation.

The simulator will not end simulation natuarally (through use of the Exit object) while any primary component has specified primaryComponentDoNotEndSim(). However, it is still possible for Actions other than Exit to end simulation. Once all primary components have specified primaryComponentOKToEndSim(), the Exit object will trigger and end simulation.

This must be called during simulation wireup (i.e during the constructor for the component). By default, the state of the primary component is set to OKToEndSim.

If no component registers as a primary component, then the Exit object will not be used for that simulation and simulation termination must be accomplished through some other mechanism (e.g. –stopAt flag, or some other Action object).

See also
Component::primaryComponentDoNotEndSim()
Component::primaryComponentOKToEndSim()

◆ registerExit()

bool SST::Component::registerExit ( )

Register that the simulation should not end until this component says it is OK to.

Calling this function (generally done in Component::setup() or in component constructor) increments a global counter. Calls to Component::unregisterExit() decrements the counter. The simulation cannot end unless this counter reaches zero, or the simulation time limit is reached. This counter is synchonized periodically with the other nodes.

See also
Component::unregisterExit()

References SST::Simulation::getExit(), SST::BaseComponent::getId(), SST::Simulation::getRank(), and SST::Exit::refInc().

◆ unregisterExit()

bool SST::Component::unregisterExit ( )

Indicate permission for the simulation to end.

This function is the mirror of Component::registerExit(). It decrements the global counter, which, upon reaching zero, indicates that the simulation can terminate.

See also
Component::registerExit()

References SST::Simulation::getExit(), SST::BaseComponent::getId(), SST::Simulation::getRank(), and SST::Exit::refDec().


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