firedrakeproject / asQ

A library for implementing ParaDIAG timestepping algorithms using Firedrake

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.