diff options
author | schnetter <> | 2004-06-21 14:07:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-06-21 14:07:00 +0000 |
commit | f23b6f971732863651bb1d6f771da6cd829fae65 (patch) | |
tree | def3308437c83a8b8fafffa87c5dffb4c0d32303 /Carpet/CarpetIOScalar | |
parent | 37501ed4c981f0c5385f9b71fce811b080f977ac (diff) |
Store the last output iteration/time instead of the next output
Store the last output iteration/time instead of the next output
iteration/time. This makes it easier to change the output interval.
Also initialise the output state properly.
darcs-hash:20040621140741-07bb3-018843cd1f3468d374183579d6c623a21ca1a084.gz
Diffstat (limited to 'Carpet/CarpetIOScalar')
-rw-r--r-- | Carpet/CarpetIOScalar/interface.ccl | 6 | ||||
-rw-r--r-- | Carpet/CarpetIOScalar/schedule.ccl | 4 | ||||
-rw-r--r-- | Carpet/CarpetIOScalar/src/ioscalar.cc | 34 |
3 files changed, 14 insertions, 30 deletions
diff --git a/Carpet/CarpetIOScalar/interface.ccl b/Carpet/CarpetIOScalar/interface.ccl index 33cfd6dac..12d361a7b 100644 --- a/Carpet/CarpetIOScalar/interface.ccl +++ b/Carpet/CarpetIOScalar/interface.ccl @@ -1,8 +1,8 @@ # Interface definition for thorn CarpetIOScalar -# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/interface.ccl,v 1.1 2004/06/11 17:41:51 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/interface.ccl,v 1.2 2004/06/21 16:07:41 schnetter Exp $ IMPLEMENTS: IOScalar -CCTK_INT next_output_iteration TYPE=scalar -CCTK_REAL next_output_time TYPE=scalar +CCTK_INT last_output_iteration TYPE=scalar +CCTK_REAL last_output_time TYPE=scalar CCTK_INT this_iteration TYPE=scalar diff --git a/Carpet/CarpetIOScalar/schedule.ccl b/Carpet/CarpetIOScalar/schedule.ccl index d0418e0cd..8e29bed1d 100644 --- a/Carpet/CarpetIOScalar/schedule.ccl +++ b/Carpet/CarpetIOScalar/schedule.ccl @@ -1,7 +1,7 @@ # Schedule definitions for thorn CarpetIOScalar -# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/schedule.ccl,v 1.1 2004/06/11 17:41:51 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/schedule.ccl,v 1.2 2004/06/21 16:07:41 schnetter Exp $ -storage: next_output_iteration next_output_time +storage: last_output_iteration last_output_time this_iteration schedule CarpetIOScalarStartup at STARTUP after IOUtil_Startup { diff --git a/Carpet/CarpetIOScalar/src/ioscalar.cc b/Carpet/CarpetIOScalar/src/ioscalar.cc index b3bed1bc1..ca31e93ce 100644 --- a/Carpet/CarpetIOScalar/src/ioscalar.cc +++ b/Carpet/CarpetIOScalar/src/ioscalar.cc @@ -18,7 +18,7 @@ extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/src/ioscalar.cc,v 1.4 2004/06/21 12:27:09 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/src/ioscalar.cc,v 1.5 2004/06/21 16:07:41 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOScalar_ioscalar_cc); } @@ -113,8 +113,9 @@ namespace CarpetIOScalar { { DECLARE_CCTK_ARGUMENTS; - *next_output_iteration = 0; - *next_output_time = cctkGH->cctk_time; + *this_iteration = 0; + *last_output_iteration = 0; + *last_output_time = cctkGH->cctk_time; } @@ -139,7 +140,7 @@ namespace CarpetIOScalar { // We register only once, ergo we get only one handle. We store // that statically, so there is no need to pass anything to // Cactus. - return 0; + return NULL; } @@ -361,33 +362,16 @@ namespace CarpetIOScalar { } else if (cctk_iteration == *this_iteration) { // we already decided to output this iteration output_this_iteration = true; - } else if (cctk_iteration >= *next_output_iteration) { + } else if (cctk_iteration >= *last_output_iteration + myoutevery) { // it is time for the next output output_this_iteration = true; - *next_output_iteration = cctk_iteration + myoutevery; + *last_output_iteration = cctk_iteration; *this_iteration = cctk_iteration; } else { // we want no output at this iteration output_this_iteration = false; } - } else if (CCTK_EQUALS (myoutcriterion, "divisor")) { - - int myoutevery = outScalar_every; - if (myoutevery == -2) { - myoutevery = out_every; - } - if (myoutevery <= 0) { - // output is disabled - output_this_iteration = false; - } else if (cctk_iteration % myoutevery == 0) { - // we already decided to output this iteration - output_this_iteration = true; - } else { - // we want no output at this iteration - output_this_iteration = false; - } - } else if (CCTK_EQUALS (myoutcriterion, "time")) { CCTK_REAL myoutdt = outScalar_dt; @@ -404,10 +388,10 @@ namespace CarpetIOScalar { // we already decided to output this iteration output_this_iteration = true; } else if (cctk_time / cctk_delta_time - >= *next_output_time / cctk_delta_time - 1.0e-12) { + >= (*last_output_time + myoutdt) / cctk_delta_time - 1.0e-12) { // it is time for the next output output_this_iteration = true; - *next_output_time = cctk_time + myoutdt; + *last_output_time = cctk_time; *this_iteration = cctk_iteration; } else { // we want no output at this iteration |