aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2006-03-04 17:38:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2006-03-04 17:38:00 +0000
commit09c68e457a0629c0cb209012da2d5bb968eaa3e2 (patch)
tree9015cceb2edfd9f91e0bd707db969235c327a1fc
parente21f72f9702d6034e8ff02b0422835b61f6fbcdf (diff)
Carpet: [REDO 2] Store grid spacing per map instead of globally
Store the coarse grid spacing per individual map instead of globally. Set and unset the grid spacing when entering or leaving singlemap mode, not global mode. This breaks code that tries to access the coarse grid spacing in the cGH in global mode. darcs-hash:20060304173810-dae7b-2ee5d6bf3e9344b4a952d939ca0b97d120eecfdf.gz
-rw-r--r--Carpet/Carpet/src/Recompose.cc4
-rw-r--r--Carpet/Carpet/src/SetupGH.cc6
-rw-r--r--Carpet/Carpet/src/modes.cc47
-rw-r--r--Carpet/Carpet/src/variables.cc4
-rw-r--r--Carpet/Carpet/src/variables.hh4
5 files changed, 46 insertions, 19 deletions
diff --git a/Carpet/Carpet/src/Recompose.cc b/Carpet/Carpet/src/Recompose.cc
index 1b19853c3..8e2a6c7f8 100644
--- a/Carpet/Carpet/src/Recompose.cc
+++ b/Carpet/Carpet/src/Recompose.cc
@@ -217,8 +217,8 @@ namespace Carpet {
for (int ml=0; ml<hh.mglevels(); ++ml) {
for (int rl=0; rl<hh.reflevels(); ++rl) {
for (int c=0; c<hh.components(rl); ++c) {
- const rvect origin = origin_space.at(0);
- const rvect delta = delta_space;
+ const rvect origin = origin_space.at(m).at(0);
+ const rvect delta = delta_space.at(m);
const ivect lower = hh.extents().at(ml).at(rl).at(c).lower();
const ivect upper = hh.extents().at(ml).at(rl).at(c).upper();
const int convfact = ipow(mgfact, ml);
diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc
index 921e75006..0376da045 100644
--- a/Carpet/Carpet/src/SetupGH.cc
+++ b/Carpet/Carpet/src/SetupGH.cc
@@ -437,7 +437,11 @@ namespace Carpet {
for (int ml=0; ml<mglevels; ++ml) {
leveltimes.at(ml).resize (maxreflevels);
}
- origin_space.resize (mglevels);
+ origin_space.resize (maps);
+ delta_space.resize (maps);
+ for (int m=0; m<maps; ++m) {
+ origin_space.at(m).resize (mglevels);
+ }
// Enable prolongating
do_prolongate = true;
diff --git a/Carpet/Carpet/src/modes.cc b/Carpet/Carpet/src/modes.cc
index 9669097f5..757ef109e 100644
--- a/Carpet/Carpet/src/modes.cc
+++ b/Carpet/Carpet/src/modes.cc
@@ -75,12 +75,13 @@ namespace Carpet {
// TODO: this could also just be "mglevel" instead
cgh->cctk_convlevel = basemglevel + mglevel;
- // Set time and space delta
+ // Set time delta
cgh->cctk_delta_time = delta_time * mglevelfact;
- for (int d=0; d<dim; ++d) {
- cgh->cctk_origin_space[d] = origin_space.at(mglevel)[d];
- cgh->cctk_delta_space[d] = delta_space[d] * mglevelfact;
- }
+// // Set space delta
+// for (int d=0; d<dim; ++d) {
+// cgh->cctk_origin_space[d] = origin_space.at(mglevel)[d];
+// cgh->cctk_delta_space[d] = delta_space[d] * mglevelfact;
+// }
// Set array information
for (int group=0; group<CCTK_NumGroups(); ++group) {
@@ -161,15 +162,16 @@ namespace Carpet {
if (mglevel == -1) return; // early return
- // Save and unset time and space delta
+ // Save and unset time delta
delta_time = cgh->cctk_delta_time / mglevelfact;
cgh->cctk_delta_time = 0.0;
- for (int d=0; d<dim; ++d) {
- origin_space.at(mglevel)[d] = cgh->cctk_origin_space[d];
- delta_space[d] = cgh->cctk_delta_space[d] / mglevelfact;
- cgh->cctk_origin_space[d] = -424242.0;
- cgh->cctk_delta_space[d] = 0.0;
- }
+// // Save and unset space delta
+// for (int d=0; d<dim; ++d) {
+// origin_space.at(mglevel)[d] = cgh->cctk_origin_space[d];
+// delta_space[d] = cgh->cctk_delta_space[d] / mglevelfact;
+// cgh->cctk_origin_space[d] = -424242.0;
+// cgh->cctk_delta_space[d] = 0.0;
+// }
// Set array information
for (int group=0; group<CCTK_NumGroups(); ++group) {
@@ -291,6 +293,12 @@ namespace Carpet {
carpetGH.map = map = m;
+ // Set space delta
+ for (int d=0; d<dim; ++d) {
+ cgh->cctk_origin_space[d] = origin_space.at(map).at(mglevel)[d];
+ cgh->cctk_delta_space[d] = delta_space.at(map)[d] * mglevelfact;
+ }
+
// Set grid shape
const ibbox& coarseext = vdd.at(map)->bases.at(mglevel).at(0 ).exterior;
const ibbox& baseext = vdd.at(map)->bases.at(mglevel).at(reflevel).exterior;
@@ -323,6 +331,14 @@ namespace Carpet {
if (map == -1) return; // early return
+ // Save and unset space delta
+ for (int d=0; d<dim; ++d) {
+ origin_space.at(map).at(mglevel)[d] = cgh->cctk_origin_space[d];
+ delta_space.at(map)[d] = cgh->cctk_delta_space[d] / mglevelfact;
+ cgh->cctk_origin_space[d] = -424242.0;
+ cgh->cctk_delta_space[d] = 0.0;
+ }
+
// Unset grid shape
ivect::ref(cgh->cctk_levoff) = deadbeef;
ivect::ref(cgh->cctk_levoffdenom) = 0;
@@ -366,6 +382,8 @@ namespace Carpet {
= (ext.lower() - baseext.lower()) / ext.stride();
ivect::ref(cgh->cctk_ubnd)
= (ext.upper() - baseext.lower()) / ext.stride();
+ ivect::ref(cgh->cctk_from) = 0;
+ ivect::ref(cgh->cctk_to) = ivect::ref(cgh->cctk_lsh);
for (int d=0; d<dim; ++d) {
cgh->cctk_bbox[2*d ] = obnds[d][0];
@@ -387,6 +405,9 @@ namespace Carpet {
assert (cgh->cctk_ubnd[d] < cgh->cctk_gsh[d]);
assert (cgh->cctk_lbnd[d] + cgh->cctk_lsh[d] - 1 == cgh->cctk_ubnd[d]);
assert (cgh->cctk_lbnd[d] <= cgh->cctk_ubnd[d]+1);
+ assert (cgh->cctk_from[d] >= 0);
+ assert (cgh->cctk_from[d] <= cgh->cctk_to[d]);
+ assert (cgh->cctk_to[d] <= cgh->cctk_lsh[d]);
}
for (int group=0; group<CCTK_NumGroups(); ++group) {
@@ -452,6 +473,8 @@ namespace Carpet {
ivect::ref(cgh->cctk_lsh) = deadbeef;
ivect::ref(cgh->cctk_lbnd) = -deadbeef;
ivect::ref(cgh->cctk_ubnd) = deadbeef;
+ ivect::ref(cgh->cctk_from) = -deadbeef;
+ ivect::ref(cgh->cctk_to) = deadbeef;
for (int d=0; d<dim; ++d) {
cgh->cctk_bbox[2*d ] = deadbeef;
diff --git a/Carpet/Carpet/src/variables.cc b/Carpet/Carpet/src/variables.cc
index fdd499419..81b9a9ecb 100644
--- a/Carpet/Carpet/src/variables.cc
+++ b/Carpet/Carpet/src/variables.cc
@@ -75,8 +75,8 @@ namespace Carpet {
vector<vector<CCTK_REAL> > leveltimes; // [mglevel][reflevel]
CCTK_REAL delta_time;
- vector<vect<CCTK_REAL,dim> > origin_space; // [mglevel]
- vect<CCTK_REAL,dim> delta_space;
+ vector<vector<vect<CCTK_REAL,dim> > > origin_space; // [map][mglevel]
+ vector<vect<CCTK_REAL,dim> > delta_space; // [map]
diff --git a/Carpet/Carpet/src/variables.hh b/Carpet/Carpet/src/variables.hh
index 2d8a6d294..b2981ee24 100644
--- a/Carpet/Carpet/src/variables.hh
+++ b/Carpet/Carpet/src/variables.hh
@@ -104,8 +104,8 @@ namespace Carpet {
extern vector<vector<CCTK_REAL> > leveltimes; // [mglevel][reflevel]
extern CCTK_REAL delta_time;
- extern vector<vect<CCTK_REAL,dim> > origin_space; // [mglevel]
- extern vect<CCTK_REAL,dim> delta_space;
+ extern vector<vector<vect<CCTK_REAL,dim> > > origin_space; // [map][mglevel]
+ extern vector<vect<CCTK_REAL,dim> > delta_space; // [map]