Skip to content

Commit

Permalink
Adding new simulation results comparison based on csv-compare
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@17854 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Oct 23, 2013
1 parent 4c298a0 commit a4df620
Show file tree
Hide file tree
Showing 10 changed files with 630 additions and 102 deletions.
3 changes: 2 additions & 1 deletion COPYING
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,8 @@ or online http://opensource.org/licenses/LGPL-2.1.
[BSD] LAPACK Copyright (c) 1992-2011 The University of Tennessee and The University
2000-2011 The University of California Berkeley
2006-2011 The University of Colorado Denver
[BSD] TinyMT Copyright (c) 2011, 2013 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo.
[BSD] TinyMT Copyright (c) 2011, 2013 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo
[BSD] csv-compare Tubes.cs Copyright (c) 2013, ITI GmbH Dresden
[BSD-1] Copyright (c) 2005-2013, Troy D. Hanson http://troydhanson.github.com/uthash/
[LGPL 2.1] lpsolve55
[Public Domain] sqlite3
Expand Down
22 changes: 15 additions & 7 deletions Compiler/BackEnd/SimCodeUtil.mo
Original file line number Diff line number Diff line change
Expand Up @@ -8098,9 +8098,18 @@ protected function rewriteIndex
input list<SimCode.SimVar> inVars;
input Integer iindex;
output list<SimCode.SimVar> outVars;
algorithm
outVars := rewriteIndexWork(inVars, iindex, {});
end rewriteIndex;

protected function rewriteIndexWork
input list<SimCode.SimVar> inVars;
input Integer iindex;
input list<SimCode.SimVar> inAcc;
output list<SimCode.SimVar> outVars;
algorithm
outVars :=
match(inVars, iindex)
match(inVars, iindex, inAcc)
local
DAE.ComponentRef name;
BackendDAE.VarKind kind;
Expand All @@ -8118,14 +8127,13 @@ algorithm
SimCode.Causality causality;
list<String> numArrayElement;
Integer index;
SimCode.SimVar var;

case ({}, _) then {};
case (SimCode.SIMVAR(name, kind, comment, unit, displayUnit, index, minVal, maxVal, initVal, nomVal, isFixed, type_, isDiscrete, arrayCref, aliasvar, source, causality, NONE(), numArrayElement)::rest, index_)
equation
rest2 = rewriteIndex(rest, index_ + 1);
then (SimCode.SIMVAR(name, kind, comment, unit, displayUnit, index_, minVal, maxVal, initVal, nomVal, isFixed, type_, isDiscrete, arrayCref, aliasvar, source, causality, NONE(), numArrayElement)::rest2);
case ({}, _, _) then listReverse(inAcc);
case (SimCode.SIMVAR(name, kind, comment, unit, displayUnit, index, minVal, maxVal, initVal, nomVal, isFixed, type_, isDiscrete, arrayCref, aliasvar, source, causality, NONE(), numArrayElement)::rest, index_, _)
then rewriteIndexWork(rest, index_ + 1, SimCode.SIMVAR(name, kind, comment, unit, displayUnit, index_, minVal, maxVal, initVal, nomVal, isFixed, type_, isDiscrete, arrayCref, aliasvar, source, causality, NONE(), numArrayElement)::inAcc);
end match;
end rewriteIndex;
end rewriteIndexWork;

protected function varIndexComparer
input SimCode.SimVar lhs;
Expand Down
4 changes: 2 additions & 2 deletions Compiler/FrontEnd/ModelicaBuiltin.mo
Original file line number Diff line number Diff line change
Expand Up @@ -2345,8 +2345,8 @@ public function diffSimulationResults "compares simulation results."
input String actualFile;
input String expectedFile;
input String diffPrefix;
input Real relTol := 0.01;
input Real absTol := 0.0001;
input Real relTol := 1e-4 "y tolerance";
input Real rangeDelta := 0.002 "x tolerance";
input String[:] vars := fill("",0);
input Boolean keepEqualResults := false;
output Boolean success /* On success, resultFiles is empty. But it might be empty on failure anyway (for example if an input file does not exist) */;
Expand Down
4 changes: 2 additions & 2 deletions Compiler/runtime/Makefile.common
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ BackendDAEEXT_rml.o : BackendDAEEXT.cpp matching.c matchmaker.h matching_cheap.c
BackendDAEEXT_omc.o : BackendDAEEXT.cpp $(RML_COMPAT)
Socket_rml.o : socketimpl.c
Socket_omc.o : socketimpl.c
SimulationResults_rml.o : SimulationResults.c SimulationResultsCmp.c errorext.h $(SimRuntimeCDir)/read_matlab4.h
SimulationResults_omc.o : SimulationResults.c SimulationResultsCmp.c errorext.h $(SimRuntimeCDir)/read_matlab4.h
SimulationResults_rml.o : SimulationResults.c SimulationResultsCmp.c SimulationResultsCmpTubes.c errorext.h $(SimRuntimeCDir)/read_matlab4.h
SimulationResults_omc.o : SimulationResults.c SimulationResultsCmp.c SimulationResultsCmpTubes.c errorext.h $(SimRuntimeCDir)/read_matlab4.h
TaskGraphResults_rml.o : TaskGraphResultsCmp.h TaskGraphResultsCmp.cpp
TaskGraphResults_omc.o : TaskGraphResultsCmp.h TaskGraphResultsCmp.cpp
HpcOmBenchmarkExt_rml.o : HpcOmBenchmarkExt.cpp
Expand Down
9 changes: 3 additions & 6 deletions Compiler/runtime/SimulationResults.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,16 +246,11 @@ static void* SimulationResultsImpl__readVars(const char *filename, SimulationRes
}
case CSV: {
char **variables = read_csv_variables(simresglob->csvReader);
char **toFree = variables;
if (variables) {
variables++ /* Skip the first element: It's the malloc buffer. */;
while (*variables) {
res = mk_cons(mk_scon(*variables),res);
variables++;
}
/* All strings are allocated in a single malloc for efficiency */
free(*toFree);
free(toFree);
}
return res;
}
Expand Down Expand Up @@ -355,7 +350,9 @@ static void* SimulationResultsImpl__readDataset(const char *filename, void *vars
return NULL;
} else {
col=mk_nil();
for (i=0;i<dimsize;i++) col=mk_cons(mk_rcon(vals[i]),col);
for (i=0;i<dimsize;i++) {
col=mk_cons(mk_rcon(vals[i]),col);
}
res = mk_cons(col,res);
}
}
Expand Down

0 comments on commit a4df620

Please sign in to comment.