Skip to content

Implementation of PFASST module and tidy-up of the Driver class/subclasses.

Issue/feature addressed

Implementation of PFASST (parallel full approximation scheme in space and time) algorithm in Nektar++. PFASST is a parallel-in-time algorithm based on both Parareal and SDC (spectral deferred correction method). Interested readers are referred to:

https://msp.org/camcos/2012/7-1/camcos-v7-n1-p04-s.pdf
https://link.springer.com/article/10.1007/s10543-014-0517-x
https://onlinelibrary.wiley.com/doi/epdf/10.1002/nla.2110
https://www.sciencedirect.com/sdfe/reader/pii/S0021999119309155/pdf

Implementation

The proposed implementation re-use components developed for the Parareal driver and the SDC time-integration algorithm. Although multi-level PFASST algorithms have been suggested in the literature, the current implementation only assume two level (coarse/fine) as in the original Parareal method. The implementation of the PFASST driver follows the algorithms described in the reference mentioned above.

Additionally, while provision for both time and space coarsening have been provided. The scheme is currently being tested with time coarsening only.

Additionally the following changes have been made:

  • Polylib.cpp has been slightly tidy-up by removing unused and/or duplicate function declaration.
  • The InterpExp1ToExp2 has been removed from Interpolator.cpp and moved to DriverParallelInTime.cpp
  • The TimeIntegrationSchemeOperators object op has been added as member variable m_op across the TimeIntegration class/subclasses.
  • The Driver class and subclasses have been tidy-up.

Tests

The following test has been added:

solvers/ADRSolver/Tests/PFASSTDriverUnsteadyAdvection1D.tst

Suggested reviewers

Please suggest any people who would be appropriate to review your code.

Notes

Checklist

  • Functions and classes, or changes to them, are documented.
  • [ ] User guide/documentation is updated.
  • Changelog is updated.
  • Suitable tests added for new functionality.
  • Contributed code is correctly formatted. (See the contributing guidelines).
  • License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).
Edited by Jacques Xing

Merge request reports