[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