Hello Gabriele,
Sorry for the delay. Your email was flagged as "spam" by the University of Illinois and I forgot to respond after noting that your email was an "unanswered question" week before last week.
Steve responded to you as well in the meantime I believe.
In this specific case, I can either turn on checkpointing for the BSSN variables in ProcaEvolve, or I can recompute them from the ADM ones after recovery. What is the correct way to re-initialize a derived variable after recovery?
If you want to be consistent with eg ML_BSSN then checkpointing and recovering is the way to go.
Recomputing would reduce the checkpoint size a bit. Usually that is not a problem (speed or size wise). One has to be *very* careful though that one can exactly (to the last bit) recompute the variable though (eg there must not be anything that runs after BSSNtoADM that modifies the BSSN variables [eg boundary routines, constraint projections, whatnot]). If one cannot guarantee that, then recovering from checkpoints (and not touching the recovered variables) would be preferable. For historic reasons there is (at least) one thorn in ET (GRHydro) that violates this, namely it runs con2prim in post-recover-variables (since it runs in mol_poststep and mol_poststep runs in that bin) but con2prim is not going to produce the same results due to its result depending on the initial guess which is the values of the primitive variables in hydrobase ("previous" values during evolution, "just recovered values" during recovery). This behavious occasionally causes headaches when a run fails / succeeds depending on which checkpoint one recovers from.
Yours, Roland