diff options
author | eschnett <> | 2001-03-01 12:40:00 +0000 |
---|---|---|
committer | eschnett <> | 2001-03-01 12:40:00 +0000 |
commit | ece47455bad491c45b3136362e9239f505de23b9 (patch) | |
tree | 0e121ebd44c2fbb7711943fcd8804e85626daca3 /Carpet/CarpetLib/src/th.cc | |
parent | 310f0ea48d18866b773136aed11200b6eda6378b (diff) |
Initial revision
darcs-hash:20010301124010-f6438-fca5ed1e25f84efd816aa0d13fc23b58add7195d.gz
Diffstat (limited to 'Carpet/CarpetLib/src/th.cc')
-rw-r--r-- | Carpet/CarpetLib/src/th.cc | 75 |
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 |