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

roland.haas at physics.gatech.edu roland.haas at physics.gatech.edu
Thu Sep 15 11:46:26 CDT 2011


User: rhaas
Date: 2011/09/15 11:46 AM

Modified:
 /trunk/
  param.ccl
 /trunk/src/
  GRHydro_Con2Prim.F90

Log:
 * improve behavior of CoreCollapseControl upon recovery
 * improve handling of too-low temperatures in GRHydro

File Changes:

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

File [modified]: GRHydro_Con2Prim.F90
Delta lines: +43 -6
===================================================================
--- trunk/src/GRHydro_Con2Prim.F90	2011-09-15 16:45:26 UTC (rev 269)
+++ trunk/src/GRHydro_Con2Prim.F90	2011-09-15 16:46:26 UTC (rev 270)
@@ -628,8 +628,8 @@
            call CCTK_WARN(failinfomode,warnline)
            write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
            call CCTK_WARN(failinfomode,warnline)
-           if(nf.gt.nfudgemax) then
-              call CCTK_WARN(failinfomode,"EOS error in c2p 0a: injected heat too many times")
+           if(nf.gt.nfudgemax.and.GRHydro_c2p_reset_eps_tau_hot_eos.ne.1) then
+              call CCTK_WARN(failinfomode,"EOS error in c2p 1: injected heat too many times")
               write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
               call CCTK_WARN(failinfomode,warnline)
               write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
@@ -639,6 +639,19 @@
               write(warnline,"(A10,i5)") "reflevel: ", GRHydro_reflevel
               call CCTK_WARN(failinfomode,warnline)
               call CCTK_WARN(failwarnmode,"Aborting!!!")
+           else
+              call CCTK_WARN(failinfomode,"EOS error in c2p 1: LAST RESORT -- reset eps and tau based on old temp")
+              write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
+              call CCTK_WARN(failinfomode,warnline)
+              write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+              call CCTK_WARN(failinfomode,warnline)
+              keytemp = 1
+              call EOS_Omni_press(handle,keytemp,GRHydro_eos_rf_prec,n,&
+                   rho,epsilon,temp,ye,xpress,keyerr,anyerr)
+              tau = ( (rho + rho*epsilon) + xpress ) * w_lorentz**2 - xpress - rho*w_lorentz
+              write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+              call CCTK_WARN(failinfomode,warnline)
+              keytemp = 0
            endif
         else
            call CCTK_WARN(failinfomode,"EOS error in c2p 0")
@@ -706,7 +719,7 @@
            call CCTK_WARN(failinfomode,warnline)
            write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
            call CCTK_WARN(failinfomode,warnline)
-           if(nf.gt.nfudgemax) then
+           if(nf.gt.nfudgemax.and.GRHydro_c2p_reset_eps_tau_hot_eos.ne.1) then
               call CCTK_WARN(failinfomode,"EOS error in c2p 1: injected heat too many times")
               write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
               call CCTK_WARN(failinfomode,warnline)
@@ -717,6 +730,19 @@
               write(warnline,"(A10,i5)") "reflevel: ", GRHydro_reflevel
               call CCTK_WARN(failinfomode,warnline)
               call CCTK_WARN(failwarnmode,"Aborting!!!")
+           else
+              call CCTK_WARN(failinfomode,"EOS error in c2p 1: LAST RESORT -- reset eps and tau based on old temp")
+              write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
+              call CCTK_WARN(failinfomode,warnline)
+              write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+              call CCTK_WARN(failinfomode,warnline)
+              keytemp = 1
+              call EOS_Omni_press(handle,keytemp,GRHydro_eos_rf_prec,n,&
+                   rho,epsilon,temp,ye,xpress,keyerr,anyerr)
+              tau = ( (rho + rho*epsilon) + xpress ) * w_lorentz**2 - xpress - rho*w_lorentz
+              write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+              call CCTK_WARN(failinfomode,warnline)
+              keytemp = 0
            endif
         else
            call CCTK_WARN(failinfomode,"EOS error in c2p 1")
@@ -789,8 +815,6 @@
              ! found for a given epsilon. The amount of times
              ! we get to this place should be monitored, as this
              ! 'failsafe' mode creates artificial heat.
-             write(warnline,"(4i5,1P10E15.6)") GRHydro_reflevel,ii,jj,kk,x,y,z
-             call CCTK_WARN(0,warnline)
              nf = 0
              do while(anyerr.ne.0.and.nf.le.nfudgemax)
                 anyerr = 0
@@ -804,7 +828,7 @@
              call CCTK_WARN(failinfomode,warnline)
              write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
              call CCTK_WARN(failinfomode,warnline)
-             if(nf.gt.nfudgemax) then
+             if(nf.gt.nfudgemax.and.GRHydro_c2p_reset_eps_tau_hot_eos.ne.1) then
                 call CCTK_WARN(failinfomode,"EOS error in c2p 1: injected heat too many times")
                 write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
                 call CCTK_WARN(failinfomode,warnline)
@@ -815,6 +839,19 @@
                 write(warnline,"(A10,i5)") "reflevel: ", GRHydro_reflevel
                 call CCTK_WARN(failinfomode,warnline)
                 call CCTK_WARN(failwarnmode,"Aborting!!!")
+             else
+                call CCTK_WARN(failinfomode,"EOS error in c2p 1: LAST RESORT -- reset eps and tau based on old temp")
+                write(warnline,"(3i5,1P10E15.6)") ii,jj,kk,x,y,z
+                call CCTK_WARN(failinfomode,warnline)
+                write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+                call CCTK_WARN(failinfomode,warnline)
+                keytemp = 1
+                call EOS_Omni_press(handle,keytemp,GRHydro_eos_rf_prec,n,&
+                     rho,epsilon,temp,ye,xpress,keyerr,anyerr)
+                tau = ( (rho + rho*epsilon) + xpress ) * w_lorentz**2 - xpress - rho*w_lorentz
+                write(warnline,"(1P10E15.6)") rho,epsilon,temp,ye
+                call CCTK_WARN(failinfomode,warnline)
+                keytemp = 0
              endif
           else
              call CCTK_WARN(failinfomode,"EOS error in c2p 2")

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

File [modified]: param.ccl
Delta lines: +4 -0
===================================================================
--- trunk/param.ccl	2011-09-15 16:45:26 UTC (rev 269)
+++ trunk/param.ccl	2011-09-15 16:46:26 UTC (rev 270)
@@ -267,6 +267,10 @@
 boolean GRHydro_eos_hot_eps_fix "Activate quasi-failsafe mode for hot EOSs" STEERABLE=ALWAYS
 {
 } "no"
+
+boolean GRHydro_c2p_reset_eps_tau_hot_eos "As a last resort, reset tau" STEERABLE=ALWAYS
+{
+} "no"
  
 REAL GRHydro_hot_atmo_temp "Temperature of the hot atmosphere in MeV" STEERABLE=ALWAYS
 {



More information about the Commits mailing list