-
Notifications
You must be signed in to change notification settings - Fork 135
Description
Currently we use Julia's default Array type for the state variables and pass a custom norm to the time integrators to implement MPI support.
For the matrix-free implicit examples that use Krylov schemes this is not sufficient to enabled distributed support for them.
Krylov.jl has support for custom workspaces and defines what operations the state vector needs to support https://jso.dev/Krylov.jl/stable/custom_workspaces/#Methods-to-overload-for-compatibility-with-Krylov.jl
Most notably we need to implement a distributed norm and dot product.
The idea would be to introduce a TrixiStateVector type that would implement a distributed norm and dot product and could perhaps used to parallelize other operations like broadcast inside the time integrators. Importantly we would unwrap that vector as soon as possible so that the interior code of Trixi has to change very little.