diff options
author | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2011-09-15 16:46:26 +0000 |
---|---|---|
committer | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2011-09-15 16:46:26 +0000 |
commit | 822ea6f7b84d7185e098fb340f63c33c72568e1c (patch) | |
tree | efad69095acea192dcfe7ee870a6cc6630375619 /src | |
parent | 4a1153954ec8fa5f84bdc0a7ff2e94436079b431 (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.F90 | 49 |
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") |