lifex-cfd: an open-source computational fluid dynamics solver for cardiovascular applications

Pasquale Claudio Africa,Ivan Fumagalli,Michele Bucelli,Alberto Zingaro,Marco Fedele,Luca Dede',Alfio Quarteroni
2023-11-20
Abstract:Computational fluid dynamics (CFD) is an important tool for the simulation of the cardiovascular function and dysfunction. Due to the complexity of the anatomy, the transitional regime of blood flow in the heart, and the strong mutual influence between the flow and the physical processes involved in the heart function, the development of accurate and efficient CFD solvers for cardiovascular flows is still a challenging task. In this paper we present lifex-cfd, an open-source CFD solver for cardiovascular simulations based on the lifex finite element library, written in modern C++ and exploiting distributed memory parallelism. We model blood flow in both physiological and pathological conditions via the incompressible Navier-Stokes equations, accounting for moving cardiac valves, moving domains, and transition-to-turbulence regimes. In this paper, we provide an overview of the underlying mathematical formulation, numerical discretization, implementation details and examples on how to use lifex-cfd. We verify the code through rigorous convergence analyses, and we show its almost ideal parallel speedup. We demonstrate the accuracy and reliability of the numerical methods implemented through a series of idealized and patient-specific vascular and cardiac simulations, in different physiological flow regimes. The lifex-cfd source code is available under the LGPLv3 license, to ensure its accessibility and transparency to the scientific community, and to facilitate collaboration and further developments.
Fluid Dynamics,Mathematical Software,Numerical Analysis
What problem does this paper attempt to address?
The paper aims to address the problem of computational fluid dynamics (CFD) simulation of blood flow in the cardiovascular system. Specifically, the paper introduces `lifex-cfd`, an open-source CFD solver specifically designed for cardiovascular applications. This solver is built on the `lifex` finite element library, implemented using modern C++ language, and supports distributed memory parallelization. The paper points out that despite significant progress in computational modeling of the cardiovascular system, developing accurate and efficient CFD solvers remains challenging. This is mainly due to the complex anatomical structure of the cardiovascular system, the transitional state of blood flow, and the strong interaction between blood flow and heart function. Additionally, high-precision simulations require high-performance computing resources to capture the dynamic changes of thin structures (such as valves) and small turbulent scales. `lifex-cfd` addresses these issues through the following features: 1. **Mathematical Models and Numerical Methods**: Uses the incompressible Navier-Stokes equations to describe blood flow under physiological and pathological conditions, supporting moving heart valves, moving domains, and transitions to turbulence. 2. **User-Friendliness**: Provides an easy-to-use interface suitable for biomedical researchers without a deep background in computational fluid dynamics. 3. **Flexibility**: Supports arbitrary finite element types (provided by deal.II), can import hexahedral or tetrahedral meshes, and supports multiple linear algebra backends (Trilinos and PETSc). 4. **Parallel Performance**: Achieves efficient large-scale parallel computing through MPI. 5. **Integration with Other Modules**: Can seamlessly integrate with other heart function solvers based on `lifex`, including electrophysiology, mechanics, fluid-structure interaction, etc. In summary, `lifex-cfd` is a comprehensive and efficient tool designed to address complex fluid dynamics problems in the cardiovascular system, particularly excelling in handling moving geometries and immersed surfaces such as heart valves.