summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>2001-03-16 13:52:57 +0000
committerallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>2001-03-16 13:52:57 +0000
commitd7047b96161982604acea7280457eae068abf6c8 (patch)
tree7520f5e0b382691321dc69d8ca845ad6a492aab2 /src
parent2dc28e2a7354e04fa9a5f879e658f8b1f85755ec (diff)
Adding extra conditions for terminating the evolution loop.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@2080 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src')
-rw-r--r--src/main/CactusDefaultEvolve.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/main/CactusDefaultEvolve.c b/src/main/CactusDefaultEvolve.c
index 89ab45b8..e6ffe9da 100644
--- a/src/main/CactusDefaultEvolve.c
+++ b/src/main/CactusDefaultEvolve.c
@@ -60,7 +60,7 @@ static int cactus_terminate_global = 0;
********************* Local Routine 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);
int CactusDefaultEvolve(tFleshConfig *config);
void TerminationStepper(cGH *GH) ;
@@ -127,7 +127,7 @@ int CactusDefaultEvolve(tFleshConfig *config)
*/
- while (! DoneMainLoop (config->GH[0]->cctk_time, iteration))
+ while (! DoneMainLoop (config->GH[0],config->GH[0]->cctk_time, iteration))
{
#ifdef DEBUG_CCTK
@@ -211,12 +211,13 @@ int CactusDefaultEvolve(tFleshConfig *config)
@endhistory
@@*/
-static int DoneMainLoop (CCTK_REAL cctk_time, int iteration)
+static int DoneMainLoop (cGH *GH, CCTK_REAL cctk_time, int iteration)
{
int param_type;
CCTK_INT cctk_itlast;
CCTK_REAL cctk_initial_time;
CCTK_REAL cctk_final_time;
+ CCTK_INT terminate_next;
cctk_initial_time = (*(CCTK_REAL *)CCTK_ParameterGet("cctk_initial_time",
"Cactus",&param_type));
@@ -224,10 +225,13 @@ static int DoneMainLoop (CCTK_REAL cctk_time, int iteration)
"Cactus",&param_type));
cctk_itlast = (*(CCTK_INT *)CCTK_ParameterGet("cctk_itlast",
"Cactus",&param_type));
+ terminate_next = (*(CCTK_INT *)CCTK_ParameterGet("terminate_next",
+ "Cactus",&param_type));
- 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)));
}