diff options
author | allen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-03-16 13:52:57 +0000 |
---|---|---|
committer | allen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-03-16 13:52:57 +0000 |
commit | d7047b96161982604acea7280457eae068abf6c8 (patch) | |
tree | 7520f5e0b382691321dc69d8ca845ad6a492aab2 /src | |
parent | 2dc28e2a7354e04fa9a5f879e658f8b1f85755ec (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.c | 16 |
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",¶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))); } |