Skip to content

Parallelise pulse wave solver and tidy up communicators

Spencer Sherwin requested to merge feature/Parallel_PulseWave into master

Issue/feature addressed

Extend pulse wave solver to work in parallel.

Proposed solution

Implement parallelisation over multiple ExpLists

Implementation

The development requires two key developments:

  1. cleaning up the communicators. Currently the implementation passes the global communicator (typically held in session reader) to the ExpList. This works fine for a solver using a single domain containing ExpLists that span the whole domain. However in the Pulse Wave Solver we have a number of number of different 1D domains each of which have an ExpList that are connected by a specialised Riemann solver. It is therefore necessary to provide the ExpList with the correct communicators.

  2. The explicit implementation first solvers a specialised Riemann problem at the bifurcations which are then used as boundary conditions for each vessel. Care needs to be taken in the pattern parallel communication for the bifurcation communication otherwise it is possible to have a communication lock.

Tests

Parallel tests have been added based on the existing serial tests.

Notes

Please add any other information that could be useful for reviewers.

Checklist

  • Functions and classes, or changes to them, are documented.
  • User guide/documentation is updated.
  • Changelog is updated.
  • Suitable tests added for new functionality.
  • Newly added files are correctly formatted.
  • License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).
Edited by Spencer Sherwin

Merge request reports