[Carpet] Tracking the puncture with Carpet
Yosef Zlochower
yosef at phys.utb.edu
Fri Jul 21 17:03:19 CEST 2006
Hi,
I am now wondering if it is indeed possible to evolve the puncture
locations with MoL. Suppose that my routine to calculate the rhs
of the puncture location has the following logic:
for all tracked punctures
{
If (on the right time level && on the right component) then
interpolate beta
p_loc_dot = - beta
else
p_loc_dot = 0
}
First, will all processors get the correct vale of p_loc_dot, or
will only those processors that own a chunk of the correct level.
It seems to me that if I set the time derivative of the puncture
locations to zero at all the coarse levels and on the finest level,
at all the wrong components, then MoL will only change the value
of the puncture location on the right level and component.
I am assuming that Carpet and MoL have the following evolution
scheme
For all levels
for all components
for all MoL ministeps
call RHS
}
}
Yosef
Ian Hawke wrote:
> 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
>
>
> _______________________________________________
> developers mailing list
> developers at lists.carpetcode.org
> http://lists.carpetcode.org/listinfo/developers
More information about the developers
mailing list