aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOScalar
diff options
context:
space:
mode:
authorschnetter <>2004-06-21 14:07:00 +0000
committerschnetter <>2004-06-21 14:07:00 +0000
commitf23b6f971732863651bb1d6f771da6cd829fae65 (patch)
treedef3308437c83a8b8fafffa87c5dffb4c0d32303 /Carpet/CarpetIOScalar
parent37501ed4c981f0c5385f9b71fce811b080f977ac (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.ccl6
-rw-r--r--Carpet/CarpetIOScalar/schedule.ccl4
-rw-r--r--Carpet/CarpetIOScalar/src/ioscalar.cc34
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