- removed comment
Fixed refinement levels break AMR
CarpetRegrid2's "fixed box" functionality apparently prevents adaptive mesh refinement from occurring. When the parameter CarpetRegrid2::num_centres is set to 1, refined levels near increased level_mask do not appear, but they do if num_centres is set to 0. I have included a modified version of the AMRToy thorn whose only purpose in these tests is to set the level_mask in an annulus shape with larger radius than that of the fixed box. I have also included three parameter files, one in which there is only fixed-box refinement, one in where there is only AMR, and one in which there is both. In the test where there is both, I only observe the fixed-boxes showing up. The resolution of these parameter files can be increased to get better-defined AMR, but this low resolution still demonstrates the problem.
Keyword: CarpetRegrid2
Comments (6)
-
reporter -
- changed status to open
- removed comment
Turns out the reason for this behaviour was the skipping of the recompose step "Refined regions have not changed sufficiently; skipping regridding" which did overwrite the do_recompose setting from AMR. The attached patch simply skips this test when AMR is active.
-
- changed status to resolved
- removed comment
The patch is almost correct.
The for loop after the statement
if (adaptive_refinement) do_recompose = true;
has the sole purpose to determine whether recomposing is required. If adaptive_refinement is true, then the whole for loop should be skipped.
Implemented this. Please test.
-
- removed comment
Works for me, both codes seem to be functionally identical. The modified code still regrids and passes all tests. I actually had something similar to what is now implemented as a first try but thought that proposing
do_recompose = false; if (adaptive_refinement) do_recompose = true; else for (int n = 0; n < num_centres; ++ n) { ...69 lines of code... }
likely would have had me scolded for not indenting the loop :-). The current code is obviously closer in style to what is used in the file otherwise.
Thank you for reviewing and committing the patch.
-
reporter - removed comment
The patch works for me too, thank you both.
-
- edited description
- changed status to closed
- Log in to comment
Additional debugging information: The grid structure before and after the AMR step occurs (line 302 in CarpetRegrid2/src/regrid.cc)
Fixed-boxes only:
Before AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} Before AMR: Refinement level 1: regions are bboxset<CCTK_INT4,3>:{size=512,setsize=1,set=[([166,166,166]:[194,194,194]:[4,4,4]/[41,41,41]:[48,48,48]/[8,8,8]/512)]} < AMR does not occur > After AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} After AMR: Refinement level 1: regions are bboxset<CCTK_INT4,3>:{size=512,setsize=1,set=[([166,166,166]:[194,194,194]:[4,4,4]/[41,41,41]:[48,48,48]/[8,8,8]/512)]}
AMR only:
Before AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} <AMR occurs > After AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} After AMR: Refinement level 1: regions are bboxset<CCTK_INT4,3>:{size=32768,setsize=1,set=[([118,118,118]:[242,242,242]:[4,4,4]/[29,29,29]:[60,60,60]/[32,32,32]/32768)]}
Both fixed-boxes and AMR:
Before AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} Before AMR: Refinement level 1: regions are bboxset<CCTK_INT4,3>:{size=512,setsize=1,set=[([166,166,166]:[194,194,194]:[4,4,4]/[41,41,41]:[48,48,48]/[8,8,8]/512)]} < AMR occurs > After AMR: Refinement level 0: regions are bboxset<CCTK_INT4,3>:{size=97336,setsize=1,set=[([0,0,0]:[360,360,360]:[8,8,8]/[0,0,0]:[45,45,45]/[46,46,46]/97336)]} After AMR: Refinement level 1: regions are bboxset<CCTK_INT4,3>:{size=512,setsize=1,set=[([166,166,166]:[194,194,194]:[4,4,4]/[41,41,41]:[48,48,48]/[8,8,8]/512)]}