[Commits] [svn:einsteintoolkit] GRHydro/trunk/src/ (Rev. 207)

cott at tapir.caltech.edu cott at tapir.caltech.edu
Tue Jan 4 08:40:06 CST 2011


User: cott
Date: 2011/01/04 08:40 AM

Modified:
 /trunk/src/
  GRHydro_Prim2Con.F90

Log:
 * Update error handling in _hot routine of Prim2Con.

File Changes:

Directory: /trunk/src/
======================

File [modified]: GRHydro_Prim2Con.F90
Delta lines: +25 -3
===================================================================
--- trunk/src/GRHydro_Prim2Con.F90	2011-01-02 15:54:48 UTC (rev 206)
+++ trunk/src/GRHydro_Prim2Con.F90	2011-01-04 14:40:06 UTC (rev 207)
@@ -231,9 +231,11 @@
 
 ! begin EOS Omni vars
   integer :: n,keytemp,anyerr,keyerr(1)
+  real*8  :: temp0(1)
   n = 1;keytemp = 0;anyerr = 0;keyerr(1) = 0
 ! end EOS Omni vars
 
+  temp0 = temp
   w = 1.d0 / sqrt(1.d0 - (gxx*dvelx*dvelx + gyy*dvely*dvely + gzz &
        *dvelz*dvelz + 2*gxy*dvelx*dvely + 2*gxz*dvelx *dvelz + 2*gyz&
        *dvely*dvelz))  
@@ -262,19 +264,39 @@
            call CCTK_WARN(1,warnline)
         endif
      else
-        call CCTK_WARN(1,"EOS error in prim2con_hot")
+        ! This is a way of recovering even on finer refinement levels:
+        ! Use the average temperature at the interface instead of the
+        ! reconstructed specific internal energy.
+        call CCTK_WARN(1,"EOS error in prim2con_hot: NOW using averaged temp!")
         write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
         call CCTK_WARN(1,warnline)
-        write(warnline,"(1P10E15.6)") drho,deps,temp,ye
+        write(warnline,"(1P10E15.6)") drho,deps,temp0,ye
         call CCTK_WARN(1,warnline)
         write(warnline,"(A7,i8)") "code: ",keyerr(1)
         call CCTK_WARN(1,warnline)
         write(warnline,"(A10,i5)") "reflevel: ", GRHydro_reflevel
         call CCTK_WARN(1,warnline)
-        call CCTK_WARN(0,"Aborting!!!")
+        keytemp=1
+        temp = temp0
+        call EOS_Omni_press(handle,keytemp,GRHydro_eos_rf_prec,n,&
+             drho,deps,temp,ye,dpress,keyerr,anyerr)  
+        keytemp=0
+        if(anyerr.ne.0) then
+           call CCTK_WARN(1,"EOS error in prim2con_hot")
+           write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
+           call CCTK_WARN(1,warnline)
+           write(warnline,"(1P10E15.6)") drho,deps,temp,ye
+           call CCTK_WARN(1,warnline)
+           write(warnline,"(A7,i8)") "code: ",keyerr(1)
+           call CCTK_WARN(1,warnline)
+           write(warnline,"(A10,i5)") "reflevel: ", GRHydro_reflevel
+           call CCTK_WARN(1,warnline)
+           call CCTK_WARN(0,"Aborting!!!")
+        endif
      endif
   endif
 
+
   vlowx = gxx*dvelx + gxy*dvely + gxz*dvelz
   vlowy = gxy*dvelx + gyy*dvely + gyz*dvelz
   vlowz = gxz*dvelx + gyz*dvely + gzz*dvelz



More information about the Commits mailing list