[Users] Boundary conditions in diagnostics with compute_every

Gabriele Bozzola bozzola.gabriele at gmail.com
Fri Mar 5 19:01:38 CST 2021


Hi Erik,

thank you very much for your answer.

Just a clarification: what is 'boundary' exactly in this context?

Also, is it a problem if I don't worry about the boundaries If I 
want to interpolate the constraints onto a sphere?

Thanks,
Gabriele

Erik Schnetter <schnetter at cct.lsu.edu> writes:

> Gabriele
>
> If you do not use the constraints, then you do not need to set 
> the
> boundaries. That would simplify many things; for example, you 
> can
> calculate them at any time, and you do not need to worry about 
> time
> levels. However, you then need to be careful about visualization 
> and
> reductions: You need to ensure that you don't accidentally 
> visualize
> the boundaries, and you cannot perform vertex-centred reductions 
> in
> Carpet because they need some boundary values.
>
> If you do need boundaries, then you need three time levels to 
> allow
> prolongation on boundaries, and you are essentially forced to 
> evaluate
> the constraints at every iteration. I recommend the schedule bin
> "MoL_PseudoEvolution" for this, which runs once per time step, 
> after
> MoL's loop, at the right time (i.e. before restriction).
>
> -erik
>
> On Fri, Mar 5, 2021 at 11:01 AM Gabriele Bozzola
> <bozzola.gabriele at gmail.com> wrote:
>>
>> Hello,
>>
>> suppose (for clarity) that I want to write a thorn that 
>> computes the constraint violations
>> as grid functions. Since this is a diagnostic, I don't need to 
>> compute it at every iteration,
>> so I will add a parameter "compute every" and I will schedule 
>> the computations in
>> CCTK_ANALYSIS. Then, I will be careful and make sure that 
>> compute_every is a
>> multiple of when all the refinement levels are synced up.
>>
>> How are boundary conditions handled in this case?
>>
>> I can call Boundary_SelectGroupForBC every "compute_every" and 
>> schedule the
>> corresponding functions in the scheduler. But, do I need to (1) 
>> allocate multiple timelevels
>> for my grid functions, (2) do anything about filling previous 
>> timelevels?
>>
>> I am looking at WeylScal4 as an example. The thorn has 
>> parameters "compute_every",
>> the grid functions have 3 time levels, and 
>> Boundary_SelectGroupForBC is called
>> every "compute_every", but nothing is done to fill the previous 
>> timelevels. How does this
>> work?
>>
>> Assuming that the boundary conditions are 'flat', is there any 
>> way to just work with one
>> timelevel?
>>
>> Thanks,
>> Gabriele
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at einsteintoolkit.org
>> http://lists.einsteintoolkit.org/mailman/listinfo/users


More information about the Users mailing list