#966: Carpet always calls POSTREGRID on the finest level --------------------------+------------------------------------------------- Reporter: rhaas | Owner: eschnett Type: enhancement | Status: new Priority: minor | Milestone: Component: Carpet | Version: Resolution: | Keywords: --------------------------+-------------------------------------------------
Comment (by rhaas):
I should have posted more context I think. This lines are the ones deciding whether to call any routine on this level at all. The GLOBAL-late routines would still execute only on the last level. I had assumed without checking that did_any_recompose would imply did_remove_level which is not true as you point out. The check for did_remove level was clearly missing. So instead how about: {{{ // Carpet assumes that a regridding operation always changes "level N // and all finer levels" so we should call POSTREGRID on all finer levels if (did_any_recompose or (did_remove_level and rl == reflevels - 1)) }}} which should trigger on all levels with rl larger or equal to the first one that was recomposed as well as on the finest one when a level was removed.
This would actually call POSTREGRID more often, since it would enter not only on levels that were recomposed or on the finest one if a level was removed so is not quite in keeping with what we originally would have liked. So I am not averse to not changing anything.
The proposed check assumes that we want to call POSTREGRID whenever a level might be affected by recomposing and that once a coarse level is recomposed, all finer levels also are affected. Or do we want the distinction between regrid and recompose?