Hello Miguel,
the official way would be to use CoordBase's GetBoundarySizesAndTypes function or replicate the code in repos/mclachlan/ML_BSSN/src/Kranc.cc, specifically GetBoundaryInfo.
The repsonses in the is_symbnd from GetBoundarySizesAndTypes and GetBoundaryInfo likely differ since the former does not know about Llama so will classify Llama's inter-patch boundaries as "symmetry" boundaries while the latter does not do so.
Their answer's for physical boundaries (which may not quite be the same as "outer" boundaries if symmetry boundaries count as "outer") should be identical though. And you are looking for the physical boundaries after all.
Yours, Roland
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 doand 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