From f92907de9df683161edbc78b1382e4953fd74055 Mon Sep 17 00:00:00 2001 From: "Christian D. Ott" Date: Thu, 26 Aug 2010 08:02:47 -0700 Subject: * fix issue in regrid.cc that lead to NANs in old_radius_{x,y,z} --- Carpet/CarpetRegrid2/src/regrid.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'Carpet/CarpetRegrid2') diff --git a/Carpet/CarpetRegrid2/src/regrid.cc b/Carpet/CarpetRegrid2/src/regrid.cc index cfb0539f6..ccb8321b5 100644 --- a/Carpet/CarpetRegrid2/src/regrid.cc +++ b/Carpet/CarpetRegrid2/src/regrid.cc @@ -1441,9 +1441,15 @@ namespace CarpetRegrid2 { old_position_y[n] = position_y[n]; old_position_z[n] = position_z[n]; - old_radius_x[n] = radius_x[n] < 0 ? radius[n] : radius_x[n]; - old_radius_y[n] = radius_y[n] < 0 ? radius[n] : radius_y[n]; - old_radius_z[n] = radius_z[n] < 0 ? radius[n] : radius_z[n]; + int lsh[2]; + getvectorindex2 (cctkGH, "CarpetRegrid2::radii", lsh); + + for (int rl = 1; rl < num_levels[n]; ++ rl) { + int const ind = index2 (lsh, rl, n); + old_radius_x[ind] = radius_x[ind] < 0 ? radius[ind] : radius_x[ind]; + old_radius_y[ind] = radius_y[ind] < 0 ? radius[ind] : radius_y[ind]; + old_radius_z[ind] = radius_z[ind] < 0 ? radius[ind] : radius_z[ind]; + } } } // if do_recompose -- cgit v1.2.3 From df1e9549a6bab90a227db0f2ba644e512ea65881 Mon Sep 17 00:00:00 2001 From: knarf Date: Thu, 26 Aug 2010 11:49:51 -0400 Subject: rename local variables to avoid compiler warnings: declaration of xxx shadows a member of 'this' --- Carpet/CarpetRegrid2/src/regrid.cc | 54 +++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'Carpet/CarpetRegrid2') diff --git a/Carpet/CarpetRegrid2/src/regrid.cc b/Carpet/CarpetRegrid2/src/regrid.cc index ccb8321b5..a9e01ca97 100644 --- a/Carpet/CarpetRegrid2/src/regrid.cc +++ b/Carpet/CarpetRegrid2/src/regrid.cc @@ -33,10 +33,10 @@ namespace CarpetRegrid2 { struct centre_description { - int num_levels; - int active; - rvect position; - vector radius; + int _num_levels; + int _active; + rvect _position; + vector _radius; centre_description (cGH const * cctkGH, int n); }; @@ -56,21 +56,21 @@ namespace CarpetRegrid2 { int lsh[2]; getvectorindex2 (cctkGH, "CarpetRegrid2::radii", lsh); - this->num_levels = num_levels[n]; - this->active = active[n]; - this->position = rvect (position_x[n], position_y[n], position_z[n]); - if (any (not isfinite(this->position))) { + this->_num_levels = num_levels[n]; + this->_active = active[n]; + this->_position = rvect (position_x[n], position_y[n], position_z[n]); + if (any (not isfinite(this->_position))) { CCTK_VWarn (CCTK_WARN_ABORT, __LINE__, __FILE__, CCTK_THORNSTRING, "The position of region %d is [%g,%g,%g], which is not finite", n + 1, - double(this->position[0]), - double(this->position[1]), - double(this->position[2])); + double(this->_position[0]), + double(this->_position[1]), + double(this->_position[2])); found_error = true; } - this->radius.resize (this->num_levels); - this->radius.at(0) = rvect(-1.0, -1.0, -1.0); // unused - for (int rl = 1; rl < this->num_levels; ++ rl) { + this->_radius.resize (this->_num_levels); + this->_radius.at(0) = rvect(-1.0, -1.0, -1.0); // unused + for (int rl = 1; rl < this->_num_levels; ++ rl) { int const ind = index2 (lsh, rl, n); CCTK_REAL const rx = radius_x[ind] < 0.0 ? radius[ind] : radius_x[ind]; CCTK_REAL const ry = radius_y[ind] < 0.0 ? radius[ind] : radius_y[ind]; @@ -80,27 +80,27 @@ namespace CarpetRegrid2 { CCTK_VWarn (CCTK_WARN_ABORT, __LINE__, __FILE__, CCTK_THORNSTRING, "The radius of refinement level %d of region %d is [%g,%g,%g], which is not finite", rl, n + 1, - double(this->radius.at(rl)[0]), - double(this->radius.at(rl)[1]), - double(this->radius.at(rl)[2])); + double(this->_radius.at(rl)[0]), + double(this->_radius.at(rl)[1]), + double(this->_radius.at(rl)[2])); found_error = true; } if (any (rad < 0.0)) { CCTK_VWarn (CCTK_WARN_ABORT, __LINE__, __FILE__, CCTK_THORNSTRING, "The radius of refinement level %d of region %d is [%g,%g,%g], which is non-negative", rl, n + 1, - double(this->radius.at(rl)[0]), - double(this->radius.at(rl)[1]), - double(this->radius.at(rl)[2])); + double(this->_radius.at(rl)[0]), + double(this->_radius.at(rl)[1]), + double(this->_radius.at(rl)[2])); found_error = true; } - this->radius.at(rl) = rad; + this->_radius.at(rl) = rad; } - if (this->num_levels > maxreflevels) { + if (this->_num_levels > maxreflevels) { CCTK_VWarn (CCTK_WARN_ABORT, __LINE__, __FILE__, CCTK_THORNSTRING, "Region %d has %d levels active, which is larger than the maximum number of refinement levels %d", - n + 1, this->num_levels, maxreflevels); + n + 1, this->_num_levels, maxreflevels); found_error = true; } @@ -439,18 +439,18 @@ namespace CarpetRegrid2 { // Loop over all centres for (int n = 0; n < num_centres; ++ n) { centre_description centre (cctkGH, n); - if (centre.active) { + if (centre._active) { // Loop over all levels for this centre - for (int rl = min_rl; rl < centre.num_levels; ++ rl) { + for (int rl = min_rl; rl < centre._num_levels; ++ rl) { if (veryverbose) { cout << "Refinement level " << rl << ": importing refined region settings..." << endl; } // Calculate a bbox for this region - rvect const rmin = centre.position - centre.radius.at(rl); - rvect const rmax = centre.position + centre.radius.at(rl); + rvect const rmin = centre._position - centre._radius.at(rl); + rvect const rmax = centre._position + centre._radius.at(rl); // Convert to an integer bbox ivect const istride = hh.baseextents.at(0).at(rl).stride(); -- cgit v1.2.3 From b2aa56aea800887173a8857416f1ce4e3cbe853c Mon Sep 17 00:00:00 2001 From: "Christian D. Ott" Date: Thu, 26 Aug 2010 14:59:04 -0700 Subject: * change radius criterion for regridding to being a relative radius change criterion. --- Carpet/CarpetRegrid2/param.ccl | 40 +++++++++++++-------------- Carpet/CarpetRegrid2/src/regrid.cc | 55 ++++++++++++++++++++------------------ 2 files changed, 49 insertions(+), 46 deletions(-) (limited to 'Carpet/CarpetRegrid2') diff --git a/Carpet/CarpetRegrid2/param.ccl b/Carpet/CarpetRegrid2/param.ccl index 46bd9f6c2..5f87e9a9a 100644 --- a/Carpet/CarpetRegrid2/param.ccl +++ b/Carpet/CarpetRegrid2/param.ccl @@ -132,9 +132,9 @@ CCTK_REAL movement_threshold_1 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_1 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_1 "Minimum RELATIVE change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -200,9 +200,9 @@ CCTK_REAL movement_threshold_2 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_2 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_2 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -268,9 +268,9 @@ CCTK_REAL movement_threshold_3 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_3 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_3 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -336,9 +336,9 @@ CCTK_REAL movement_threshold_4 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_4 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_4 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -404,9 +404,9 @@ CCTK_REAL movement_threshold_5 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_5 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_5 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -472,9 +472,9 @@ CCTK_REAL movement_threshold_6 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_6 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_6 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -540,9 +540,9 @@ CCTK_REAL movement_threshold_7 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_7 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_7 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -608,9 +608,9 @@ CCTK_REAL movement_threshold_8 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_8 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_8 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -676,9 +676,9 @@ CCTK_REAL movement_threshold_9 "Minimum movement to trigger a regridding" STEERA 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_9 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_9 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 @@ -744,7 +744,7 @@ CCTK_REAL movement_threshold_10 "Minimum movement to trigger a regridding" STEER 0:* :: "" } 0.0 -CCTK_REAL radius_change_threshold_10 "Minimum change in radius to trigger a regridding" STEERABLE=always +CCTK_REAL radius_rel_change_threshold_10 "Minimum change in radius to trigger a regridding" STEERABLE=always { - 0:* :: "" + 0.0:* :: "" } 0.0 diff --git a/Carpet/CarpetRegrid2/src/regrid.cc b/Carpet/CarpetRegrid2/src/regrid.cc index a9e01ca97..cd3cbff76 100644 --- a/Carpet/CarpetRegrid2/src/regrid.cc +++ b/Carpet/CarpetRegrid2/src/regrid.cc @@ -1172,22 +1172,23 @@ namespace CarpetRegrid2 { rvect const rad (rx, ry, rz); rvect const oldrad (old_radius_x[ind], old_radius_y[ind], old_radius_z[ind]); - CCTK_REAL const dr = sqrt (sum (ipow (rad - oldrad, 2))); - CCTK_REAL mindr; + CCTK_REAL const drfac = + (sqrt (sum (ipow (rad - oldrad, 2))))/(sqrt (sum (ipow (oldrad, 2)))); + CCTK_REAL mindrfac; switch (n) { - case 0: mindr = radius_change_threshold_1; break; - case 1: mindr = radius_change_threshold_2; break; - case 2: mindr = radius_change_threshold_3; break; - case 3: mindr = radius_change_threshold_4; break; - case 4: mindr = radius_change_threshold_5; break; - case 5: mindr = radius_change_threshold_6; break; - case 6: mindr = radius_change_threshold_7; break; - case 7: mindr = radius_change_threshold_8; break; - case 8: mindr = radius_change_threshold_9; break; - case 9: mindr = radius_change_threshold_10; break; + case 0: mindrfac = radius_rel_change_threshold_1; break; + case 1: mindrfac = radius_rel_change_threshold_2; break; + case 2: mindrfac = radius_rel_change_threshold_3; break; + case 3: mindrfac = radius_rel_change_threshold_4; break; + case 4: mindrfac = radius_rel_change_threshold_5; break; + case 5: mindrfac = radius_rel_change_threshold_6; break; + case 6: mindrfac = radius_rel_change_threshold_7; break; + case 7: mindrfac = radius_rel_change_threshold_8; break; + case 8: mindrfac = radius_rel_change_threshold_9; break; + case 9: mindrfac = radius_rel_change_threshold_10; break; default: assert (0); } - do_recompose = dr > mindr; + do_recompose = drfac > mindrfac; if (do_recompose) break; } // for rl if (do_recompose) break; @@ -1352,22 +1353,24 @@ namespace CarpetRegrid2 { rvect const rad (rx, ry, rz); rvect const oldrad (old_radius_x[ind], old_radius_y[ind], old_radius_z[ind]); - CCTK_REAL const dr = sqrt (sum (ipow (rad - oldrad, 2))); - CCTK_REAL mindr; + CCTK_REAL const drfac = + (sqrt (sum (ipow (rad - oldrad, 2))))/(sqrt (sum (ipow (oldrad, 2)))); + CCTK_REAL mindrfac; switch (n) { - case 0: mindr = radius_change_threshold_1; break; - case 1: mindr = radius_change_threshold_2; break; - case 2: mindr = radius_change_threshold_3; break; - case 3: mindr = radius_change_threshold_4; break; - case 4: mindr = radius_change_threshold_5; break; - case 5: mindr = radius_change_threshold_6; break; - case 6: mindr = radius_change_threshold_7; break; - case 7: mindr = radius_change_threshold_8; break; - case 8: mindr = radius_change_threshold_9; break; - case 9: mindr = radius_change_threshold_10; break; + case 0: mindrfac = radius_rel_change_threshold_1; break; + case 1: mindrfac = radius_rel_change_threshold_2; break; + case 2: mindrfac = radius_rel_change_threshold_3; break; + case 3: mindrfac = radius_rel_change_threshold_4; break; + case 4: mindrfac = radius_rel_change_threshold_5; break; + case 5: mindrfac = radius_rel_change_threshold_6; break; + case 6: mindrfac = radius_rel_change_threshold_7; break; + case 7: mindrfac = radius_rel_change_threshold_8; break; + case 8: mindrfac = radius_rel_change_threshold_9; break; + case 9: mindrfac = radius_rel_change_threshold_10; break; default: assert (0); } - do_recompose = dr > mindr; + do_recompose = drfac > mindrfac; + cout << drfac << " " << mindrfac << endl; if (do_recompose) break; } // for rl if (do_recompose) break; -- cgit v1.2.3 From ebc31566194eb9340144a15b2c844daef402045a Mon Sep 17 00:00:00 2001 From: "Christian D. Ott" Date: Thu, 26 Aug 2010 15:00:18 -0700 Subject: * remove debug output from regrid.cc --- Carpet/CarpetRegrid2/src/regrid.cc | 1 - 1 file changed, 1 deletion(-) (limited to 'Carpet/CarpetRegrid2') diff --git a/Carpet/CarpetRegrid2/src/regrid.cc b/Carpet/CarpetRegrid2/src/regrid.cc index cd3cbff76..4e4a9c50e 100644 --- a/Carpet/CarpetRegrid2/src/regrid.cc +++ b/Carpet/CarpetRegrid2/src/regrid.cc @@ -1370,7 +1370,6 @@ namespace CarpetRegrid2 { default: assert (0); } do_recompose = drfac > mindrfac; - cout << drfac << " " << mindrfac << endl; if (do_recompose) break; } // for rl if (do_recompose) break; -- cgit v1.2.3