#960: Dissipation thorn schedules LOCAL routines after GLOBAL ones ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: Type: defect | Status: reviewed_ok Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: Dissipation and SphericalSurface ------------------------------------+---------------------------------------
Comment (by rhaas):
Attached please find a patch (loose-interaction.patch) which accomplishes this. It no longer replicates Carpet's logic but at the price of introducing a second function and more #ifdefs. Which one is nicer depends on how crucial it is to keep user thorns ignorant of Carpets internal logic I guess. Both versions are fine with me (though I slightly prefer the first version since it does not require a static variable). Alternatively and since I know of several other thorns that could benefit from something like this, how about defining (yet another) aliased function to return "RunOnLevel(rl)" which returns {{{cctk_iteration%do_every == 0}}} or {{{(cctk_iteration-1)%do_every == 0}}} depending on whether we are in EVOL or not? Ie. an aliased routine that exposes Carpet's decision (but not the logic behind it) to the user code in a hopefully controlled manner?