Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paraMADP (Parallel Multilevel Adapted Deflation Preconditioning)

License Fortran MPI FORD

Matrix-free parallel Krylov solvers for Helmholtz equation discretized by finite-difference method, mainly using CSLP and high-order deflation preconditioning

Warning
This project is currently in active development and should be considered a work in progress. The source code is not yet optimized for performance or efficiency. Users should expect potential bugs, and changes in functionality. We welcome feedback and contributions.

Table of Contents

Introduction

The Helmholtz equation is a crucial mathematical model that describes the behavior of time-harmonic waves in various scientific fields, such as seismology, sonar technology, and medical imaging. For large-scale problems, iterative methods and parallel computing are commonly used. We aim to contribute to the broad research on this open problem by developing a matrix-free parallel scalable deflation preconditioned method for the Helmholtz equation.

This is the official repository for our research project "high-performance iterative solvers for the Helmholtz equation" and related papers.

Purpose

The primary purpose of this repository is to:

  1. Make our code and data publicly available
  2. Allow other researchers to reproduce the results presented in our papers
  3. Verify our methodologies and findings
  4. Provide a foundation for further research and development in this field

Repository Contents

  • Source code for our matrix-free parallel Krylov solver
  • Input data sets used in our experiments
  • Scripts to run our solver
  • Documentation on the code and its usage

Features

  • Matrix-free implementation for reduced memory footprint
  • Parallel computing support for high-performance computation
  • Complex Shifted Laplacian Preconditioner (CSLP) for improved convergence
  • High-order (multilevel) deflation preconditioning for wavenumber-independent convergence
  • Scalable design for large-scale Helmholtz problems

Requirements

  • Fortran compiler (e.g., gfortran 7.0+, ifort 18.0+)
  • MPI library for parallel computing (with Fortran enabled)
  • Tecplot360 (optional, for results visualization)

Installation

  1. Clone the repository:
    git clone https://github.com/ARS183/paraMADP.git  
  2. Navigate to the project directory:
    cd paraMADP  
  3. Edit the input file Helmholtz.in in the Input folder (instructions for settings are in the input file).
  4. Check and modify the makefile if necessary.
  5. Compile the project:
    make  

Usage

  1. Edit the job script frun.sh and specify the output log file name.
  2. Run the solver:
    ./frun.sh <num_processes>  
    Replace <num_processes> with the actual number of processes used for parallel computing.
  3. Check the log file and the results in the Output directory. Note that the results can be visualized using Tecplot360.

Documentation

For a quick start, refer to the README.md file in the current directory. The current job script frun.sh and input file Helmholtz.in is an typical example to reproduce our results about multilevel deflation.

Detailed documentation for this project:

  1. Refer to our papers in Citation for an overview of the mathematical theory behind the solver and preconditioners.
  2. Index: Detailed documentation of the codebase, including function descriptions and module structures generated by FORD

Contributing

This project is a work in progress. We encourage contributions from the scientific community. We welcome feedback, questions, and contributions from the community. Please feel free to open issues or submit pull requests if you have suggestions or improvements.

Contact

For questions or support, please contact:

Citation

If you use this code or data in your research, please cite our papers:

[1] Chen, J., Dwarka, V., Vuik, C. (2024). Matrix-Free Parallel Preconditioned Iterative Solvers for the 2D Helmholtz Equation Discretized with Finite Differences. In: van Beurden, M., Budko, N.V., Ciuprina, G., Schilders, W., Bansal, H., Barbulescu, R. (eds) Scientific Computing in Electrical Engineering. SCEE 2022. Mathematics in Industry(), vol 43. Springer, Cham. https://doi-org.tudelft.idm.oclc.org/10.1007/978-3-031-54517-7_7

[2] Chen, J., Dwarka, V., & Vuik, C. (2024). A matrix-free parallel two-level deflation preconditioner for two-dimensional heterogeneous Helmholtz problems. Journal of Computational Physics, 113264. https://doi.org/10.1016/j.jcp.2024.113264

[3] Chen, J., Dwarka, V., & Vuik, C. Matrix-Free Parallel Scalable Multilevel Deflation Preconditioning for Heterogeneous Time-Harmonic Wave Problems. Coming soon.

About

A matrix-free parallel Krylov solver for Helmholtz equation discretized by finite-difference method, mainly using CSLP and high-order deflation preconditioning

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages