SimVascular / SimVascular/svMultiPhysics
Updating Trilinos implementation
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 45
- Forks
- 60
- Avg merge
- 5d 23h
- Merged PRs (30d)
- 11
Description
Problem
Currently the Trilinos implementation relies on archived, not supported or deprecated packages. In particular, it is based on the following packages:
- Epetra: legacy linear algebra library in Trilinos for dense and sparse matrices and vectors. It has limited flexibility, making it harder to maintain and extend, for example if a custom preconditioner needs to be implemented in the trilinos environment (Planned Archival/Deprecation)
- AztecOO: iterative linear solver package in Trilinos, it lacks some linear solvers such as FGMRES (Planned Archival/Deprecation)
- Ifpack: legacy preconditioner package for Epetra-based matrices (Planned Archival/Deprecation)
- ML: multilevel preconditioner package (Planned Archival/Deprecation)
Since Ifpack and ML are deprecated, they are not developed anymore and new optimized preconditioners will not be available in our solver.
Solution
Proposed package updates:
- Epetra -> Tpetra: actively developed, templated, and Kokkos-enabled for GPU/CPU portability.
- AztecOO -> Belos: supported modern iterative solver framework with flexible operator support.
- Ifpack -> Ifpack2: supported templated preconditioner package compatible with Tpetra.
- ML -> MueLu: actively developed multigrid preconditioner framework with advanced scalability (parameters need to be tuned as all algebraic multigrid preconditioners!).
Also I am planning to use Teuchos, a common core package for memory management, communication utilities, parameter lists, and interoperability across Trilinos packages. It provides the foundation for managing references, smart pointers, and parameter configuration in a consistent way (avoiding dangling pointers and memory leaks).
All updated packages will be wrapped under a Kokkos Node abstraction, enabling the same code to target different execution spaces. This provides the possibility of running for example on GPUs in the future, while still supporting efficient CPU execution when GPU usage is not required.
Additional context
An overview of all Trilinos packages can be found here
Code of Conduct
- I agree to follow this project's Code of Conduct and Contributing Guidelines
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue does not identify source files, tests, or entry points. Start by locating the current Epetra, AztecOO, Ifpack, and ML integration, then map their uses to Tpetra, Belos, Ifpack2, and MueLu with Teuchos and Kokkos support; done means the solver builds and its existing functionality remains covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- hpc
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100