Skip to content
This repository was archived by the owner on May 18, 2019. It is now read-only.

Commit 9bcafd6

Browse files
rfrankeOpenModelica-Hudson
authored andcommitted
[Cpp] Fix derivative vars in XmlPropertyReader, ticket:4773
Commit b528b72 (Fatemeh Davoudi implementation of the symbolic model reduction algorithm) introduced _derVars and _resVars along with a second constructor that initialized the dimension of _derVars as _dimRHS. This second constructor was not used though, leaving _dimRHS undefined and running a for loop with undefined end during initialization. This commit removes the second constructor and the uninitialized variable. It uses consistent size info from SimVars instead. Belonging to [master]: - #2805
1 parent 6f93d97 commit 9bcafd6

File tree

4 files changed

+18
-20
lines changed

4 files changed

+18
-20
lines changed

SimulationRuntime/cpp/Core/DataExchange/XmlPropertyReader.cpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@ XmlPropertyReader::XmlPropertyReader(IGlobalSettings *globalSettings, std::strin
1616
,_isInitialized(false)
1717
{
1818
}
19-
XmlPropertyReader::XmlPropertyReader(IGlobalSettings *globalSettings, std::string propertyFile,int dimRHS)
20-
: IPropertyReader()
21-
,_globalSettings(globalSettings)
22-
,_propertyFile(propertyFile)
23-
,_isInitialized(false)
24-
,_dimRHS(dimRHS)
25-
{
26-
}
2719
XmlPropertyReader::~XmlPropertyReader()
2820
{
2921
}
@@ -173,13 +165,13 @@ void XmlPropertyReader::readInitialValues(IContinuous& system, shared_ptr<ISimVa
173165
}
174166
}
175167

176-
int derSize=_dimRHS;
177-
for(int i=0; i<derSize;i++)
178-
{
179-
string name="der";
180-
string descripton="der";
181-
_derVars.addOutputVar(name, descripton, derVars+i, false);
182-
}
168+
size_t derSize = sim_vars->getDimStateVars();
169+
string name = "der";
170+
string descripton = "der";
171+
for (size_t i = 0; i < derSize; i++)
172+
{
173+
_derVars.addOutputVar(name, descripton, derVars + i, false);
174+
}
183175

184176
LOGGER_WRITE_END(LC_INIT, LL_DEBUG);
185177
}

SimulationRuntime/cpp/Include/Core/DataExchange/XmlPropertyReader.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ class BOOST_EXTENSION_XML_READER_DECL XmlPropertyReader : public IPropertyReader
77
{
88
public:
99
XmlPropertyReader(IGlobalSettings *globalSettings, std::string propertyFile);
10-
XmlPropertyReader(IGlobalSettings *globalSettings, std::string propertyFile, int dimRHS);
1110
~XmlPropertyReader();
1211

1312
void readInitialValues(IContinuous& system, shared_ptr<ISimVars> sim_vars);
@@ -28,6 +27,5 @@ class BOOST_EXTENSION_XML_READER_DECL XmlPropertyReader : public IPropertyReader
2827
output_real_vars_t _realVars;
2928
output_der_vars_t _derVars;
3029
output_res_vars_t _resVars;
31-
int _dimRHS;
3230
bool _isInitialized;
3331
};

SimulationRuntime/cpp/Include/Core/System/ISimVars.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ class ISimVars
2727
virtual void setBoolVarsVector(const bool* vars) = 0;
2828
virtual void setStringVarsVector(const string* vars) = 0;
2929

30+
/*Methods to get sizes of variable vectors*/
31+
virtual size_t getDimString() const = 0;
32+
virtual size_t getDimBool() const = 0;
33+
virtual size_t getDimInt() const = 0;
34+
virtual size_t getDimPreVars() const = 0;
35+
virtual size_t getDimReal() const = 0;
36+
virtual size_t getDimStateVars() const = 0;
37+
virtual size_t getStateVectorIndex() const = 0;
3038

3139
/*Methods for initialize model array variables in simvars memory*/
3240
virtual double* initRealArrayVar(size_t size,size_t start_index)= 0;

SimulationRuntime/cpp/Include/Core/System/SimVars.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ class BOOST_EXTENSION_SIMVARS_DECL SimVars: public ISimVars
111111
virtual int& getPreVar(const int& var);
112112
virtual bool& getPreVar(const bool& var);
113113

114-
protected:
115-
void create(size_t dim_real, size_t dim_int, size_t dim_bool, size_t dim_string, size_t dim_pre_vars, size_t dim_state_vars, size_t state_index);
116-
117114
virtual size_t getDimString() const;
118115
virtual size_t getDimBool() const;
119116
virtual size_t getDimInt() const;
@@ -122,6 +119,9 @@ class BOOST_EXTENSION_SIMVARS_DECL SimVars: public ISimVars
122119
virtual size_t getDimStateVars() const;
123120
virtual size_t getStateVectorIndex() const;
124121

122+
protected:
123+
void create(size_t dim_real, size_t dim_int, size_t dim_bool, size_t dim_string, size_t dim_pre_vars, size_t dim_state_vars, size_t state_index);
124+
125125
void *alignedMalloc(size_t required_bytes, size_t alignment);
126126
void alignedFree(void* p);
127127

0 commit comments

Comments
 (0)