Closed JHopeCollins closed 2 years ago
I think this is ready to merge, or at least I've done all the refactors I wanted to do for this branch.
Turns out that most of the paradiag
class was just dealing with the distributed all-at-once system, so most of the old paradiag methods have ended up in AllAtOnceSystem
:
Vec
.Where possible, these methods can also take as arguments all-at-once functions belonging to someone else as arguments, so they can be reused by the JacobianMatrix
and DiagFFTPC
.
Other major points for this PR:
paradiag.__init__()
, except actually setting up the PETSc objects and solvers, because this is particular to the paradiag flavour being used.JacobianMatrix
has been moved to the same file as the AllAtOnceSystem
, and neither class knows anything about the paradiag
class. JacobianMatrix
gets all the information it needs from AllAtOnceSystem
. They do know about the alpha
though so that we can still do a quasi-Jacobian (or reimplement Picard iterations at some point).M
-> time_partition
, and rT
-> time_rank
I think this is ok except my minor suggestions and the bug fix!
Great, thanks. I'll make those edits now.
Factoring out the all-at-once system from the paradiag class.
AllAtOnceSystem encapsulates all data and logic related to a time-series spread over an ensemble - this include both the distrubuted function space/functions and the all-at-once finite element form.