  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.
