Hopsan
|
Public Member Functions | |
void | configure () |
Configures a component by setting up ports, variables, constants and other resources. | |
void | simulate (const double stopT) |
Simulate function for single-threaded simulations. | |
void | simulateMultiThreaded (const double startT, const double stopT, const size_t nDesiredThreads, const bool noChanges, ParallelAlgorithmT algorithm) |
Simulate function that overrides multi-threaded simulation call with a single-threaded call In case multi-threaded support is not available. | |
Public Member Functions inherited from ComponentSystem | |
bool | isComponentSystem () const |
Check if a component is a System-Component. | |
CQSEnumT | getTypeCQS () const |
Get the C, Q or S type of the component as enum. | |
void | setTypeCQS (CQSEnumT cqs_type, bool doOnlyLocalSet=false) |
Set the type C, Q, or S of the subsystem. | |
bool | changeSubComponentSystemTypeCQS (const HString &rName, const CQSEnumT newType) |
Change the CQS type of a stored subsystem component. | |
void | determineCQSType () |
This function automatically determines the CQS type depending on the what has been connected to the systemports. | |
bool | isTopLevelSystem () const |
bool | isExternalSystem () const |
void | setExternalModelFilePath (const HString &rPath) |
HString | getExternalModelFilePath () const |
void | addComponents (std::vector< Component * > &rComponents) |
Add multiple components to the system. | |
void | addComponent (Component *pComponent) |
Add a component to the system. | |
void | renameSubComponent (const HString &rOldName, const HString &rNewName) |
Rename a sub component and automatically fix unique names. | |
void | removeSubComponent (const HString &rName, bool doDelete=false) |
Remove a dub component from a system, can also be used to actually delete the component. | |
void | removeSubComponent (Component *pComponent, bool doDelete=false) |
Remove a sub component from a system, can also be used to actually delete the component. | |
HString | reserveUniqueName (const HString &rDesiredName, const UniqeNameEnumT type=UniqueReservedNameType) |
Reserves a unique name in the system. | |
void | unReserveUniqueName (const HString &rName) |
unReserves a unique name in the system | |
bool | renameParameter (const HString &rOldName, const HString &rNewName) |
Rename a system parameter. | |
virtual std::list< HString > | getModelAssets () const |
Port * | addSystemPort (HString portName, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Adds a transparent SubSystemPort. | |
HString | renameSystemPort (const HString &rOldname, const HString &rNewname) |
Rename system port. | |
void | deleteSystemPort (const HString &rName) |
Delete a System port from the component. | |
Component * | getSubComponentOrThisIfSysPort (const HString &rName) |
Get a Component ptr to the component with supplied name, can also return a ptr to self if no subcomponent found but systemport with name found. | |
Component * | getSubComponent (const HString &rName) const |
const std::vector< Component * > | getSubComponents () const |
ComponentSystem * | getSubComponentSystem (const HString &rName) const |
std::vector< HString > | getSubComponentNames () const |
bool | haveSubComponent (const HString &rName) const |
Check if a system has a subcomponent with given name. | |
bool | isEmpty () const |
Checks if a system is empty (if there are no components or systemports) | |
AliasHandler & | getAliasHandler () |
bool | connect (Port *pPort1, Port *pPort2) |
Connect two components with specified ports to each other. | |
bool | connect (const HString &compname1, const HString &portname1, const HString &compname2, const HString &portname2) |
Connect two components, string version. | |
bool | disconnect (const HString &compname1, const HString &portname1, const HString &compname2, const HString &portname2) |
Disconnect two ports, string version. | |
bool | disconnect (Port *pPort1, Port *pPort2) |
Disconnects two ports and remove node if no one is using it any more. | |
bool | keepsValuesAsStartValues () |
Returns whether or not to keep node values instead of over writing with defaultStartValues. | |
void | setKeepValuesAsStartValues (bool load) |
Set if node data values should be used as start values instead of the default start values or expressions. | |
void | loadStartValues () |
Load start values by telling each component to load their start values. | |
void | loadStartValuesFromSimulation () |
Load start values from last simulation to start value container. | |
void | evaluateParametersRecursively () |
Recurse through the model system hierarchy and evaluate all parameters. | |
size_t | loadParameterValues (const HString &rFilePath) |
Loads parameters from a file. | |
bool | evaluateNumHopScriptRecursively () |
Recurse through the model system hierarchy and evaluate all system-level numhop scripts. | |
bool | runNumHopScript (const HString &rScript, bool printOutput, HString &rOutput) |
Interprets and evaluates (runs) a numhop scripts. | |
void | setNumHopScript (const HString &rScript) |
Set the system-level numhop script. | |
HString | getNumHopScript () const |
bool | checkModelBeforeSimulation () |
Checks that everything is OK before simulation. | |
virtual bool | preInitialize () |
bool | initialize (const double startT, const double stopT) |
Initializes a system and all its contained components before a simulation. Also allocates log data memory. | |
bool | startRealtimeSimulation (double realTimeFactor=1) |
void | finalize () |
Finalizes a system component and all its contained components after a simulation. | |
bool | simulateAndMeasureTime (const size_t nSteps) |
Helper function that simulates all components and measure their average time requirements. | |
double | getTotalMeasuredTime () |
Returns the total sum of the measured time of the components in the system. | |
void | sortComponentVectorsByMeasuredTime () |
Helper function that sorts C- and Q- component vectors by simulation time for each component. | |
void | distributeCcomponents (std::vector< std::vector< Component * > > &rSplitCVector, size_t nThreads) |
void | distributeQcomponents (std::vector< std::vector< Component * > > &rSplitQVector, size_t nThreads) |
void | distributeSignalcomponents (std::vector< std::vector< Component * > > &rSplitSignalVector, size_t nThreads) |
void | distributeNodePointers (std::vector< std::vector< Node * > > &rSplitNodeVector, size_t nThreads) |
void | reschedule (size_t nThreads) |
void | setDesiredTimestep (const double timestep) |
Sets the desired time step in a component system. | |
void | setInheritTimestep (const bool inherit=true) |
bool | doesInheritTimestep () const |
double | getDesiredTimeStep () const |
void | logTimeAndNodes (const size_t simStep) |
void | enableLog () |
Enable node data logging. | |
void | disableLog () |
Disable node data logging. | |
std::vector< double > * | getLogTimeVector () |
void | setNumLogSamples (const size_t nLogSamples) |
Set the desired number of log samples. | |
double | getLogStartTime () const |
void | setLogStartTime (const double logStartTime) |
size_t | getNumLogSamples () const |
Returns the desired number of log samples. | |
size_t | getNumActuallyLoggedSamples () const |
Returns the number of actually logged data samples. | |
void | stopSimulation (const HString &rReason) |
Set the stop simulation flag to abort the initialization or simulation loops. | |
void | stopSimulation () |
Set the stop simulation flag to abort the initialization or simulation loops, (without messages being added) | |
bool | wasSimulationAborted () const |
Check if the simulation was aborted. | |
bool | setOrAddSystemParameter (const HString &rName, const HString &rValue, const HString &rType, const HString &rDescription="", const HString &rUnitOrQuantity="", const bool internal=false, const bool force=false) |
Set, add or change a system parameter including all meta data. | |
bool | setSystemParameter (const HString &rName, const HString &rValue, const HString &rType, const HString &rDescription="", const HString &rUnitOrQuantity="", const bool internal=false, const bool force=false) |
Set or change a system parameter including all meta data. | |
void | unRegisterParameter (const HString &name) |
Removes a parameter from the component. | |
void | addSearchPath (HString searchPath) |
Adds a search path that can be used by its components to look for external files, e.g. area curves. | |
void | addSubNode (Node *pNode) |
Add a node as subnode in the system, if the node is already owned by someone else, transfer ownership to this system. | |
void | removeSubNode (Node *pNode) |
Removes a previously added node. | |
Public Member Functions inherited from Component | |
virtual void | reconfigure () |
Re-configures a component, depending on e.g. parameter values or external files. | |
virtual void | deconfigure () |
Deconfigure a component, use this to cleanup and memory/resource allocations you have made in configure. | |
void | setDisabled (bool value) |
bool | isDisabled () const |
void | setDesiredTimestep (const double timestep) |
void | setInheritTimestep (const bool inherit=true) |
Set whether the component should inherit timestep from its system parent. | |
bool | doesInheritTimestep () const |
Check if a component inherits timestep from its system parent. | |
void | setName (HString name) |
Set the desired component name. | |
const HString & | getName () const |
Get the component name. | |
const HString & | getTypeName () const |
Get the TypeName of the component. | |
const HString & | getSubTypeName () const |
Get the SubType name of the component. | |
void | setSubTypeName (const HString &rSubTypeName) |
Set the SubType name of the component. | |
HString | getTypeCQSString () const |
Get the CQStype as string. | |
virtual bool | isComponentC () const |
Check if a component is a C-Component. | |
virtual bool | isComponentQ () const |
Check if a component is a Q-Component. | |
virtual bool | isComponentSignal () const |
Check if a component is a Signal-Component. | |
virtual bool | isExperimental () const |
Check if component is tagged as experimental. | |
virtual bool | isObsolete () const |
Check if component is tagged as obsolete. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rQuantityOrUnit, const double defaultValue, double &rData) |
Add (register) a constant parameter with a default value to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rQuantity, const HString &rUnit, const double defaultValue, double &rData) |
Add (register) a constant parameter with a default value to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, HTextBlock &rData) |
void | addConstant (const HString &rName, const HString &rDescription, HFilePath &rData) |
void | addConditionalConstant (const HString &rName, const HString &rDescription, std::vector< HString > &rConditions, int &rData) |
Add (register) a conditional constant parameter to the component. | |
void | addConditionalConstant (const HString &rName, const HString &rDescription, std::vector< HString > &rConditions, const int defaultValue, int &rData) |
Add (register) a conditional constant parameter to the component. | |
void | setReconfigurationParameter (const HString &rName) |
const std::vector< VariameterDescription > * | getVariameters () |
void | registerConditionalParameter (const HString &rName, const HString &rDescription, std::vector< HString > &rConditions, int &rValue) |
Register a conditional parameter value so that it can be accessed for read and write. | |
bool | hasParameter (const HString &rName) const |
Check if a component has a specific parameter. | |
void | getParameterNames (std::vector< HString > &rParameterNames) |
const std::vector< ParameterEvaluator * > * | getParametersVectorPtr () const |
const ParameterEvaluator * | getParameter (const HString &rName) |
void | getParameterValue (const HString &rName, HString &rValue) |
void * | getParameterDataPtr (const HString &rName) |
Returns a pointer directly to the parameter data variable. | |
bool | setParameterValue (const HString &rName, const HString &rValue, bool force=false) |
bool | checkParameters (HString &errParName) |
void | evaluateParameters () |
bool | evaluateParameter (const HString &rName, HString &rEvaluatedParameterValue, const HString &rType) |
void | setDefaultStartValue (Port *pPort, const size_t idx, const double value) |
Set the default startvalue in a port. | |
void | setDefaultStartValue (const HString &rPortName, const HString &rDataName, const double value) |
Set the default startvalue in a port. | |
double | getDefaultStartValue (Port *pPort, const size_t idx, const size_t portIdx=0) |
Get the an actual start value of a port. | |
double | getDefaultStartValue (const HString &rPortName, const HString &rDataName, const size_t portIdx=0) |
Get the an actual start value of a port. | |
void | disableStartValue (Port *pPort, const size_t idx) |
Disable a start value to prevent the user from setting it, this is usefully if you calculate the value internally. | |
void | disableStartValue (const HString &rPortName, const size_t idx) |
Disable a start value to prevent the user from setting it, this is usefully if you calculate the value internally. | |
void | disableStartValue (const HString &rPortName, const HString &rDataName) |
Disable a start value to prevent the user from setting it, this is usefully if you calculate the value internally. | |
std::vector< Port * > | getPortPtrVector () const |
Port * | getPort (const HString &rPortname) const |
Returns a pointer to the port with the given name. | |
std::vector< HString > | getPortNames () |
Returns a string vector containing names of all ports in the component. | |
double * | getSafeNodeDataPtr (Port *pPort, const int dataId) |
Get a pointer to the node data variable, (Port pointer version) | |
double * | getSafeNodeDataPtr (const HString &rPortName, const int dataId) |
Get a pointer to the node data variable, (Port name version) | |
double * | getSafeMultiPortNodeDataPtr (Port *pPort, const size_t portIdx, const int dataId) |
Get a pointer to node data in a subport in a multiport. | |
double * | getSafeMultiPortNodeDataPtr (Port *pPort, const size_t portIdx, const int dataId, const double defaultValue) |
Get a pointer to node data in a subport in a multiport (also setting initial value at the same time) | |
double | readNodeSafe (const HString &rPortName, const HString &rDataName, const size_t subPortIdx=0) |
Read value based on the port and node data name. | |
double | readNodeSafe (const HString &rPortName, const size_t dataId, const size_t subPortIdx=0) |
Read value based on the port name and node data id. | |
void | writeNodeSafe (const HString &rPortName, const HString &rDataName, const double value, const size_t subPortIdx=0) |
Write node data based on port and data name. | |
void | writeNodeSafe (const HString &rPortName, const size_t dataId, const double value, const size_t subPortIdx=0) |
Write node data based on port and data id. | |
ComponentSystem * | getSystemParent () const |
size_t | getModelHierarchyDepth () const |
double | getTimestep () const |
Returns the component simulation time step. | |
double * | getTimePtr () |
Returns a pointer to the simulation time variable in the component. | |
double | getTime () const |
Get the current simulation time. | |
void | setMeasuredTime (const double time) |
double | getMeasuredTime () const |
Returns the measured time variable for the component. This is used to measure time requirements when sorting components for multicore purposes. | |
void | addDebugMessage (const HString &rMessage, const HString &rTag="") const |
Write an Debug message, i.e. for debugging purposes. | |
void | addWarningMessage (const HString &rMessage, const HString &rTag="") const |
Write an Warning message. | |
void | addErrorMessage (const HString &rMessage, const HString &rTag="") const |
Write an Error message. | |
void | addInfoMessage (const HString &rMessage, const HString &rTag="") const |
Write an Info message. | |
void | addFatalMessage (const HString &rMessage, const HString &rTag="") const |
Writes a Fatal message and tells the receiver of the message to close program in a controlled way. Also prints message to log file. | |
void | stopSimulation (const HString &rReason="") |
Terminate/stop a running initialization or simulation. | |
HopsanEssentials * | getHopsanEssentials () |
HString | findFilePath (const HString &rFileName) const |
Find and return the full file path name of fileName within the system search path, parent systems included (path to HMF file is always in here) | |
std::vector< HString > | getSearchPaths () const |
virtual void | reInitializeValuesFromNodes () |
virtual void | solveSystem () |
virtual double | getStateVariableDerivative (int) |
virtual double | getStateVariableSecondDerivative (int) |
virtual void | getResiduals (double *, double *) |
virtual void | getJacobian (double *, double *, double *) |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, double &rData) |
Add (register) a constant parameter to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, int &rData) |
Add (register) a constant parameter to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, HString &rData) |
Add (register) a constant parameter to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, bool &rData) |
Add (register) a constant parameter to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, const int defaultValue, int &rData) |
Add (register) a constant parameter with a default value to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, const HString &defaultValue, HString &rData) |
Add (register) a constant parameter with a default value to the component. | |
void | addConstant (const HString &rName, const HString &rDescription, const HString &rUnit, const bool defaultValue, bool &rData) |
Add (register) a constant parameter with a default value to the component. | |
void | setConstantValue (const HString &rName, const double value) |
Set the value of a constant parameter. | |
void | setConstantValue (const HString &rName, const int value) |
Set the value of a constant parameter. | |
void | setConstantValue (const HString &rName, const HString &rValue) |
Set the value of a constant parameter. | |
void | setConstantValue (const HString &rName, const char *value) |
Set the value of a constant parameter. | |
void | setConstantValue (const HString &rName, const bool value) |
Set the value of a constant parameter. | |
Static Public Member Functions | |
static Component * | Creator () |
Static Public Member Functions inherited from ComponentSystem | |
static Component * | Creator () |
Additional Inherited Members | |
Public Types inherited from ComponentSystem | |
enum | UniqeNameEnumT { UniqueComponentNameType , UniqueSysportNameTyp , UniqueSysparamNameType , UniqueAliasNameType , UniqueReservedNameType } |
typedef std::map< HString, std::pair< std::vector< HString >, std::vector< HString > > > | SetParametersMapT |
Public Types inherited from Component | |
enum | CQSEnumT { CType , QType , SType , UndefinedCQSType } |
Enum type for all CQS types. | |
Protected Types inherited from ComponentSystem | |
typedef std::map< HString, Component * > | SubComponentMapT |
Protected Member Functions inherited from ComponentSystem | |
Protected Member Functions inherited from Component | |
Component () | |
Component base class Constructor. | |
virtual void | initialize () |
The initialize function must be overloaded in each component, it is used to initialize the component just before simulation begins. | |
virtual void | simulateOneTimestep () |
Simulates one time step. This component must be overloaded en each component. | |
virtual size_t | calcNumSimSteps (const double startT, const double stopT) const |
Port * | addInputVariable (const HString &rName, const HString &rDescription, const HString &rQuantityOrUnit, const double defaultValue, double **ppNodeData=0) |
Add an inputVariable (Scalar signal ReadPort) | |
Port * | addOutputVariable (const HString &rName, const HString &rDescription, const HString &rQuantityOrUnit, double **ppNodeData=0) |
Add an outputVariable (Scalar signal WritePort) without default value. | |
Port * | addOutputVariable (const HString &rName, const HString &rDescription, const HString &rQuantityOrUnit, const double defaultValue, double **ppNodeData=0) |
Add an outputVariable (Scalar signal WritePort) with default value. | |
void | initializeAutoSignalNodeDataPtrs () |
Automatically retrieve and assign node data pointers that have been registered. | |
Port * | addPort (const HString &rPortName, const PortTypesEnumT portType, const HString &rNodeType, const HString &rDescription, const Port::RequireConnectionEnumT reqConnection) |
Adds a port to the component, do not call this function directly unless you have to. | |
Port * | addPowerPort (const HString &rPortName, const HString &rNodeType, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Add a PowerPort with description to the component. | |
Port * | addReadPort (const HString &rPortName, const HString &rNodeType, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Add a ReadPort with description to the component. | |
Port * | addPowerMultiPort (const HString &rPortName, const HString &rNodeType, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Add a PowerMultiPort with description to the component. | |
Port * | addReadMultiPort (const HString &rPortName, const HString &rNodeType, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Add a ReadMultiPort with description to the component. | |
Port * | addWritePort (const HString &rPortName, const HString &rNodeType, const HString &rDescription="", const Port::RequireConnectionEnumT reqConnect=Port::Required) |
Add a WritePort with description to the component. | |
void | removePort (const HString &rPortName) |
bool | getPort (const HString &rPortname, Port *&rpPort) |
Get a port as reference to pointer. | |
HString | renamePort (const HString &rOldname, const HString &rNewname) |
Rename a port. | |
void | deletePort (const HString &rName) |
Removes and deletes a port from a component. | |
Protected Attributes inherited from ComponentSystem | |
bool | mWarnIfUnusedSystemParameters |
This bool can be toggled off in programmed subsystems to avoid annoying warnings. | |
std::vector< size_t > | mLogTheseTimeSteps |
size_t | mTotalTakenSimulationSteps |
SubComponentMapT | mSubComponentMap |
NumHopHelper * | mpNumHopHelper |
HString | mNumHopScript |
Protected Attributes inherited from Component | |
ComponentSystem * | mpSystemParent |
bool | mInheritTimestep |
double | mTimestep |
double | mDesiredTimestep |
double | mTime = 0 |
size_t | mModelHierarchyDepth |
This variable contains the depth of the system in the model hierarchy, (used by connect to figure out where to store nodes) | |
std::vector< HString > | mSearchPaths |
|
virtual |
Configures a component by setting up ports, variables, constants and other resources.
Every function must overload this function, in this function ports variables and constants will be added The component author is however free to add any other desired code as well. This function is called immediately after a component instance has been created
Reimplemented from ComponentSystem.
|
virtual |
Simulate function for single-threaded simulations.
[in] | stopT | Simulate from current time until stop time |
Reimplemented from ComponentSystem.
|
virtual |
Simulate function that overrides multi-threaded simulation call with a single-threaded call In case multi-threaded support is not available.
Reimplemented from ComponentSystem.