Skip to content

Commit

Permalink
changed datatype in TextFileWriter and MatFileWriter of cpp runtime
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@21871 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
niklwors committed Aug 14, 2014
1 parent 431bc16 commit 77960f4
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 29 deletions.
18 changes: 9 additions & 9 deletions Compiler/Template/CodegenCpp.tpl
Expand Up @@ -240,7 +240,7 @@ template simulationWriteOutputHeaderFile(SimCode simCode)
::=
match simCode
case SIMCODE(modelInfo=MODELINFO(__),simulationSettingsOpt = SOME(settings as SIMULATION_SETTINGS(__))) then
let n = numParamVars(modelInfo)
let n = numProtectedParamVars(modelInfo)
let outputtype = match settings.outputFormat case "mat" then "MatFileWriter" else "TextFileWriter"
let numparams = match settings.outputFormat case "csv" then "1" else n
<<
Expand Down Expand Up @@ -3859,29 +3859,29 @@ case SIMCODE(modelInfo = MODELINFO(__),simulationSettingsOpt = SOME(settings as
match settings.outputFormat case "mat"
then
<<
HistoryImplType::value_type_p params(<%numParamvars%>);
HistoryImplType::value_type_p params;
<%writeoutputparams(modelInfo,simCode,useFlatArrayNotation)%>
>>
else
<<
HistoryImplType::value_type_p params(1);
HistoryImplType::value_type_p params;
>>
%>
_historyImpl->write(params,_global_settings->getStartTime(),_global_settings->getEndTime());
}
//Write the current values
else
{
HistoryImplType::value_type_v v(<%numProtectedAlgvars(modelInfo)%>+<%numProtectedAliasvars(modelInfo)%>+<%numStatevars(modelInfo)%>);
HistoryImplType::value_type_dv v2(<%numDerivativevars(modelInfo)%>);
HistoryImplType::value_type_v v;
HistoryImplType::value_type_dv v2;
/* HistoryImplType::value_type_v *vP = new HistoryImplType::value_type_v(<%numAlgvars(modelInfo)%>+<%numInOutvars(modelInfo)%>+<%numAliasvars(modelInfo)%>+<%numStatevars(modelInfo)%>);
HistoryImplType::value_type_dv *v2P = new HistoryImplType::value_type_dv(<%numDerivativevars(modelInfo)%>);
HistoryImplType::value_type_v &v = *vP;
HistoryImplType::value_type_dv &v2 = *v2P;*/
<%writeoutput2(modelInfo,simCode,useFlatArrayNotation)%>
<%if Flags.isSet(Flags.WRITE_TO_BUFFER) then
<<
HistoryImplType::value_type_r v3(<%numResidues(allEquations)%>);
HistoryImplType::value_type_r v3;
<%(allEquations |> eqs => (eqs |> eq => writeoutputAlgloopsolvers(eq,simCode));separator="\n")%>
double residues [] = {<%(allEquations |> eqn => writeoutput3(eqn, simCode, useFlatArrayNotation));separator=","%>};
for(int i=0;i<<%numResidues(allEquations)%>;i++) v3(i) = residues[i];
Expand Down Expand Up @@ -6067,7 +6067,7 @@ case MODELINFO(vars=SIMVARS(__)) then
let &varDeclsCref = buffer "" /*BUFD*/

<<
const int algVarsStart = 0;
const int algVarsStart = 1;
const int discrAlgVarsStart = algVarsStart + <%numProtectedRealAlgvars(modelInfo)%>;
const int intAlgVarsStart = discrAlgVarsStart + <%numProtectedDiscreteAlgVars(modelInfo)%>;
const int boolAlgVarsStart = intAlgVarsStart + <%numProtectedIntAlgvars(modelInfo)%>;
Expand All @@ -6086,7 +6086,7 @@ case MODELINFO(vars=SIMVARS(__)) then
<%vars.boolAliasVars |> SIMVAR(isProtected=false) hasindex i7 =>'v(boolAliasVarsStart+<%i7%>)=<%getAliasVar(aliasvar, simCode,contextOther, useFlatArrayNotation)%>;';align=8 %>

<%(vars.stateVars |> SIMVAR() hasindex i8 =>'v(stateVarsStart+<%i8%>)=__z[<%index%>]; ';align=8 )%>
<%(vars.derivativeVars |> SIMVAR() hasindex i9 =>'v2(<%i9%>)=__zDot[<%index%>]; ';align=8 )%>
<%(vars.derivativeVars |> SIMVAR() hasindex i9 fromindex 1=>'v2(<%i9%>)=__zDot[<%index%>]; ';align=8 )%>
>>
end writeoutput2;

Expand All @@ -6100,7 +6100,7 @@ case MODELINFO(vars=SIMVARS(__),varInfo=VARINFO(__)) then
let &varDeclsCref = buffer "" /*BUFD*/

<<
const int paramVarsStart = 0;
const int paramVarsStart = 1;
const int intParamVarsStart = paramVarsStart + <%numProtectedRealParamVars(modelInfo)%>;
const int boolparamVarsStart = intParamVarsStart + <%numProtectedIntParamVars(modelInfo)%>;

Expand Down
12 changes: 6 additions & 6 deletions SimulationRuntime/cpp/CMakeLists.txt
Expand Up @@ -134,12 +134,12 @@ ENDIF(Boost_LOG_FOUND AND Boost_LOG_SETUP_FOUND)
find_package(Boost 1.54 COMPONENTS thread atomic)
SET(Boost_LIBRARIES_TMP ${Boost_LIBRARIES_TMP} ${Boost_LIBRARIES})
find_package(Threads)
IF(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)
add_definitions(-DUSE_BOOST_THREAD)
message(STATUS "Using boost thread")
ELSE(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)
message(STATUS "Boost thread disabled")
ENDIF(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)
#IF(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)
# add_definitions(-DUSE_BOOST_THREAD)
# message(STATUS "Using boost thread")
#ELSE(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)
# message(STATUS "Boost thread disabled")
#ENDIF(Boost_THREAD_FOUND AND Boost_ATOMIC_FOUND)

find_package(Boost COMPONENTS filesystem system serialization program_options REQUIRED)
SET(Boost_LIBRARIES_TMP ${Boost_LIBRARIES_TMP} ${Boost_LIBRARIES})
Expand Down
Expand Up @@ -16,13 +16,13 @@
#include <fstream>
using std::ios;

template <unsigned long dim_1,unsigned long dim_2,unsigned long dim_3,unsigned long dim_4>
template <size_t dim_1,size_t dim_2,size_t dim_3,size_t dim_4>
struct MatFileWriter
{
public:
typedef ublas::vector<double, ublas::bounded_array<double,dim_1> > value_type_v;
typedef ublas::vector<double, ublas::bounded_array<double,dim_2> > value_type_dv;
typedef ublas::vector<double, ublas::bounded_array<double,dim_4> > value_type_p;
typedef StatArrayDim1<double,dim_1> value_type_v;
typedef StatArrayDim1<double,dim_2> value_type_dv;
typedef StatArrayDim1<double,dim_4> value_type_p;
MatFileWriter(unsigned long size,string output_path,string file_name)
:_curser_position(0)
,_file_name(file_name)
Expand Down Expand Up @@ -282,9 +282,9 @@ typedef ublas::vector<double, ublas::bounded_array<double,dim_4> > value_type_p;
* \return
*/
/*========================================================================================{end}==*/
void write(const value_type_p& v_list,double start_time,double end_time)
void write(value_type_p& v_list,double start_time,double end_time)
{
unsigned int uiParCount = v_list.size() + 1; // all variables + time
unsigned int uiParCount = v_list.getNumElems() + 1; // all variables + time
double *doubleHelpMatrix = NULL;

// get memory and reset to zero
Expand Down Expand Up @@ -552,9 +552,9 @@ typedef ublas::vector<double, ublas::bounded_array<double,dim_4> > value_type_p;
* \return
*/
/*========================================================================================{end}==*/
void write(const value_type_v& v_list,const value_type_dv& v2_list,double time)
void write(value_type_v& v_list,value_type_dv& v2_list,double time)
{
unsigned int uiVarCount = v_list.size() + v2_list.size() + 1; // alle Variablen, alle abgeleiteten Variablen und die Zeit
unsigned int uiVarCount = v_list.getNumElems() + v2_list.getNumElems() + 1; // alle Variablen, alle abgeleiteten Variablen und die Zeit
double *doubleHelpMatrix = NULL;

uiValueCount++;
Expand Down
Expand Up @@ -20,13 +20,13 @@ using std::ios;
/**
Policy class to write simulation results in a text file
*/
template <unsigned long dim_1,unsigned long dim_2,unsigned long dim_3,unsigned long dim_4>
template <size_t dim_1,size_t dim_2,size_t dim_3,size_t dim_4>
struct TextFileWriter
{
public:
typedef ublas::vector<double, ublas::bounded_array<double,dim_1> > value_type_v;
typedef ublas::vector<double, ublas::bounded_array<double,dim_2> > value_type_dv;
typedef ublas::vector<double, ublas::bounded_array<double,dim_4> > value_type_p;
typedef StatArrayDim1<double,dim_1> value_type_v;
typedef StatArrayDim1<double,dim_2> value_type_dv;
typedef StatArrayDim1<double,dim_4> value_type_p;

TextFileWriter(unsigned long size,string output_path,string file_name)
:_curser_position(0)
Expand Down Expand Up @@ -149,7 +149,7 @@ struct TextFileWriter
@v2_list derivatives vars
@time
*/
void write(const value_type_v& v_list,const value_type_dv& v2_list,double time)
void write(value_type_v& v_list,value_type_dv& v2_list,double time)
{
_output_stream<<time<<SEPERATOR;

Expand Down
2 changes: 1 addition & 1 deletion SimulationRuntime/cpp/Include/Core/HistoryImpl.h
Expand Up @@ -9,7 +9,7 @@
using std::map;
#endif

template< template <unsigned long,unsigned long,unsigned long,unsigned long> class ResultsPolicy,unsigned long dim_1,unsigned long dim_2,unsigned long dim_3,unsigned long dim_4>
template< template <size_t,size_t,size_t,size_t> class ResultsPolicy,size_t dim_1, size_t dim_2,size_t dim_3,size_t dim_4>
class HistoryImpl: public IHistory,
public ResultsPolicy<dim_1,dim_2,dim_3,dim_4>
{
Expand Down
11 changes: 11 additions & 0 deletions SimulationRuntime/cpp/Include/Core/Math/Array.h
Expand Up @@ -152,6 +152,17 @@ template<typename T, std::size_t size>class StatArrayDim1 : public BaseArray<T>
{

}
typedef typename boost::array<T,size>::const_iterator const_iterator;
typedef typename boost::array<T,size>::iterator iterator;
iterator begin()
{
return _real_array.begin();
}
iterator end()
{
return _real_array.end();
}

private:
boost::array<T,size> _real_array;
};
Expand Down

0 comments on commit 77960f4

Please sign in to comment.