aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/th.cc
diff options
context:
space:
mode:
authoreschnett <>2001-03-01 12:40:00 +0000
committereschnett <>2001-03-01 12:40:00 +0000
commitece47455bad491c45b3136362e9239f505de23b9 (patch)
tree0e121ebd44c2fbb7711943fcd8804e85626daca3 /Carpet/CarpetLib/src/th.cc
parent310f0ea48d18866b773136aed11200b6eda6378b (diff)
Initial revision
darcs-hash:20010301124010-f6438-fca5ed1e25f84efd816aa0d13fc23b58add7195d.gz
Diffstat (limited to 'Carpet/CarpetLib/src/th.cc')
-rw-r--r--Carpet/CarpetLib/src/th.cc75
1 files changed, 50 insertions, 25 deletions
diff --git a/Carpet/CarpetLib/src/th.cc b/Carpet/CarpetLib/src/th.cc
index 0ad9beca1..1cf81495a 100644
--- a/Carpet/CarpetLib/src/th.cc
+++ b/Carpet/CarpetLib/src/th.cc
@@ -1,25 +1,39 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/th.cc,v 1.14 2004/03/23 19:30:14 schnetter Exp $
-
-#include <assert.h>
-#include <math.h>
-
+/***************************************************************************
+ th.cc - Time Hierarchy
+ information about time levels
+ -------------------
+ begin : Sun Jun 11 2000
+ copyright : (C) 2000 by Erik Schnetter
+ email : schnetter@astro.psu.edu
+
+ $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/th.cc,v 1.1 2001/03/01 13:40:10 eschnett Exp $
+
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <cassert>
#include <iostream>
-#include "cctk.h"
-
#include "defs.hh"
#include "gh.hh"
-#include "th.hh"
-
-using namespace std;
+#if !defined(TMPL_IMPLICIT) || !defined(TH_HH)
+# include "th.hh"
+#endif
// Constructors
template<int D>
-th<D>::th (gh<D>& h, const CCTK_REAL basedelta)
- : h(h), delta(basedelta) {
+th<D>::th (gh<D>& h, const int basedelta) : h(h), delta(basedelta) {
h.add(this);
}
@@ -35,25 +49,26 @@ void th<D>::recompose () {
times.resize(h.reflevels());
deltas.resize(h.reflevels());
for (int rl=0; rl<h.reflevels(); ++rl) {
- const int old_mglevels = times.at(rl).size();
- CCTK_REAL mgtime;
+ const int old_mglevels = times[rl].size();
+ int mgtime;
// Select default time
if (old_mglevels==0 && rl==0) {
mgtime = 0;
} else if (old_mglevels==0) {
- mgtime = times.at(rl-1).at(0);
+ mgtime = times[rl-1][0];
} else {
- mgtime = times.at(rl).at(old_mglevels-1);
+ mgtime = times[rl][old_mglevels-1];
}
- times.at(rl).resize(h.mglevels(rl,0), mgtime);
- deltas.at(rl).resize(h.mglevels(rl,0));
+ times[rl].resize(h.mglevels(rl,0), mgtime);
+ deltas[rl].resize(h.mglevels(rl,0));
for (int ml=0; ml<h.mglevels(rl,0); ++ml) {
if (rl==0 && ml==0) {
- deltas.at(rl).at(ml) = delta;
+ deltas[rl][ml] = delta;
} else if (ml==0) {
- deltas.at(rl).at(ml) = deltas.at(rl-1).at(ml) / h.reffact;
+ assert (deltas[rl-1][ml] % h.reffact == 0);
+ deltas[rl][ml] = deltas[rl-1][ml] / h.reffact;
} else {
- deltas.at(rl).at(ml) = deltas.at(rl).at(ml-1) * h.mgfact;
+ deltas[rl][ml] = deltas[rl][ml-1] * h.mgfact;
}
}
}
@@ -63,19 +78,29 @@ void th<D>::recompose () {
// Output
template<int D>
-void th<D>::output (ostream& os) const {
+ostream& operator<< (ostream& os, const th<D>& t) {
os << "th<" << D << ">:"
<< "times={";
- for (int rl=0; rl<h.reflevels(); ++rl) {
- for (int ml=0; ml<h.mglevels(rl,0); ++ml) {
+ for (int rl=0; rl<t.h.reflevels(); ++rl) {
+ for (int ml=0; ml<t.h.mglevels(rl,0); ++ml) {
if (!(rl==0 && ml==0)) os << ",";
os << rl << ":" << ml << ":"
- << times.at(rl).at(ml) << "(" << deltas.at(rl).at(ml) << ")";
+ << t.times[rl][ml] << "(" << t.deltas[rl][ml] << ")";
}
}
os << "}";
+ return os;
}
+#if defined(TMPL_EXPLICIT)
+template class th<1>;
+template ostream& operator<< (ostream& os, const th<1>& t);
+
+template class th<2>;
+template ostream& operator<< (ostream& os, const th<2>& t);
+
template class th<3>;
+template ostream& operator<< (ostream& os, const th<3>& t);
+#endif