aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetReduce
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@aei.mpg.de>2005-05-01 20:50:00 +0000
committerErik Schnetter <schnetter@aei.mpg.de>2005-05-01 20:50:00 +0000
commit11ac382474368f028c892b391975f53a8ac57759 (patch)
tree55827438fa69d0ce9ef5defae73eeecdc545335a /Carpet/CarpetReduce
parent0fbb3fc20f36bce10eb1f92921a3f947abef3c99 (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/CarpetReduce')
-rw-r--r--Carpet/CarpetReduce/src/mask_carpet.cc6
-rw-r--r--Carpet/CarpetReduce/src/reduce.cc2
2 files changed, 5 insertions, 3 deletions
diff --git a/Carpet/CarpetReduce/src/mask_carpet.cc b/Carpet/CarpetReduce/src/mask_carpet.cc
index 342c3901f..31250ce4b 100644
--- a/Carpet/CarpetReduce/src/mask_carpet.cc
+++ b/Carpet/CarpetReduce/src/mask_carpet.cc
@@ -31,8 +31,6 @@ namespace CarpetMask {
{
DECLARE_CCTK_PARAMETERS;
- assert (reffact == 2);
-
if (! is_singlemap_mode()) {
CCTK_WARN (0, "This routine may only be called in singlemap mode");
}
@@ -47,6 +45,10 @@ namespace CarpetMask {
ibbox const & base = hh.bases().at(mglevel).at(reflevel);
+ ivect const reffact
+ = spacereffacts.at(reflevel) / spacereffacts.at(reflevel-1);
+ assert (all (reffact == 2));
+
// Calculate the union of all refined regions
diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc
index f51dda6ca..a4d5cf532 100644
--- a/Carpet/CarpetReduce/src/reduce.cc
+++ b/Carpet/CarpetReduce/src/reduce.cc
@@ -1084,7 +1084,7 @@ namespace CarpetReduce {
weight = (static_cast<CCTK_REAL const *>
(CCTK_VarDataPtr (cgh, 0, "CarpetReduce::weight")));
assert (weight);
- levfac = ipow((CCTK_REAL)reflevelfact, -grpdim);
+ levfac = 1.0 / prod (rvect (spacereflevelfact));
} else {
weight = NULL;
levfac = 1.0;