diff options
author | Erik Schnetter <schnetter@aei.mpg.de> | 2005-05-01 20:50:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@aei.mpg.de> | 2005-05-01 20:50:00 +0000 |
commit | 11ac382474368f028c892b391975f53a8ac57759 (patch) | |
tree | 55827438fa69d0ce9ef5defae73eeecdc545335a /Carpet/CarpetLib/src/th.cc | |
parent | 0fbb3fc20f36bce10eb1f92921a3f947abef3c99 (diff) |
global: Add varying refinement factors
Add support for varying refinement factors. The spatial refinement
factors can be different in different directions, can be different
from the time refinement factor, and can be different on each level.
(However, the underlying spatial transport operators do currently not
handle any factors except two.)
darcs-hash:20050501205010-891bb-8d3a74abaad55ee6c77ef18d51fca2a2b69740de.gz
Diffstat (limited to 'Carpet/CarpetLib/src/th.cc')
-rw-r--r-- | Carpet/CarpetLib/src/th.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/Carpet/CarpetLib/src/th.cc b/Carpet/CarpetLib/src/th.cc index 84b896b55..0751a03e1 100644 --- a/Carpet/CarpetLib/src/th.cc +++ b/Carpet/CarpetLib/src/th.cc @@ -1,6 +1,7 @@ #include <cassert> #include <cmath> #include <iostream> +#include <vector> #include "cctk.h" @@ -14,9 +15,15 @@ using namespace std; // Constructors -th::th (gh& h_, const CCTK_REAL basedelta) - : h(h_), delta(basedelta) +th::th (gh& h_, const vector<int> & reffacts_, const CCTK_REAL basedelta) + : h(h_), reffacts(reffacts_), delta(basedelta) { + assert (reffacts.size() >= 1); + assert (reffacts.front() == 1); + for (size_t n = 1; n < reffacts.size(); ++ n) { + assert (reffacts.at(n) >= reffacts.at(n-1)); + assert (reffacts.at(n) % reffacts.at(n-1) == 0); + } h.add(this); } @@ -44,10 +51,8 @@ void th::recompose () } else { times.at(ml).at(rl) = times.at(ml).at(rl-1); } - if (ml==0 and rl==0) { - deltas.at(ml).at(rl) = delta; - } else if (ml==0) { - deltas.at(ml).at(rl) = deltas.at(ml).at(rl-1) / h.reffact; + if (ml==0) { + deltas.at(ml).at(rl) = delta / reffacts.at(rl); } else { deltas.at(ml).at(rl) = deltas.at(ml-1).at(rl) * h.mgfact; } |