Average the 'real' function not the 'complex' function in `DiagFFTPC.update()`
JHopeCollins opened this issue · comments
The time average in the preconditioner does a global allreduce
on a function from the 'complex' function space CblockV
. The real and imaginary components of this function are identical, so we could half this communication by reducing on a function from the real-valued blockV
space instead.
This was originally tried in the all_at_once_system branch, but I was getting the wrong results reducing the 'real' function. This issue is to deal with it separately so that the all_at_once branch can be merged with the original version of DiagFFTPC.update
.