From d7047b96161982604acea7280457eae068abf6c8 Mon Sep 17 00:00:00 2001 From: allen Date: Fri, 16 Mar 2001 13:52:57 +0000 Subject: Adding extra conditions for terminating the evolution loop. git-svn-id: http://svn.cactuscode.org/flesh/trunk@2080 17b73243-c579-4c4c-a9d2-2d5706c11dac --- src/main/CactusDefaultEvolve.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src') 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",¶m_type)); @@ -224,10 +225,13 @@ static int DoneMainLoop (CCTK_REAL cctk_time, int iteration) "Cactus",¶m_type)); cctk_itlast = (*(CCTK_INT *)CCTK_ParameterGet("cctk_itlast", "Cactus",¶m_type)); + terminate_next = (*(CCTK_INT *)CCTK_ParameterGet("terminate_next", + "Cactus",¶m_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))); } -- cgit v1.2.3