Hey. I updated the section code which was using basextent.at() in an earlier version of Carpet, to the new syntax of baseextents.at(0).at() (Marked with "HERE" in below snippet of code.)
The code compiles, but when it runs, there is a failed assertion.
It seems the only value which changes in the entire run is "istr".
Is there some other part of the code that also needs to change?
Thanks,
Scott
I'll attach the par file too...(kind of a misnomer at this point)
char const * coordinates = 0;
string coordinates_str;
{
CCTK_INFO ("Getting coordinate data from Carpet's bounding boxes");
assert (maps == 1);
int const m = 0; // block index
assert (mglevels == 1);
int const ml = 0; // convergence level
vector<vector<rbbox> > gh (vhh.at(m)->reflevels());
// Loop over all refinement levels
CCTK_INFO ("About to loop over all refinement levels");
for (int rl=0; rl<vhh.at(m)->reflevels(); ++rl) { // refinement level
// Find the union of all regions on this level
ibset level;
for (int c=0; c<vhh.at(m)->components(rl); ++c) { // component
ibbox const & ext = vdd.at(m)->boxes.at(ml).at(rl).at(c).exterior;
level |= ext;
} // for c
level.normalize();
// Convert the set of regions to coordinates
CCTK_INFO ("Converting the set of regions to coordinates");
printf("rl = %d\n",rl);
for (ibset::const_iterator li = level.begin(); li != level.end(); ++ li) {
printf("li = %d\n",li);
ibbox const & ext = * li;
rvect rlo, rup, rstr;
ivect ilo, iup, istr;
rvect lo, up, str;
for (int d=0; d<3; ++d) {
rlo[d] = domainspecs.at(m).exterior_min[d];
rup[d] = domainspecs.at(m).exterior_max[d];
rstr[d] = (rup[d] - rlo[d]) / (domainspecs.at(m).npoints[d] - 1);
//------------------------- HERE ----------------------------
ilo[d] = vhh.at(m)->baseextents.at(m).at(rl).lower()[d];
iup[d] = vhh.at(m)->baseextents.at(m).at(rl).upper()[d];
istr[d] = vhh.at(m)->baseextents.at(m).at(rl).stride()[d];
//--------------------------------------------------------------
lo[d] = rlo[d] + (ext.lower()[d] - ilo[d]) * ((rup[d] - rlo[d]) / (iup[d] - ilo[d]));
up[d] = rlo[d] + (ext.upper()[d] - ilo[d]) * ((rup[d] - rlo[d]) / (iup[d] - ilo[d]));
str[d] = ext.stride()[d] * (rstr[d] / istr[d]);
printf("d = %d, npoints = %d\n",d, domainspecs.at(m).npoints[d] );
printf(" rlo=%g, rup=%g, rstr=%g\n", rlo[d],rup[d],rstr[d]);
printf(" ilo=%d, iup=%d, istr=%d\n", ilo[d],iup[d],istr[d]);
}
CCTK_INFO ("Just finished loop over d, about to rbbox");
rbbox rext (lo, up, str);
Trace of the run of this part of the code looks like....
INFO (TexMEx): Getting coordinate data from Carpet's bounding boxes
INFO (TexMEx): About to loop over all refinement levels
INFO (TexMEx): Converting the set of regions to coordinates
rl = 0
li = 368448976
d = 0, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=512
d = 1, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=512
d = 2, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=512
INFO (TexMEx): Just finished loop over d, about to rbbox
INFO (TexMEx): About to gh.at(rl)...
INFO (TexMEx): Converting the set of regions to coordinates
rl = 1
li = 368448880
d = 0, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=256
d = 1, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=256
d = 2, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=256
INFO (TexMEx): Just finished loop over d, about to rbbox
INFO (TexMEx): About to gh.at(rl)...
INFO (TexMEx): Converting the set of regions to coordinates
rl = 2
li = 368448816
d = 0, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=128
d = 1, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=128
d = 2, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=128
INFO (TexMEx): Just finished loop over d, about to rbbox
INFO (TexMEx): About to gh.at(rl)...
INFO (TexMEx): Converting the set of regions to coordinates
rl = 3
li = 368443536
d = 0, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=64
d = 1, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=64
d = 2, npoints = 49
rlo=-36, rup=36, rstr=1.5
ilo=0, iup=24576, istr=64
INFO (TexMEx): Just finished loop over d, about to rbbox
cactus_texmex: /home/shawley/Cactus/arrangements/Carpet/CarpetLib/src/bbox.cc:25: void bbox<T, D>::assert_bbox_limits() const [with T = double, D = 3]: Assertion `all((_upper-_lower)%_stride == T(0))' failed.
Abort