Skip to content

Commit

Permalink
- use average of reference data values for tollerance belt in Simulat…
Browse files Browse the repository at this point in the history
…ionResultsCmp

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@12820 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Jens Frenkel committed Sep 7, 2012
1 parent 7fa4173 commit f17fbf0
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions Compiler/runtime/SimulationResultsCmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,15 @@ unsigned int cmpData(char* varname, DataField *time, DataField *reftime, DataFie
char interpolate = 0;
char isdifferent = 0;
char refevent = 0;
double average=0;
for (i=0;i<refdata->n;i++){
average += absdouble(refdata->data[i]);
}
average = average/((double)refdata->n);
#ifdef DEBUGOUTPUT
fprintf(stderr, "average: %.6g\n",average);
#endif
average = reltol*fabs(average)+abstol;
j = 0;
tr = reftime->data[j];
dr = refdata->data[j];
Expand Down Expand Up @@ -353,14 +362,14 @@ unsigned int cmpData(char* varname, DataField *time, DataField *reftime, DataFie

err = absdouble(d_left-dr_left);
#ifdef DEBUGOUTPUT
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,reltol*fabs(dr_left)+abstol);
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,average);
#endif
if ( err < reltol*fabs(dr_left)+abstol){
if ( err < average){
err = absdouble(d_right-dr_right);
#ifdef DEBUGOUTPUT
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,reltol*fabs(dr_right)+abstol);
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,average);
#endif
if ( err < reltol*fabs(dr_right)+abstol){
if ( err < average){
continue;
}
}
Expand Down Expand Up @@ -411,14 +420,14 @@ unsigned int cmpData(char* varname, DataField *time, DataField *reftime, DataFie
#endif
err = absdouble(d_left-dr_left);
#ifdef DEBUGOUTPUT
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,reltol*fabs(dr_left)+abstol);
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,average);
#endif
if ( err < reltol*fabs(dr_left)+abstol){
if ( err < average){
err = absdouble(d_right-dr_right);
#ifdef DEBUGOUTPUT
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,reltol*fabs(dr_right)+abstol);
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,average);
#endif
if ( err < reltol*fabs(dr_right)+abstol){
if ( err < average){
j = j_event;
tr = reftime->data[j];
continue;
Expand Down Expand Up @@ -510,17 +519,17 @@ unsigned int cmpData(char* varname, DataField *time, DataField *reftime, DataFie
#endif
err = absdouble(d-dr);
#ifdef DEBUGOUTPUT
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,reltol*fabs(dr)+abstol);
fprintf(stderr, "delta:%.6g reltol:%.6g\n",err,average);
#endif
if ( err > reltol*fabs(dr)+abstol){
if ( err > average){
if (j+1<reftime->n) {
if (reftime->data[j+1] == tr) {
dr = refdata->data[j+1];
err = absdouble(d-dr);
}
}

if (err < reltol*fabs(dr)+abstol){
if (err < average){
continue;
}

Expand Down

0 comments on commit f17fbf0

Please sign in to comment.