[Users] boundary conditions with Llama

Miguel Zilhão miguel.zilhao.nogueira at tecnico.ulisboa.pt
Tue Jun 25 06:05:10 CDT 2019


hi Roland, all,

i'm coming back to this point since i'm now realizing that my interpretation was not correct... just 
to recall, i'm imposing boundary conditions in the following fashion:

    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

and my assumption was that the line "if (Sn(i,j,k) == -2)" would guarantee that this would only run 
in the physical boundary region, as per the comment in the file interface.ccl from llama/Interpolate2:

   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"

this interpretation was consistent with what it's done in the thorn LlamaWaveToy (where the BC are 
imposed in a similar way).

however, when running with several processors, it seems that there are some inter-processor points 
marked with Sn = -2, and therefore the loop above is called outside my physical boundary region (i 
noticed this by adding write statements inside the loop above).

so i have the following questions:

  - what exactly does "outer boundary points" mean for the Sn function? is there a bug, or did i 
just misinterpreted that "outer boundary" means the "physical" boundary?

  - what would be the canonical way of checking whether a point belongs to the physical outer 
boundary (ie, where BCs should be specified) when using Llama?

thanks,
Miguel


On 18/06/19 16:00, Haas, Roland wrote:
> Hello Miguel,
> 
>> oh, but won't this be handled by the
>>
>>     if (Sn(i,j,k) == -2)
>>
>> line above?
> I see. I had no idea that this is what the grid function does.
> 
>> 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?
> Yes, in that case this should work fine. In fact it is probably more
> correct then what I did b/c due to the way Llama works may suggestion
> would likely have treated the inter-patch bondaries in Llama as outer
> boundaries (since they are "symmetry" boundaries to Cactus).
> 
> So you should be fine actually.
> 
> Yours,
> Roland
> 


More information about the Users mailing list