Skip to content

DmitriBogdanov/MPI-helmholtz-equation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

C++

MPI Helmholtz Equation

Contains serial and parallel (MPI) implementations of following algorithms:

  • Helholtz equation solver (internal iterations using Jacobi method)
  • Helholtz equation solver (internal iterations using Seidel method with black-red ordering)

Note that present implementations are intended for academic purposes, as such they are not meant to be used in any sort of high-performance production code.

Compilation

  • Recommended compiler: Intel C++ Compiler
  • Requires C++17 support
  • Requires MPI implementation

Usage

Helmholtz equation:
$$-u_{xx} - u_{yy} + k^2 u(x, y) = f(x, y),$$
where
$k$ - wave_number,
$f$ - right_part,
defined on a 2D region $[0, L]\times[0, L]$ with $4$ fist-type boundary conditions

Adjust grid size $N$, area size $L$, wave number $k$, precision and boundary conditions in "main.cpp" to configure testing parameters. Parallel implementations assume $(N - 2)$ to be a multiple of MPI_Comm_size().

Version history

  • 01.01

    • Reworked type 3 communication to utilize its' async nature and compute middle rows during sending of data
    • Refined comments, removed redundant dublicates
  • 01.00

    • Changed table formatting
    • Added more error messages and safeguards
    • Changed type 1 and 2 MPI communications to guarantee downwards-upwards waves of data transfer
  • 00.04

    • Added serial Seidel implementation
    • Implemented parallel Seidel nethod
  • 00.03

    • Added serial Jacobi implementation
    • Added multiple types of MPI communication, that can be toggled as a module inside the method
    • Added proper output in form of a table
    • Parallelized Jacobi stop condition
    • Finalized Jacobi implementation and got proper speedup from parallelization
  • 00.02

    • Included full method description in comments
  • 00.01

    • Implemented parallel Jacobi method with MPI (stop condition is serial for now)
    • Implemented parallel calculation of relative error

License

This project is licensed under the MIT License - see the LICENSE.md file for details

About

Reference implementation of Jacobi & Seidel iteration for Helmholtz equation using MPI concurrency

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages