aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2013-05-29 16:35:04 +0000
committerrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2013-05-29 16:35:04 +0000
commit02d65d88abd6e22da6ca35cec820e0cedc5da2af (patch)
tree0432dcfe976b297e3f666e709b2eddcfdc6b722a
parent626db7d5d3b8c83a51c9130369dc5fed4fad457e (diff)
GRHydro: add option to control action taken when con2prim failed
From: Roland Haas <rhaas@caltech.edu> git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@529 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45
-rw-r--r--param.ccl6
-rw-r--r--src/GRHydro_Con2Prim.F909
2 files changed, 14 insertions, 1 deletions
diff --git a/param.ccl b/param.ccl
index f48fa7a..b56d061 100644
--- a/param.ccl
+++ b/param.ccl
@@ -397,6 +397,12 @@ int GRHydro_c2p_warnlevel "Warnlevel for Con2Prim warnings" STEERABLE=ALWAYS
0:1 :: "Either 0 or 1"
} 0
+keyword GRHydro_c2p_failed_action "what to do when we detect a c2p failure"
+{
+ "abort" :: "abort with error"
+ "terminate" :: "request termination"
+} "abort"
+
REAL sqrtdet_thr "Threshold to apply cons rescalings deep inside the horizon" STEERABLE=ALWAYS
{
1.0: :: "Larger values guarantees this sort of rescaling only deep inside the horizon"
diff --git a/src/GRHydro_Con2Prim.F90 b/src/GRHydro_Con2Prim.F90
index 87289b9..000ec7f 100644
--- a/src/GRHydro_Con2Prim.F90
+++ b/src/GRHydro_Con2Prim.F90
@@ -2288,6 +2288,7 @@ subroutine check_GRHydro_C2P_failed(CCTK_ARGUMENTS)
DECLARE_CCTK_PARAMETERS
DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
integer :: i, j, k, nx, ny, nz
character(len=300) warnline
@@ -2401,7 +2402,13 @@ subroutine check_GRHydro_C2P_failed(CCTK_ARGUMENTS)
write(warnline,'(a32,4g16.7)') 'lapse, shift: ',&
alp(i,j,k),betax(i,j,k),betay(i,j,k),betaz(i,j,k)
call CCTK_WARN(1,warnline)
- call CCTK_WARN(0,"Aborting.")
+ if (CCTK_EQUALS(GRHydro_c2p_failed_action, "terminate")) then
+ call CCTK_TerminateNext(cctkGH)
+ else if (CCTK_EQUALS(GRHydro_c2p_failed_action, "abort")) then
+ call CCTK_ERROR("Aborting.")
+ else
+ call CCTK_ERROR("Internal error, unknown action")
+ end if
!$OMP END CRITICAL
end if