67UXOK4QSZFAPVZXU2MJMD7I2232JCK4QDMIOMVMEQNQUGN7632AC
RKGV7HOLE7Q4PVL3B5NWS7X4BBIT7WCKTBANPIGR6KMFKGZENTVAC
L6F65PPYCY5WWHETUTKWYWXNQYSYP3YK3UBJGQECU7GEMCHYWL4AC
C7Y67X3DJBDM4QW3NAVSVJF6GSSLD466S4FFJSIKUEJANLPC6FIAC
XQFT6DACFOMNNXDYUZRGRCMEPWF34KW5PRZ7RVMVJHYCS76JIZSAC
DGEGTDYVGRHEGNFDHCCVTD6AVLRJ2XHDXQPWR5MMR62V5NU2XGIQC
BRC6KOCKJIARRSZI3TJOKIK6XBSNYAS2IP6LJOPS2FPMLN57QKVQC
EK7F2IQUVSSHTDV7MPOZXX34UHJA2ZNDHIZX4G4HCSUJYXKFWGRAC
DQZRKU4B6C3WWWXFMBBSVKYD5AXDGUMHHPACVWKERGKB5WLHZGYAC
3HPNY5XHNPWR6RVX4LYEVDFJQWSB2CMS7J6XPAKATQ2UPFTXD33QC
BVR7DVINVPQG7PA6Z7QYVYNQ43YZL7XCC6AOMSMWMGAAB2Q43STAC
XU5HOJREK4XY4NBCJINLZPKQNKSYOLUDTWR47REFSNQKDOSNDXLQC
J3SP5HQRWGMM6EM4ZIWPNUIY5HYFRJA4SH2X4OWGESSK7AWA3RNQC
T3TZRPPAIA24I3YL3JFB4XEAYCWU3HJAJUCF7NNIFMP4I5X4SM5QC
A7ETPFXEHA2RM4LINSBVMJJ3G62NF7Q5ZQOKJPNJK3YOQ5WS5HKAC
GECUITHDXKCWB7HBCM7EA5Q56JDDWUVUWHMW2K6OM7UW36DFAZ3QC
EHF2P5PKVTMAUL5R5QSZ3DS3VLE7Z6SHJTCZAGRBTQ66Y7HZKNYQC
JN2TPHENEBIY2OE5FRCQ2E6QCL6FPVHJHUCP4UODD6DITRVV2LIQC
WV2J4VRLSW42SGIRDLF326LLC7L2ABAMSZ3YKABS532K27U3X3CAC
BPRNUTY7MHK7LK4EY5MY5OFFG3ABOL7LWXD574L35M74YSQPULFAC
Z2NTVAM6CXOOV34ZXN6A5WNAUOPWPFTSH5723LZZEEGYEWH36WWAC
MSBBCXVGD3GRLE5KAI6BKAFRV7SQUWI2SNN43AJAUD3ISRCEXY6QC
JD6PQOJ6YYNQYEEWEXO2NM7NVYNBUI6V7ZU6Q3FNHGAT2VYOF5WAC
33IC3UHCEPZLGS5ACS2JXHGT6CRU5LXU6PM6RDHCERPOIELVRVXQC
E3MBKFT4GEFDAGZQQW4OROY5F6FWC46G6MRH54GDYTGO7O5YSRIAC
FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC
CCTK_VINFO(
"%s: Grid function \"%s\" has %td nans on refinement level %d, time "
"level %d, in box [%d,%d,%d]:[%d,%d,%d] (%g,%g,%g):(%g,%g,%g); "
"expected valid %s",
msg().c_str(), CCTK_FullVarName(groupdata.firstvarindex + vi),
size_t(nan_count), leveldata.level, tl, nan_imin[0], nan_imin[1],
CCTK_VINFO(
"%s: Grid function \"%s\" has %td nans on refinement level %d, time "
"level %d, in box [%d,%d,%d]:[%d,%d,%d] (%g,%g,%g):(%g,%g,%g); "
"expected valid %s",
msg().c_str(), CCTK_FullVarName(groupdata.firstvarindex + vi),
size_t(nan_count), leveldata.level, tl, nan_imin[0], nan_imin[1],
for (MFIter mfi(*leveldata.mfab0, mfitinfo); mfi.isValid(); ++mfi) {
const GridPtrDesc1 grid(leveldata, groupdata, mfi);
const Array4<const CCTK_REAL> &vars = groupdata.mfab.at(tl)->array(mfi);
const GF3D1<const CCTK_REAL> ptr_ = grid.gf3d(vars, vi);
for (MFIter mfi(*leveldata.mfab0, mfitinfo); mfi.isValid(); ++mfi) {
const GridPtrDesc1 grid(leveldata, groupdata, mfi);
const Array4<const CCTK_REAL> &vars = groupdata.mfab.at(tl)->array(mfi);
const GF3D1<const CCTK_REAL> ptr_ = grid.gf3d(vars, vi);
if (valid.valid_int)
grid.loop_idx(where_t::interior, groupdata.indextype,
groupdata.nghostzones, [&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(CCTK_isnan(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
if (valid.valid_outer)
grid.loop_idx(where_t::boundary, groupdata.indextype,
groupdata.nghostzones, [&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(CCTK_isnan(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
if (valid.valid_ghosts)
grid.loop_idx(where_t::ghosts, groupdata.indextype,
groupdata.nghostzones, [&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(CCTK_isnan(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
}
if (valid.valid_int)
grid.loop_idx(
where_t::interior, groupdata.indextype, groupdata.nghostzones,
[&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(!CCTK_isfinite(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
if (valid.valid_outer)
grid.loop_idx(
where_t::boundary, groupdata.indextype, groupdata.nghostzones,
[&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(!CCTK_isfinite(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
if (valid.valid_ghosts)
grid.loop_idx(
where_t::ghosts, groupdata.indextype, groupdata.nghostzones,
[&](const Loop::PointDesc &p) {
if (CCTK_BUILTIN_EXPECT(!CCTK_isfinite(ptr_(p.I)), false))
CCTK_VINFO("[%d,%d,%d] (%g,%g,%g) %g", p.i, p.j, p.k,
double(p.x), double(p.y), double(p.z),
double(ptr_(p.I)));
});
}
CCTK_VERROR(
"%s: Grid function \"%s\" has nans on refinement level %d, time "
"level %d; expected valid %s",
msg().c_str(), CCTK_FullVarName(groupdata.firstvarindex + vi),
leveldata.level, tl, string(groupdata.valid.at(tl).at(vi)).c_str());
CCTK_VERROR(
"%s: Grid function \"%s\" has nans on refinement level %d, time "
"level %d; expected valid %s",
msg().c_str(), CCTK_FullVarName(groupdata.firstvarindex + vi),
leveldata.level, tl, string(groupdata.valid.at(tl).at(vi)).c_str());
}
CCTK_VINFO("Grid extent:");
CCTK_VINFO(" gsh=[%d,%d,%d]", gsh[0], gsh[1], gsh[2]);
CCTK_VINFO("Domain extent:");
CCTK_VINFO("Grid extent:");
CCTK_VINFO(" gsh=[%d,%d,%d]", gsh[0], gsh[1], gsh[2]);
CCTK_VINFO("Domain extent:");
const double pts0 = ghext->leveldata.at(0).mfab0->boxArray().d_numPts();
for (const auto &leveldata : ghext->leveldata) {
const int sz = leveldata.mfab0->size();
const double pts = leveldata.mfab0->boxArray().d_numPts();
if (leveldata.level == 0) {
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0));
} else {
const double ptsc = ghext->leveldata.at(leveldata.level - 1)
.mfab0->boxArray()
.d_numPts();
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%, %.0f%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0),
100 * pts / (pow(2.0, dim) * ptsc));
const double pts0 = ghext->leveldata.at(0).mfab0->boxArray().d_numPts();
for (const auto &leveldata : ghext->leveldata) {
const int sz = leveldata.mfab0->size();
const double pts = leveldata.mfab0->boxArray().d_numPts();
if (leveldata.level == 0) {
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0));
} else {
const double ptsc = ghext->leveldata.at(leveldata.level - 1)
.mfab0->boxArray()
.d_numPts();
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%, %.0f%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0),
100 * pts / (pow(2.0, dim) * ptsc));
}
CCTK_VINFO(" old levels %d, new levels %d", old_numlevels,
new_numlevels);
double pts0 = ghext->leveldata.at(0).mfab0->boxArray().d_numPts();
assert(current_level == -1);
for (const auto &leveldata : ghext->leveldata) {
const int sz = leveldata.mfab0->size();
const double pts = leveldata.mfab0->boxArray().d_numPts();
if (leveldata.level == 0) {
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0));
} else {
const double ptsc = ghext->leveldata.at(leveldata.level - 1)
.mfab0->boxArray()
.d_numPts();
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%, %.0f%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0),
100 * pts / (pow(2.0, dim) * ptsc));
CCTK_VINFO(" old levels %d, new levels %d", old_numlevels,
new_numlevels);
double pts0 = ghext->leveldata.at(0).mfab0->boxArray().d_numPts();
assert(current_level == -1);
for (const auto &leveldata : ghext->leveldata) {
const int sz = leveldata.mfab0->size();
const double pts = leveldata.mfab0->boxArray().d_numPts();
if (leveldata.level == 0) {
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0));
} else {
const double ptsc = ghext->leveldata.at(leveldata.level - 1)
.mfab0->boxArray()
.d_numPts();
CCTK_VINFO(" level %d: %d boxes, %.0f cells (%.4g%%, %.0f%%)",
leveldata.level, sz, pts,
100 * pts / (pow(2.0, dim * leveldata.level) * pts0),
100 * pts / (pow(2.0, dim) * ptsc));
}