#1417: Fixed refinement levels break AMR ---------------------------------+------------------------------------------ Reporter: coryell@… | Owner: eschnett Type: defect | Status: new Priority: major | Milestone: Component: Carpet | Version: development version Keywords: CarpetRegrid2 | ---------------------------------+------------------------------------------ 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.
#1417: Fixed refinement levels break AMR ----------------------------------+----------------------------------------- Reporter: coryell@… | Owner: eschnett Type: defect | Status: new Priority: major | Milestone: Component: Carpet | Version: development version Resolution: | Keywords: CarpetRegrid2 ----------------------------------+-----------------------------------------
Comment (by coryell@…):
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)]}
#1417: Fixed refinement levels break AMR ----------------------------------+----------------------------------------- Reporter: coryell@… | Owner: eschnett Type: defect | Status: review Priority: major | Milestone: Component: Carpet | Version: development version Resolution: | Keywords: CarpetRegrid2 ----------------------------------+----------------------------------------- Changes (by rhaas):
* status: new => review
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.
#1417: Fixed refinement levels break AMR ----------------------------------+----------------------------------------- Reporter: coryell@… | Owner: eschnett Type: defect | Status: closed Priority: major | Milestone: Component: Carpet | Version: development version Resolution: fixed | Keywords: CarpetRegrid2 ----------------------------------+----------------------------------------- Changes (by eschnett):
* status: review => closed * resolution: => fixed
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.
#1417: Fixed refinement levels break AMR ----------------------------------+----------------------------------------- Reporter: coryell@… | Owner: eschnett Type: defect | Status: closed Priority: major | Milestone: Component: Carpet | Version: development version Resolution: fixed | Keywords: CarpetRegrid2 ----------------------------------+-----------------------------------------
Comment (by rhaas):
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.
#1417: Fixed refinement levels break AMR ----------------------------------+----------------------------------------- Reporter: coryell@… | Owner: eschnett Type: defect | Status: closed Priority: major | Milestone: Component: Carpet | Version: development version Resolution: fixed | Keywords: CarpetRegrid2 ----------------------------------+-----------------------------------------
Comment (by coryell@…):
The patch works for me too, thank you both.
trac@lists.einsteintoolkit.org