OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment that supports ordinary (i.e., non-delayed) and TLM connections.
Model.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenModelica.
3  *
4  * Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
5  * c/o Linköpings universitet, Department of Computer and Information Science,
6  * SE-58183 Linköping, Sweden.
7  *
8  * All rights reserved.
9  *
10  * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR
11  * THIS OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.2.
12  * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES
13  * RECIPIENT'S ACCEPTANCE OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3,
14  * ACCORDING TO RECIPIENTS CHOICE.
15  *
16  * The OpenModelica software and the Open Source Modelica
17  * Consortium (OSMC) Public License (OSMC-PL) are obtained
18  * from OSMC, either from the above address,
19  * from the URLs: http://www.ida.liu.se/projects/OpenModelica or
20  * http://www.openmodelica.org, and in the OpenModelica distribution.
21  * GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
22  *
23  * This program is distributed WITHOUT ANY WARRANTY; without
24  * even the implied warranty of MERCHANTABILITY or FITNESS
25  * FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
26  * IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
27  *
28  * See the full OSMC Public License conditions for more details.
29  *
30  */
31 
32 #ifndef _OMS_MODEL_H_
33 #define _OMS_MODEL_H_
34 
35 #include "Clock.h"
36 #include "ComRef.h"
37 #include "Element.h"
38 #include "ResultWriter.h"
39 #include "Types.h"
40 
41 #include <pugixml.hpp>
42 
43 namespace oms
44 {
45  class Component;
46  class System;
47 
48  class Model
49  {
50  public:
51  ~Model();
52 
57  static Model* NewModel(const ComRef& cref);
58  const ComRef& getCref() const {return cref;}
59  System* getSystem(const ComRef& cref);
60  oms_status_enu_t delete_(const ComRef& cref);
61  Component* getComponent(const ComRef& cref);
62  System* getTopLevelSystem() const {return system;}
63  std::string getTempDirectory() const {return tempDir;}
64  oms_status_enu_t rename(const ComRef& cref);
65  oms_status_enu_t list(const ComRef& cref, char** contents);
67  oms_status_enu_t exportToSSD(pugi::xml_node& node) const;
68  oms_status_enu_t importFromSSD(const pugi::xml_node& node);
69  oms_status_enu_t exportToFile(const std::string& filename) const;
70  void copyResources(bool copy_resources) {this->copy_resources = copy_resources;}
71  bool copyResources() {return copy_resources;}
72 
73  oms::Element** getElements() {return &elements[0];}
74  oms_status_enu_t getAllResources(std::vector<std::string>& resources) const;
75 
78  oms_status_enu_t simulate_asynchronous(void (*cb)(const char* cref, double time, oms_status_enu_t status));
83 
85 
86  oms_status_enu_t setStartTime(double value);
87  double getStartTime() const {return startTime;}
88  oms_status_enu_t setStopTime(double value);
89  double getStopTime() const {return stopTime;}
90 
92  double getLoggingInterval() const {return loggingInterval;}
93  oms_status_enu_t setResultFile(const std::string& filename, int bufferSize);
94  oms_status_enu_t emit(double time, bool force=false);
95  oms_status_enu_t addSignalsToResults(const char* regex);
96  oms_status_enu_t removeSignalsFromResults(const char* regex);
97 
99  bool cancelSimulation() const {return cancelSim;}
100 
101  bool validState(int validStates) const {return (modelState & validStates);}
102 
103  private:
104  Model(const ComRef& cref, const std::string& tempDir);
105 
106  // stop the compiler generating methods copying the object
107  Model(Model const& copy);
108  Model& operator=(Model const& copy);
109 
111 
112  private:
114  System* system = NULL;
115  std::string tempDir;
116 
117  std::vector<oms::Element*> elements;
118  bool copy_resources = true;
119 
121 
122  // ssd:DefaultExperiment
123  double startTime = 0.0;
124  double stopTime = 1.0;
125 
127  double lastEmit;
128  double loggingInterval = 0.0;
129  int bufferSize = 10;
130  std::string resultFilename;
132 
133  bool cancelSim;
134  };
135 }
136 
137 #endif
oms_status_enu_t setResultFile(const std::string &filename, int bufferSize)
Definition: Model.cpp:599
oms_status_enu_t list(const ComRef &cref, char **contents)
Definition: Model.cpp:155
oms_status_enu_t removeSignalsFromResults(const char *regex)
Definition: Model.cpp:650
System * getTopLevelSystem() const
Definition: Model.h:62
oms_status_enu_t initialize()
Definition: Model.cpp:391
Definition: ResultWriter.h:67
Definition: Model.h:48
Definition: Clock.h:38
Model & operator=(Model const &copy)
not implemented
oms_status_enu_t setLoggingInterval(double loggingInterval)
Definition: Model.cpp:564
double getLoggingInterval() const
Definition: Model.h:92
Model(const ComRef &cref, const std::string &tempDir)
Definition: Model.cpp:45
oms_modelState_enu_t modelState
Definition: Model.h:120
oms_status_enu_t setStopTime(double value)
Definition: Model.cpp:363
ComRef cref
Definition: Model.h:113
bool validState(int validStates) const
Definition: Model.h:101
~Model()
Definition: Model.cpp:55
std::string getTempDirectory() const
Definition: Model.h:63
std::string tempDir
Definition: Model.h:115
int bufferSize
Definition: Model.h:129
oms_status_enu_t
Definition: Types.h:43
oms_status_enu_t addSignalsToResults(const char *regex)
Definition: Model.cpp:642
System * system
Definition: Model.h:114
oms_status_enu_t emit(double time, bool force=false)
Definition: Model.cpp:583
oms_modelState_enu_t getModelState() const
Definition: Model.h:84
oms_modelState_enu_t
Definition: Types.h:52
System * getSystem(const ComRef &cref)
Definition: Model.cpp:106
oms_status_enu_t terminate()
Definition: Model.cpp:519
double stopTime
Definition: Model.h:124
oms_status_enu_t simulate()
Definition: Model.cpp:477
double getStartTime() const
Definition: Model.h:87
oms_status_enu_t setStartTime(double value)
Definition: Model.cpp:354
oms_status_enu_t addSystem(const ComRef &cref, oms_system_enu_t type)
Definition: Model.cpp:205
double startTime
Definition: Model.h:123
ComRef - component reference.
Definition: ComRef.h:43
oms_status_enu_t cancelSimulation_asynchronous()
Definition: Model.cpp:658
oms_system_enu_t
Definition: Types.h:101
oms_status_enu_t simulate_asynchronous(void(*cb)(const char *cref, double time, oms_status_enu_t status))
Definition: Model.cpp:465
Definition: Component.h:54
double loggingInterval
Definition: Model.h:128
oms_status_enu_t stepUntil(double stopTime)
Definition: Model.cpp:498
oms_status_enu_t exportToSSD(pugi::xml_node &node) const
Definition: Model.cpp:230
Component * getComponent(const ComRef &cref)
Definition: Model.cpp:123
oms_status_enu_t rename(const ComRef &cref)
Definition: Model.cpp:97
Clock clock
Definition: Model.h:131
bool cancelSim
Definition: Model.h:133
std::string resultFilename
default <name>_res.mat
Definition: Model.h:130
bool copy_resources
Definition: Model.h:118
oms_status_enu_t registerSignalsForResultFile()
Definition: Model.cpp:572
double getStopTime() const
Definition: Model.h:89
Definition: BusConnector.h:15
oms_status_enu_t importFromSSD(const pugi::xml_node &node)
Definition: Model.cpp:249
std::vector< oms::Element * > elements
Definition: Model.h:117
oms_status_enu_t getAllResources(std::vector< std::string > &resources) const
Definition: Model.cpp:346
void copyResources(bool copy_resources)
Definition: Model.h:70
oms_status_enu_t reset()
Definition: Model.cpp:543
bool cancelSimulation() const
Definition: Model.h:99
Element.
Definition: Element.h:52
static Model * NewModel(const ComRef &cref)
Definition: Model.cpp:63
Definition: Types.h:53
const ComRef & getCref() const
Definition: Model.h:58
ResultWriter * resultFile
Definition: Model.h:126
Definition: System.h:58
oms_status_enu_t instantiate()
Definition: Model.cpp:372
oms::Element ** getElements()
Definition: Model.h:73
oms_status_enu_t delete_(const ComRef &cref)
Definition: Model.cpp:137
bool copyResources()
Definition: Model.h:71
oms_status_enu_t exportToFile(const std::string &filename) const
Definition: Model.cpp:291
double lastEmit
Definition: Model.h:127