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