aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2001-03-16 13:55:18 +0000
committerallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2001-03-16 13:55:18 +0000
commit7bffa1ceb0bb60517936fcd9b8c62ab6ea026762 (patch)
tree89f0c11381a06a6c2ca6daeebba03e1ca783954a
parent90ca3ed6efb6fbb110e15af764d5bc5253e05159 (diff)
Adding extra conditions for termination.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@311 b61c5cb5-eaca-4651-9a7a-d64986f99364
-rw-r--r--param.ccl1
-rw-r--r--src/Evolve.c13
2 files changed, 8 insertions, 6 deletions
diff --git a/param.ccl b/param.ccl
index fb2d96b..f389b10 100644
--- a/param.ccl
+++ b/param.ccl
@@ -9,6 +9,7 @@ USES REAL cctk_final_time
USES INT cctk_itlast
+USES BOOLEAN terminate_next
############################# Restricted Parameters #########################
restricted:
diff --git a/src/Evolve.c b/src/Evolve.c
index 6c20bcc..14a8b9c 100644
--- a/src/Evolve.c
+++ b/src/Evolve.c
@@ -46,7 +46,7 @@ CCTK_FILEVERSION(CactusPUGH_PUGH_Evolve_c)
/* Local function prototypes. */
-static int DoneMainLoop (CCTK_REAL cctk_time, int iteration);
+static int DoneMainLoop (cGH *GH, CCTK_REAL cctk_time, int iteration);
static int StepGH(cGH *GH);
static void RotateTimeLevelsGH(cGH *cgh);
@@ -85,7 +85,7 @@ int PUGH_Evolve(tFleshConfig *config)
}
EndForallConvLevels;
- while (! DoneMainLoop (config->GH[0]->cctk_time, iteration))
+ while (! DoneMainLoop (config->GH[0],config->GH[0]->cctk_time, iteration))
{
iteration = CCTK_SetMainLoopIndex(++iteration);
@@ -155,13 +155,14 @@ int PUGH_Evolve(tFleshConfig *config)
@endhistory
@@*/
-static int DoneMainLoop (CCTK_REAL cctk_time, int iteration)
+static int DoneMainLoop (cGH *GH, CCTK_REAL cctk_time, int iteration)
{
DECLARE_CCTK_PARAMETERS
- return (! (iteration < cctk_itlast ||
- (cctk_final_time > cctk_initial_time ?
- cctk_time < cctk_final_time : 0)));
+ return (terminate_next || CCTK_TerminationReached(GH) ||
+ ! ( iteration < cctk_itlast ||
+ (cctk_final_time > cctk_initial_time ?
+ cctk_time < cctk_final_time : 0)));
}