#1499: Error in synchronisation after restriction ---------------------+------------------------------------------------------ Reporter: hinder | Owner: eschnett Type: defect | Status: review Priority: major | Milestone: ET_2014_05 Component: Carpet | Version: development version Resolution: | Keywords: ---------------------+------------------------------------------------------
Comment (by eschnett):
The code in dh.cc now contains two if statements checking for higher order restriction -- once with a question mark operator (introduced by this patch), and then in an existing if statement overwriting an existing variable. I suggest to rewrite this such that there is only a single if statement with an else branch, so that the variable "needrecv" is set exactly once.
The parameter use_higher_order_restriction seems undefined in Carpet -- did you forget to commit param.ccl?
After these changes okay to commit.
Somewhat related: The current nearby comment {{{ // NOTE: change in behaviour (affects only outer boundaries I think)!!!! // NOTE: b/c of this we need a low-level sync after the restrict }}} is wrong: We not only need to sync, but also need to apply boundary conditions (including symmetries) after each restriction! The current sync in Restrict.cc is not sufficient for this. Instead, we should call MoL_PostStep from Evolve.cc... But we should probably have a test case for higher order restriction first.