aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2011-09-15 16:46:26 +0000
committerrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2011-09-15 16:46:26 +0000
commit822ea6f7b84d7185e098fb340f63c33c72568e1c (patch)
treeefad69095acea192dcfe7ee870a6cc6630375619 /src
parent4a1153954ec8fa5f84bdc0a7ff2e94436079b431 (diff)
* improve behavior of CoreCollapseControl upon recovery
* improve handling of too-low temperatures in GRHydro git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@270 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45
Diffstat (limited to 'src')
-rw-r--r--src/GRHydro_Con2Prim.F9049
1 files changed, 43 insertions, 6 deletions
diff --git a/src/GRHydro_Con2Prim.F90 b/src/GRHydro_Con2Prim.F90
index b1e1507..220f92d 100644
--- a/src/GRHydro_Con2Prim.F90
+++ b/src/GRHydro_Con2Prim.F90
@@ -628,8 +628,8 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
! 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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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 @@ subroutine Con2Prim_pt_hot(ii,jj,kk,handle, dens, sx, sy, sz, tau, ye_con, rho,
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")