#1256: scheduling MoL_PostStep in Post_Recover_Variables ---------------------+------------------------------------------------------ Reporter: rhaas | Owner: Type: task | Status: new Priority: major | Milestone: Component: Cactus | Version: Resolution: | Keywords: MoL ---------------------+------------------------------------------------------
Comment (by eschnett):
Regarding con2prim: Although the name does not indicate it, I think this routine is also the place to modify the conserved variables to ensure they are consistent with a primitive state. Such a conserved-modifying step is required during evolution anyway.
However, I am then worried about calling con2prim after regridding. Assuming you regrid (but do nothing to the grid structure), wouldn't calling con2prim in postregrid then change the state of the simulation? Assuming that regridding would only update the process decomposition (which is feasible, and is how load balancing would be implemented): wouldn't this modify the state?
con2prim needs to be a projection. It can modify the conserved state, but calling con2prim twice in a row should be a no-op. Why is this not the case? Would calling prim2con right after con2prim help? If you run con2prim after prim2con, would at least this be a no-op? If not, I don't see how one could reasonably achieve consistency during an evolution unless con2prim is called only in PostStepModify.
Regarding calling PostStep in PostRecoverVariables: Once this works for you, let's try it. You are right that all non-checkpointed variables should explicitly be set in PostRecoverVariables anyway.