diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2006-03-04 17:38:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2006-03-04 17:38:00 +0000 |
commit | 09c68e457a0629c0cb209012da2d5bb968eaa3e2 (patch) | |
tree | 9015cceb2edfd9f91e0bd707db969235c327a1fc | |
parent | e21f72f9702d6034e8ff02b0422835b61f6fbcdf (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.cc | 4 | ||||
-rw-r--r-- | Carpet/Carpet/src/SetupGH.cc | 6 | ||||
-rw-r--r-- | Carpet/Carpet/src/modes.cc | 47 | ||||
-rw-r--r-- | Carpet/Carpet/src/variables.cc | 4 | ||||
-rw-r--r-- | Carpet/Carpet/src/variables.hh | 4 |
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] |