aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/CarpetIOScalar/param.ccl1
-rw-r--r--Carpet/CarpetIOScalar/src/ioscalar.cc17
2 files changed, 18 insertions, 0 deletions
diff --git a/Carpet/CarpetIOScalar/param.ccl b/Carpet/CarpetIOScalar/param.ccl
index d4ac7a237..f42087b92 100644
--- a/Carpet/CarpetIOScalar/param.ccl
+++ b/Carpet/CarpetIOScalar/param.ccl
@@ -48,6 +48,7 @@ KEYWORD outScalar_criterion "Criterion to select scalar output intervals, overri
{
"never" :: "Never output"
"iteration" :: "Output every so many iterations"
+ "divisor" :: "Output if iteration mod divisor == 0."
"time" :: "Output every that much coordinate time"
} "iteration"
diff --git a/Carpet/CarpetIOScalar/src/ioscalar.cc b/Carpet/CarpetIOScalar/src/ioscalar.cc
index 4e65f1d87..0c28dd943 100644
--- a/Carpet/CarpetIOScalar/src/ioscalar.cc
+++ b/Carpet/CarpetIOScalar/src/ioscalar.cc
@@ -487,6 +487,23 @@ namespace CarpetIOScalar {
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;