OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment that supports ordinary (i.e., non-delayed) and TLM connections.
Variable.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_VARIABLE_H_
33 #define _OMS_VARIABLE_H_
34 
35 #include "ComRef.h"
36 #include "Connector.h"
37 #include "Types.h"
38 #include <fmilib.h>
39 #include <string>
40 #include <vector>
41 
42 namespace oms
43 {
44  class Variable
45  {
46  public:
47  Variable(fmi2_import_variable_t *var, unsigned int index);
48  ~Variable();
49 
50  void markAsState() { is_state = true; }
51  void markAsDer() { is_der = true; }
52 
53  // causality attribute
54  bool isParameter() const { return fmi2_causality_enu_parameter == causality; }
55  bool isCalculatedParameter() const { return fmi2_causality_enu_calculated_parameter == causality; }
56  bool isInput() const { return fmi2_causality_enu_input == causality; }
57  bool isOutput() const { return fmi2_causality_enu_output == causality; }
58  bool isLocal() const { return fmi2_causality_enu_local == causality; }
59  bool isState() const { return is_state; }
60  bool isDer() const { return is_der; }
61  bool isIndependent() const { return fmi2_causality_enu_independent == causality; }
62 
63  // initial attribute
64  bool isExact() const { return fmi2_initial_enu_exact == initialProperty; }
65  bool isApprox() const { return fmi2_initial_enu_approx == initialProperty; }
66  bool isCalculated() const { return fmi2_initial_enu_calculated == initialProperty; }
67 
68  bool isInitialUnknown() const {
69  return (isOutput() && (isApprox() || isCalculated()))
71  || (isState() && (isApprox() || isCalculated()))
72  || (isDer() && (isApprox() || isCalculated()));
73  }
74 
75  const ComRef& getCref() const { return cref; }
76  operator std::string() const {return std::string(cref);}
77 
78  fmi2_value_reference_t getValueReference() const { return vr; }
79  oms_signal_type_enu_t getType() const { return type; }
80  const std::string& getDescription() const { return description; }
81 
82  bool isTypeReal() const { return oms_signal_type_real == type; }
84  bool isTypeBoolean() const { return oms_signal_type_boolean == type; }
85 
86  std::string getCausalityString() { return std::string(fmi2_causality_to_string(causality)); }
88 
89  unsigned int getIndex() const { return index; }
91 
92  private:
94  std::string description;
95  fmi2_value_reference_t vr;
96  fmi2_causality_enu_t causality;
97  fmi2_initial_enu_t initialProperty;
98  bool is_state;
99  bool is_der;
101  unsigned int index;
102 
103  friend bool operator==(const oms::Variable& v1, const oms::Variable& v2);
104  friend bool operator!=(const oms::Variable& v1, const oms::Variable& v2);
105  };
106 
107  bool operator==(const oms::Variable& v1, const oms::Variable& v2);
108  bool operator!=(const oms::Variable& v1, const oms::Variable& v2);
109 }
110 
111 #endif
ComRef cref
Definition: Variable.h:93
bool isInitialUnknown() const
Definition: Variable.h:68
oms_signal_type_enu_t getType() const
Definition: Variable.h:79
bool isTypeBoolean() const
Definition: Variable.h:84
const ComRef & getCref() const
Definition: Variable.h:75
Definition: Variable.h:44
void markAsDer()
Definition: Variable.h:51
bool isIndependent() const
Definition: Variable.h:61
oms_signal_type_enu_t type
Definition: Variable.h:100
oms_causality_enu_t
Definition: Types.h:61
bool is_der
Definition: Variable.h:99
bool isState() const
Definition: Variable.h:59
std::string getCausalityString()
Definition: Variable.h:86
const std::string & getDescription() const
Definition: Variable.h:80
bool isOutput() const
Definition: Variable.h:57
bool isInput() const
Definition: Variable.h:56
fmi2_value_reference_t vr
Definition: Variable.h:95
Variable(fmi2_import_variable_t *var, unsigned int index)
Definition: Variable.cpp:42
bool isCalculated() const
Definition: Variable.h:66
bool isApprox() const
Definition: Variable.h:65
ComRef - component reference.
Definition: ComRef.h:43
unsigned int getIndex() const
Definition: Variable.h:89
bool isLocal() const
Definition: Variable.h:58
Connector.
Definition: Connector.h:48
Definition: Types.h:137
fmi2_initial_enu_t initialProperty
Definition: Variable.h:97
Definition: Types.h:138
oms_signal_type_enu_t
Definition: Types.h:135
oms_causality_enu_t getCausality() const
Definition: Variable.cpp:86
Definition: Types.h:140
Definition: AlgLoop.h:44
bool isCalculatedParameter() const
Definition: Variable.h:55
unsigned int index
index origin = 1
Definition: Variable.h:101
bool isExact() const
Definition: Variable.h:64
bool isDer() const
Definition: Variable.h:60
void markAsState()
Definition: Variable.h:50
bool is_state
Definition: Variable.h:98
bool isTypeInteger() const
Definition: Variable.h:83
Definition: Types.h:136
~Variable()
Definition: Variable.cpp:82
bool isTypeReal() const
Definition: Variable.h:82
oms::Connector makeConnector() const
Definition: Variable.h:90
fmi2_value_reference_t getValueReference() const
Definition: Variable.h:78
fmi2_causality_enu_t causality
Definition: Variable.h:96
friend bool operator!=(const oms::Variable &v1, const oms::Variable &v2)
friend bool operator==(const oms::Variable &v1, const oms::Variable &v2)
std::string description
Definition: Variable.h:94
bool isParameter() const
Definition: Variable.h:54