A high-performance unified C++ framework implementing domain decomposition methods for solving large-scale elliptic PDEs on parallel computers.
HPDDM is a high-performance unified framework for domain decomposition methods (DDM), providing efficient implementations of advanced preconditioners and Krylov subspace solvers for large-scale scientific computing. It solves challenging elliptic partial differential equations (PDEs) like diffusion, elasticity, and Helmholtz problems on parallel architectures, offering scalability and robustness where traditional methods may struggle.
Computational scientists, researchers, and engineers working on large-scale numerical simulations of PDEs, particularly those needing scalable, parallel solvers for elliptic problems in fields like computational fluid dynamics, structural mechanics, and wave propagation.
Developers choose HPDDM for its rigorous implementation of state-of-the-art domain decomposition methods, seamless integration with popular scientific computing libraries like PETSc and FreeFEM, and proven efficiency in solving heterogeneous and difficult elliptic problems at scale.
A framework for high-performance domain decomposition methods.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements advanced methods like Restricted Additive Schwarz, FETI, and BDD with automatic coarse space construction via GenEO or local operators, proven efficient for challenging elliptic PDEs as described in the README.
Ready-to-use in key scientific computing libraries like PETSc, FreeFEM, and Feel++, enabling easy adoption in existing simulation workflows without extensive recoding.
Supports flexible preconditioning with GMRES, CG, GCRO-DR and their block variants, allowing for robust solving of difficult problems, with details and citations provided in the features list.
Offers interfaces for C, Python, and Fortran, with Python requiring NumPy and mpi4py, making it adaptable to diverse coding environments as noted in the usage section.
Requires linking against BLAS, LAPACK, a direct solver like MUMPS, and often an eigenvalue solver like ARPACK, adding significant setup and maintenance complexity, as admitted in the build instructions.
Two-level methods need a discretization kernel like PETSc DMPlex to provide elementary matrices, meaning preconditioners aren't purely algebraic and demand domain knowledge, limiting plug-and-play use.
Some compilers like icpc and pgc++ require manual patches to compile C++11 properly, as highlighted in the README, which can hinder portability and ease of installation.