User: rhaas Date: 2014/03/12 10:01 PM
Modified: /trunk/src/nuc_eos_cxx/ nuc_eos_dpdrhoe_dpderho.cc, nuc_eos_full.cc, nuc_eos_press.cc, nuc_eos_press_cs2.cc, nuc_eos_short.cc
Log: EOS_Omni: always set anyerr when an error is detected
consistently abort the EOS call when checkbounds fails
From: Roland Haas rhaas@tapir.caltech.edu
File Changes:
Directory: /trunk/src/nuc_eos_cxx/ ==================================
File [modified]: nuc_eos_dpdrhoe_dpderho.cc Delta lines: +2 -2 =================================================================== --- trunk/src/nuc_eos_cxx/nuc_eos_dpdrhoe_dpderho.cc 2014-03-13 03:01:48 UTC (rev 99) +++ trunk/src/nuc_eos_cxx/nuc_eos_dpdrhoe_dpderho.cc 2014-03-13 03:01:52 UTC (rev 100) @@ -57,11 +57,11 @@ nuc_eos_findtemp(lr,lt,ye[i],lxeps,*prec, (double *restrict)(<out),&keyerr[i]); } else { + // will be overwritten further down, only marks error keyerr[i] = 667; - *anyerr = 1; } // epstot > 0.0
- if(keyerr[i] != 0) { + if(keyerr[i]) { // now try negative temperature treatment double eps0, eps1; int idx[8];
File [modified]: nuc_eos_full.cc Delta lines: +8 -3 =================================================================== --- trunk/src/nuc_eos_cxx/nuc_eos_full.cc 2014-03-13 03:01:48 UTC (rev 99) +++ trunk/src/nuc_eos_cxx/nuc_eos_full.cc 2014-03-13 03:01:52 UTC (rev 100) @@ -41,10 +41,14 @@ keyerr[i] = checkbounds(rho[i], temp[i], ye[i]); if(keyerr[i] != 0) { *anyerr = 1; - return; } }
+ // Abort if there is any error in checkbounds. + // This should never happen and the program should abort with + // a fatal error anyway. No point in doing any further EOS calculations. + if(*anyerr) return; + for(int i=0;i<n;i++) {
int idx[8]; @@ -218,11 +222,12 @@ (double *restrict)(<out),&keyerr[i]); } else { keyerr[i] = 667; - *anyerr=1; } // epstot > 0.0
- if(!keyerr[i]) { + if(keyerr[i]) { + *anyerr=1; + } else { temp[i] = exp(ltout); int idx[8]; double delx,dely,delz;
File [modified]: nuc_eos_press.cc Delta lines: +6 -1 =================================================================== --- trunk/src/nuc_eos_cxx/nuc_eos_press.cc 2014-03-13 03:01:48 UTC (rev 99) +++ trunk/src/nuc_eos_cxx/nuc_eos_press.cc 2014-03-13 03:01:52 UTC (rev 100) @@ -27,10 +27,14 @@ keyerr[i] = checkbounds(rho[i], temp[i], ye[i]); if(keyerr[i] != 0) { *anyerr = 1; - return; } }
+ // Abort if there is any error in checkbounds. + // This should never happen and the program should abort with + // a fatal error anyway. No point in doing any further EOS calculations. + if(*anyerr) return; + for(int i=0;i<n;i++) { int idx[8]; double delx,dely,delz; @@ -111,6 +115,7 @@ nuc_eos_findtemp(lr,lt,ye[i],lxeps,*prec, (double *restrict)(<out),&keyerr[i]); } else { + // will be overwritten further down, only marks error keyerr[i] = 667; } // epstot > 0.0
File [modified]: nuc_eos_press_cs2.cc Delta lines: +7 -3 =================================================================== --- trunk/src/nuc_eos_cxx/nuc_eos_press_cs2.cc 2014-03-13 03:01:48 UTC (rev 99) +++ trunk/src/nuc_eos_cxx/nuc_eos_press_cs2.cc 2014-03-13 03:01:52 UTC (rev 100) @@ -28,10 +28,14 @@ keyerr[i] = checkbounds(rho[i], temp[i], ye[i]); if(keyerr[i] != 0) { *anyerr = 1; - return; } }
+ // Abort if there is any error in checkbounds. + // This should never happen and the program should abort with + // a fatal error anyway. No point in doing any further EOS calculations. + if(*anyerr) return; + for(int i=0;i<n;i++) { int idx[8]; double delx,dely,delz; @@ -116,11 +120,11 @@ nuc_eos_findtemp(lr,lt,ye[i],lxeps,*prec, (double *restrict)(<out),&keyerr[i]); } else { + // will be overwritten further down, only marks error keyerr[i] = 667; - *anyerr = 1; } // epstot > 0.0
- if(keyerr[i] != 0) { + if(keyerr[i]) { // now try negative temperature treatment double eps0, eps1; int idx[8];
File [modified]: nuc_eos_short.cc Delta lines: +12 -4 =================================================================== --- trunk/src/nuc_eos_cxx/nuc_eos_short.cc 2014-03-13 03:01:48 UTC (rev 99) +++ trunk/src/nuc_eos_cxx/nuc_eos_short.cc 2014-03-13 03:01:52 UTC (rev 100) @@ -33,10 +33,14 @@ keyerr[i] = checkbounds(rho[i], temp[i], ye[i]); if(keyerr[i] != 0) { *anyerr = 1; - return; } }
+ // Abort if there is any error in checkbounds. + // This should never happen and the program should abort with + // a fatal error anyway. No point in doing any further EOS calculations. + if(*anyerr) return; + for(int i=0;i<n;i++) {
int idx[8]; @@ -154,12 +158,14 @@ nuc_eos_findtemp(lr,lt,ye[i],lxeps,*prec, (double *restrict)(<out),&keyerr[i]); } else { + // will be overwritten further down, only marks error keyerr[i] = 667; - *anyerr=1; } // epstot > 0.0
- if(!keyerr[i]) { + if(keyerr[i]) { + *anyerr = 1; + } else { temp[i] = exp(ltout); int idx[8]; double delx,dely,delz; @@ -258,7 +264,9 @@ nuc_eos_findtemp_entropy(lr,lt,ye[i],ent[i],*prec, (double *restrict)(<out),&keyerr[i]);
- if(!keyerr[i]) { + if(keyerr[i]) { + *anyerr = 1; + } else { temp[i] = exp(ltout); int idx[8]; double delx,dely,delz;
commits@lists.einsteintoolkit.org