|
1 | 1 | # 0D Solver |
2 | 2 |
|
3 | | -Zero-dimensional (0D) models are lightweight methods to simulate bulk hemodynamic quantities in the cardiovascular system. Unlike 3D and 1D models, 0D models are purely time-dependent; they are unable to simulate spatial patterns in the hemodynamics. 0D models primarily simulate bulk cardiovascular flow rates and pressures; however, they can simulate other hemodynamic quantities, such as wall shear stress [1] or volume, as well. Furthermore, 0D models are highly modular and compartmentalized, meaning different regions of the 0D models represent the hemodynamics in different parts of the cardiovascular anatomy being modeled. |
| 3 | +Zero-dimensional (0D) models are lightweight methods to simulate bulk hemodynamic quantities in the cardiovascular system. Unlike 3D and 1D models, 0D models are purely time-dependent; they are unable to simulate spatial patterns in the hemodynamics. 0D models primarily simulate bulk cardiovascular flow rates and pressures; however, they can simulate other hemodynamic quantities, such as wall shear stress or volume, as well. Furthermore, 0D models are highly modular and compartmentalized, meaning different regions of the 0D models represent the hemodynamics in different parts of the cardiovascular anatomy being modeled. |
4 | 4 |
|
5 | 5 | 0D models are analogous to electrical circuits. The flow rate simulated by 0D models represents electrical current, while the pressure represents voltage. Three primary building blocks of 0D models are resistors, capacitors, and inductors. Resistance captures the viscous effects of blood flow, capacitance represents the compliance and distensibility of the vessel wall, and inductance represents the inertia of the blood flow. Different combinations of these building blocks, as well as others, can be formed to reflect the hemodynamics and physiology of different cardiovascular anatomies. |
6 | 6 |
|
| 7 | +svZeroDSolver is an application for performing 0D simulations of cardiovascular flows. Some noteworthy features of svZeroDSolver are: |
| 8 | +* It is completely modular. Users can create custom flow models by arranging blocks corresponding to blood vessels, junctions, different types of boundary conditions, etc. |
| 9 | +* It is written in C++ to enable high-performance applications. |
| 10 | +* svZeroDSolver offers both a Python API and a C++ shared library to interface with other Python or C++-based applications. This allows it to be used in a fully coupled manner with other multi-physics solvers, and for parameter estimation, uncertainty quantification, etc. |
| 11 | +* The svZeroDCalibrator application, which is included in svZeroDSolver, optimizes 0D blood vessel parameters to recapitulate given time-varying flow and pressure measurements (for example, from a high-fidelity 3D simulation). This allows users to build accurate 0D models that reflect observed hemodynamics. |
| 12 | +* The svZeroDVisualization application enables users to visualize their 0D network and |
| 13 | +interactively select nodes to view simulation results. |
| 14 | +* The svZeroDGUI application allows users to generate input files for svZeroDSolver by |
| 15 | +drawing the network on an easy-to-use GUI. This provides an alternative to manually |
| 16 | +creating files and is useful for users without access to a 3D model. |
| 17 | + |
| 18 | +The main categories of blocks implemented in svZeroDSolver are: |
| 19 | +- Blood vessels |
| 20 | +- Junctions |
| 21 | +- Boundary conditions |
| 22 | +- Heart chambers |
| 23 | +- Heart valves |
| 24 | + |
| 25 | +#### Installation |
| 26 | + |
| 27 | +svZeroDSolver can be installed in two different ways. For using the Python |
| 28 | +API, an installation via pip is recommended. |
| 29 | + |
| 30 | +##### Using pip |
| 31 | + |
| 32 | +For a pip installation, simply run the following command |
| 33 | +(cloning of the repository is not required): |
| 34 | + |
| 35 | +```bash |
| 36 | +pip install git+https://github.com/simvascular/svZeroDSolver.git |
| 37 | +``` |
| 38 | + |
| 39 | +##### Using CMake |
| 40 | + |
| 41 | +If you want to build svZeroDSolver manually from source, clone the repository |
| 42 | +and run the following commands from the top directory of the project: |
| 43 | + |
| 44 | +```bash |
| 45 | +mkdir Release |
| 46 | +cd Release |
| 47 | +cmake -DCMAKE_BUILD_TYPE=Release .. |
| 48 | +cmake --build . |
| 49 | +``` |
| 50 | + |
| 51 | + |
| 52 | +@remark <details> |
| 53 | + <summary>**Building on Sherlock**</summary> |
| 54 | + |
| 55 | +```bash |
| 56 | +module load cmake/3.23.1 gcc/12.1.0 binutils/2.38 |
| 57 | +mkdir Release |
| 58 | +cd Release |
| 59 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=/share/software/user/open/gcc/12.1.0/bin/g++ -DCMAKE_C_COMPILER=/share/software/user/open/gcc/12.1.0/bin/gcc .. |
| 60 | +cmake --build . |
| 61 | +``` |
| 62 | + |
| 63 | +</details> |
| 64 | + |
7 | 65 | #### 0D Solver Theory |
8 | 66 | We highlight here the theory behind the 0D solver. For equations and implementation details, we refer to the [documentation](https://simvascular.github.io/svZeroDSolver/index.html) throught this guide. |
9 | 67 |
|
|
0 commit comments