[Users] boundary conditions with Llama

Miguel Zilhão miguel.zilhao.nogueira at tecnico.ulisboa.pt
Tue Jun 18 09:55:13 CDT 2019


>>     reflevel = GetRefinementLevel(cctkGH)
>>     map      = MultiPatch_GetMap(cctkGH)
>>     if (reflevel /= 0 .or. map == 0) return
>>
>>     do j = 1, cctk_lsh(2)
>>        do i = 1, cctk_lsh(1)
>>           do k = cctk_lsh(3)-cctk_nghostzones(3)+1, cctk_lsh(3)
>>              if (Sn(i,j,k) == -2) then
>>
>>                [my BCs go here]
>>
>>              end if
>>           end do
>>        end do
>>     end do
> 
> Uhmm, probably not quite. The code should use the cctk_bbox(6) array
> which has entries 0 or 1 depending on whether a face is an outer (or
> symmetry) boundary or not.
> 
> The indexing is i = 1 + 2*idir + iface where idir = 0,1,2 and iface =
> 0,1 (lower, upper face).
> 
> The loops are kind of inefficient as you should have the "k" loop as
> the outer one (as usual). Using cctk_nghostzones(3) as the boundary
> width is not quite correct as technically you should use the boundary
> width returned by thorn CoordBase's GetBoundarySpecification aliased
> function (see its interface.ccl).

oh, but won't this be handled by the

   if (Sn(i,j,k) == -2)

line above?
from the description of the Sn function in the Interpolate2 thorn:

  CCTK_INT source_patch TYPE=gf TAGS='Checkpoint="no" Prolongation="none"'
  {
    Sn
  } "source patch number, -1 for interior points, -2 for outer boundary points, -3 for inter- 
processor ghost points"

and also from the way this is done in LlamaWaveToy, i was assuming that Sn(i,j,k) == -2 would 
guarantee that the points belong to the outer boundary (ie, points where i want to specify a 
physical boundary condition). is this assumption not correct?

thanks,
Miguel


More information about the Users mailing list