Hello Steve,
MoL_InitialCopy seems to be a wasted step. It would not be needed if (1) time levels were rotated at the end of the iteration loop, or (2) we computed B_RHS = Foo(B_p)
Am I missing something? Why do we do things that way?
(2) is not possible since the RK type methods evaluate the RHS multiple times and only the first time would be B_RHS = Foo(B_p) and the others would be B_RHS = Foo(B_intermediate_step).
(1) I don't understand. Right now timelevels are rotated just before CCTK_PRESTEP which is (from MoL's point of view) identical to rotating after CCTK_POSTSTEP as far as I understand things.
Having said that: the initialcopy is wasteful. I think there is a parameter to MoL that would compute the RHS for the next step at the end of the current iteration which would make B_RHS = Foo(B_p) unnecessary though it requires that RHS to be permanent so they are no longer just vehicles to transfer the RHS data to MoL.
Yours, Roland