On Friday, October 22, 2010, Ian Hinder ian.hinder@aei.mpg.de wrote:
The difference is related to prolongation of mesh refinement boundaries. Psi4 is computed using spatial derivatives, and hence needs the boundaries of the grid to be filled in via prolongation from the next coarser grid. Functions scheduled in ANALYSIS cannot have time interpolation, due to the time at which ANALYSIS is scheduled relative to the Berger-Oliger time stepping. In order that all points in the grid have sensible values, analysis quantities which take spatial derivatives should be scheduled in EVOL so that time interpolation onto their refinement boundaries is possible. It is also necessary to recompute these quantities after regridding and in several other places. To make this convenient, a new schedule group, MoL_PseudoEvolution, was introduced in EVOL in which such quantities should be computed. Variables set in this group should have three timelevels, just like evolved variables, since time interpolation requires this.
Erik: is this description accurate?
Yes, this is accurate.
When Multipole calls the interpolator to find the values of Psi4 on the extraction spheres, Carpet uses the finest grid that the point exists on. This could mean the last points in a buffer zone, and if you haven't filled these correctly with prolongation, these will be poisoned (or undefined, if you're not using poisoning). So if your extraction spheres intersect your refinement boundaries (very difficult to avoid in 3D), you might pick up poison from them.
In my opinion, the interpolator should not give points from buffer zones, and instead use the coarser grid. I think this might be the case in the new (Mercurial) version of Carpet. Erik: is that the case?
This is partly correct. The centre of an interpolation stencil will not be in a buffer zone in the Mercurial version. However, the stencil itself may extend into buffer / ghost / symmetry / outer boundary zones. That means that one still needs to prolongate, synchronise and apply symmetry and boundary conditions before interpolating.
Thanks for the explanations, Ian!
-erik