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

Merged Jacques Xing requested to merge CFD-Xing/nektar:feature/pfasst-time-integration into master

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:


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.


The following test has been added:


Suggested reviewers

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



  • 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