[Carpet] Tracking the puncture with Carpet
Ian Hawke
I.Hawke at soton.ac.uk
Fri Jul 21 11:52:07 CEST 2006
Yosef Zlochower wrote:
> I want to evolve d Y^a / dt = - beta^a (Y) to track the location
> of the punctures. With a unigrid code I simply added this as an
> evolved array to MoL. However, it seems that this is not simply
> done with mesh refinement.
Unfortunately not; Bela had a similar problem and it was just going to
be too difficult (if not impossible) to fit in with MoL.
> Is there some way of knowing if the current
> level and component is the finest available resolution for the point
> Y^a. If there is, then I suppose that I could set d Y^a = 0 for all
> levels and all components but the right one.
The only way that I can see to do this is to use Christian's trick to
get the refinement level and then check the coordinate boundaries of the
patch (taking into account ghost/boundary zones) against the location of
the puncture. This will of course only work if you can guarantee that
the puncture is always located on a grid at the finest refinement level.
> I can think of another
> method where I interpolate beta at y^a after the timestep is complete.
> Will the interpolator give me beta at the highest refinement level
> at point y^a, and if so, how do I get the appropriate dt for this
> refinement level?
Yes, you will get beta as accurately as possible given the position of
the puncture in the refinement hierarchy. The simplest approach would be
a two step method where first a routine is scheduled in the appropriate
mode to get the shift, and then a follow-up routine is scheduled in
local/level mode to evolve the puncture, where you would use Christian's
hack to only do this on the finest level.
In many ways I believe that this is the better approach as you would
then have the correct puncture location on every processor, as the
interpolator would return the puncture location globally.
Ian
More information about the developers
mailing list