aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Evolve.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-05-28 09:39:24 +0200
committerErik Schnetter <schnetter@cct.lsu.edu>2008-05-28 09:39:24 +0200
commita8faa831478a2d382fb8ff7264057aeb711d4564 (patch)
treea0dc1d2686226c5639a97e471368effa40bca6c0 /Carpet/Carpet/src/Evolve.cc
parenteba1edd32e04986405c626599736ec73fb012b61 (diff)
Carpet: Disable accuracy check of level times
Diffstat (limited to 'Carpet/Carpet/src/Evolve.cc')
-rw-r--r--Carpet/Carpet/src/Evolve.cc21
1 files changed, 16 insertions, 5 deletions
diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc
index 232c5e81b..ec3eeb32e 100644
--- a/Carpet/Carpet/src/Evolve.cc
+++ b/Carpet/Carpet/src/Evolve.cc
@@ -94,13 +94,13 @@ namespace Carpet {
// Ensure that all levels have consistent times
{
CCTK_REAL const eps = 1.0e-12;
- assert (abs (cctkGH->cctk_time - global_time) < eps * global_time);
+ assert (abs (cctkGH->cctk_time - global_time) <= eps * global_time);
for (int ml=0; ml<mglevels; ++ml) {
for (int rl=0; rl<reflevels; ++rl) {
int const do_every =
ipow (mgfact, ml) * (maxtimereflevelfact / timereffacts.at(rl));
if (cctkGH->cctk_iteration % do_every == 0) {
- assert (abs (leveltimes.at(ml).at(rl) - global_time) <
+ assert (abs (leveltimes.at(ml).at(rl) - global_time) <=
eps * global_time);
}
}
@@ -384,20 +384,31 @@ namespace Carpet {
for (int m=0; m<maps; ++m) {
vtt.at(m)->advance_time (reflevel, mglevel);
if (not adaptive_stepsize) {
+#if 0
+ // We must not perform this check, since the
+ // relative accuracy of incrementally adding to the
+ // current time cannot be good enough. Just setting
+ // the time (see below) is fine.
CCTK_REAL const eps = 1.0e-12;
static_assert (abs(0.1) > 0,
"Function CarpetLib::abs has wrong signature");
CCTK_REAL const level_time =
vtt.at(m)->get_time (reflevel, mglevel);
- if (not (abs (level_time - carpet_time) < eps)) {
+ if (not (abs (level_time - carpet_time) <=
+ eps * max (carpet_time, 1.0))) {
+ int const oldprecision = cerr.precision();
+ cerr.precision (17);
cerr << "ml: " << ml << endl
<< "rl: " << rl << endl
<< "m: " << m << endl
<< "level_time: " << level_time << endl
- << "carpet_time: " << carpet_time << endl;
+ << "carpet_time: " << carpet_time << endl
+ << "(level_time - carpet_time): " << (level_time - carpet_time) << endl;
+ cerr.precision (oldprecision);
}
- assert (abs (level_time - carpet_time) <
+ assert (abs (level_time - carpet_time) <=
eps * max (carpet_time, 1.0));
+#endif
vtt.at(m)->set_time (reflevel, mglevel, carpet_time);
}
}