Skip to content

Commit ff60f29

Browse files
niklworsunknown
authored andcommitted
fix for change output format in cpp runtime
1 parent 67b941c commit ff60f29

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

Compiler/Template/CodegenCpp.tpl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -744,14 +744,14 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
744744
: <%lastIdentOfPath(modelInfo.name)%>StateSelection(globalSettings, simObjects)
745745
{
746746

747-
_writeOutput = _sim_objects->LoadWriter(<%numAlgvars(modelInfo)%> + <%numAliasvars(modelInfo)%> + 2*<%numStatevars(modelInfo)%>).lock();
747+
748748

749749
}
750750

751751
<%lastIdentOfPath(modelInfo.name)%>WriteOutput::<%lastIdentOfPath(modelInfo.name)%>WriteOutput(<%lastIdentOfPath(modelInfo.name)%>WriteOutput& instance)
752752
: <%lastIdentOfPath(modelInfo.name)%>StateSelection(instance.getGlobalSettings(), instance._sim_objects)
753753
{
754-
_writeOutput = instance._sim_objects->LoadWriter(<%numAlgvars(modelInfo)%> + <%numAliasvars(modelInfo)%> + 2*<%numStatevars(modelInfo)%>).lock();
754+
755755
}
756756

757757
<%lastIdentOfPath(modelInfo.name)%>WriteOutput::~<%lastIdentOfPath(modelInfo.name)%>WriteOutput()
@@ -768,7 +768,8 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
768768
{
769769
if(getGlobalSettings()->getOutputPointType()!= OPT_NONE)
770770
{
771-
_writeOutput->init();
771+
_writeOutput = _sim_objects->LoadWriter(<%numAlgvars(modelInfo)%> + <%numAliasvars(modelInfo)%> + 2*<%numStatevars(modelInfo)%>).lock();
772+
_writeOutput->init();
772773
_writeOutput->clear();
773774
}
774775
}

SimulationRuntime/cpp/SimCoreFactory/OMCFactory/OMCFactory.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ SimSettings OMCFactory::readSimulationParameter(int argc, const char* argv[])
8383
map<string, OutputPointType> outputPointTypeMap = MAP_LIST_OF
8484
"all", OPT_ALL MAP_LIST_SEP "step", OPT_STEP MAP_LIST_SEP
8585
"none", OPT_NONE MAP_LIST_END;
86+
87+
map<string, OutputFormat> outputFormatTypeMap = MAP_LIST_OF
88+
"csv", CSV MAP_LIST_SEP "mat", MAT MAP_LIST_SEP
89+
"buffer", BUFFER MAP_LIST_SEP "empty", EMPTY MAP_LIST_END;
8690
po::options_description desc("Allowed options");
8791

8892
//program options that can be overwritten by OMEdit must be declared as vector
@@ -106,6 +110,7 @@ SimSettings OMCFactory::readSimulationParameter(int argc, const char* argv[])
106110
("log-settings,V", po::value< vector<string> >(), "log information: init, nls, ls, solv, output, event, model, other")
107111
("alarm,A", po::value<unsigned int >()->default_value(360), "sets timeout in seconds for simulation")
108112
("output-type,O", po::value< string >()->default_value("all"), "the points in time written to result file: all (output steps + events), step (just output points), none")
113+
("output-format,P", po::value< string >()->default_value("mat"), "The simulation results output format")
109114
;
110115

111116
// a group for all options that should not be visible if '--help' is set
@@ -224,8 +229,19 @@ SimSettings OMCFactory::readSimulationParameter(int argc, const char* argv[])
224229
throw ModelicaSimulationError(MODEL_FACTORY,"log-settings flags not supported: " + log_vec[i] + "\n");
225230
}
226231
}
227-
OutputFormat outputFormat = MAT;
228-
fs::path libraries_path = fs::path( runtime_lib_path) ;
232+
OutputFormat outputFormat;
233+
if (vm.count("output-format"))
234+
{
235+
236+
string outputFormatType_str = vm["output-format"].as<string>();
237+
outputFormat = outputFormatTypeMap[outputFormatType_str];
238+
}
239+
else
240+
throw ModelicaSimulationError(MODEL_FACTORY, "output-format is not set");
241+
242+
243+
244+
fs::path libraries_path = fs::path( runtime_lib_path) ;
229245
fs::path modelica_path = fs::path( modelica_lib_path) ;
230246

231247
libraries_path.make_preferred();

0 commit comments

Comments
 (0)