#1238: implement buffer mask in CarpetEvolutionMask --------------------------+------------------------------------------------- Reporter: rhaas | Owner: eschnett Type: enhancement | Status: review Priority: minor | Milestone: Component: Carpet | Version: Resolution: | Keywords: CarpetEvolutionMask --------------------------+-------------------------------------------------
Comment (by rhaas):
I had not really though of it but yes there is a variable dd.local_boxes.at(mglevel).at(reflevel).at(local_component).buffers that holds an ibset of the local buffers. Patch 0002 uses it and would have the decided advantage of not copying the logic to create the buffer region description to several places in the code.
However I found that using these buffers is not really what I want. They are computed using the owned points so that ghost zones that are also buffer zones are flagged as non-buffers which is not what I want. My intention is to use the buffer mask to find out where eg. con2prim does not have to run. Since con2prim runs everywhere (also in ghosts and buffers) since it runs after SYNC (since con2prim scales better than a SYNC of the primitives) I need to know if a point is both a buffer and a ghost zone. This seems due to dh::regrid constructing buffers using the "owned" region rather than the "exterior".
buffers is used in dh::regrid in line 956 {{{ // Prolongation must fill what cannot be synchronised, and // also all buffer zones needrecv += box.buffers; }}} where I believe one *currently* could use buffers constructed using "exterior" instead of "owned". However this depends on needrecv being set up in the "#else" branch of line 936.