You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
author = {Charles A. Taylor and Kersten Petersen and Nan Xiao and Matthew Sinclair and Ying Bai and Sabrina R. Lynch and Adam UpdePac and Michiel Schaap},
184
187
keywords = {Patient-specific modeling, Blood flow, Deep learning, Coronary artery},
@@ -200,7 +203,7 @@ @article{Updegrove2017
200
203
201
204
@article{Lee2024,
202
205
author = {Lee, John D and Richter, Jakob and Pfaller, Martin R and Szafron, Jason M and Menon, Karthik and Zanoni, Andrea and Ma, Michael R and Feinstein, Jeffrey A and Kreutzer, Jacqueline and Marsden, Alison L and Schiavazzi, Daniele E},
203
-
doi = {https://doi.org/10.1002/cnm.3820},
206
+
doi = {10.1002/cnm.3820},
204
207
journal = {International Journal for Numerical Methods in Biomedical Engineering},
205
208
keywords = { neural network emulator, parameterization of complex interventional repairs,digital twin for interventional planning},
206
209
number = {5},
@@ -213,7 +216,7 @@ @article{Lee2024
213
216
214
217
@article{zanoni2024,
215
218
author = {Zanoni, Andrea and Geraci, Gianluca and Salvador, Matteo and Menon, Karthik and Marsden, Alison L and Schiavazzi, Daniele E},
216
-
doi = {https://doi.org/10.1016/j.cma.2024.117119},
219
+
doi = {10.1016/j.cma.2024.117119},
217
220
issn = {0045-7825},
218
221
journal = {Computer Methods in Applied Mechanics and Engineering},
219
222
keywords = { Active subspaces, Autoencoders, Monte Carlo estimators, Normalizing flows, Uncertainty quantification,Multifidelity},
author = {Pasquale Claudio Africa and Ivan Fumagalli and Michele Bucelli and Alberto Zingaro and Marco Fedele and Luca Dede' and Alfio Quarteroni},
313
+
}
314
+
315
+
@article{crimson2021,
316
+
doi = {10.1371/journal.pcbi.1008881},
317
+
author = {Arthurs, Christopher J. AND Khlebnikov, Rostislav AND Melville, Alex AND Marčan, Marija AND Gomez, Alberto AND Dillon-Murphy, Desmond AND Cuomo, Federica AND Silva Vieira, Miguel AND Schollenberger, Jonas AND Lynch, Sabrina R. AND Tossas-Betancourt, Christopher AND Iyer, Kritika AND Hopper, Sara AND Livingston, Elizabeth AND Youssefi, Pouya AND Noorani, Alia AND Ben Ahmed, Sabrina AND Nauta, Foeke J. H. AND van Bakel, Theodorus M. J. AND Ahmed, Yunus AND van Bakel, Petrus A. J. AND Mynard, Jonathan AND Di Achille, Paolo AND Gharahi, Hamid AND Lau, Kevin D. AND Filonova, Vasilina AND Aguirre, Miquel AND Nama, Nitesh AND Xiao, Nan AND Baek, Seungik AND Garikipati, Krishna AND Sahni, Onkar AND Nordsletten, David AND Figueroa, C. Alberto},
318
+
journal = {PLOS Computational Biology},
319
+
publisher = {Public Library of Science},
320
+
title = {CRIMSON: An open-source software framework for cardiovascular integrated modelling and simulation},
@article{Hirschvogel2024, doi = {10.21105/joss.05744}, url = {https://doi.org/10.21105/joss.05744}, year = {2024}, publisher = {The Open Journal}, volume = {9}, number = {93}, pages = {5744}, author = {Marc Hirschvogel}, title = {Ambit – A FEniCS-based cardiovascular multi-physics solver}, journal = {Journal of Open Source Software} }
330
+
331
+
@article{Agdestein2018, doi = {10.21105/joss.01107}, url = {https://doi.org/10.21105/joss.01107}, year = {2018}, publisher = {The Open Journal}, volume = {3}, number = {32}, pages = {1107}, author = {Syver D. Agdestein and Kristian Valen-Sendstad and Alexandra K. Diem}, title = {Artery.FE: An implementation of the 1D blood flow equations in FEniCS}, journal = {Journal of Open Source Software} }
Copy file name to clipboardExpand all lines: paper/paper.md
+29-18Lines changed: 29 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,28 +11,32 @@ authors:
11
11
equal-contrib: true
12
12
affiliation: 1
13
13
- name: Jakob Richter
14
-
affiliation: 1
14
+
affiliation: 2
15
15
equal-contrib: true
16
16
- name: Martin R. Pfaller
17
-
affiliation: 1
17
+
affiliation: 3
18
18
equal-contrib: true
19
19
- name: Jonathan Pham
20
-
affiliation: 1
20
+
affiliation: 2
21
21
- name: Emilin M. Mathew
22
-
affiliation: 1
22
+
affiliation: 2
23
23
- name: Kaitlin E. Harold
24
-
affiliation: 1
24
+
affiliation: 2
25
25
- name: Nicholas C. Dorn
26
-
affiliation: 1
26
+
affiliation: 2
27
27
- name: Aekaansh Verma
28
-
affiliation: 1
28
+
affiliation: 2
29
29
- name: Alison L. Marsden
30
-
affiliation: 1
30
+
affiliation: 2
31
31
corresponding: true
32
32
affiliations:
33
-
- name: Stanford University, Stanford, CA, United States of America
33
+
- name: Georgia Institute of Technology, Atlanta, GA, United States of America
34
34
index: 1
35
-
date: July 2024
35
+
- name: Stanford University, Stanford, CA, United States of America
36
+
index: 2
37
+
- name: Yale University, New Haven, CT, United States of America
38
+
index: 3
39
+
date: March 2025
36
40
bibliography: paper.bib
37
41
---
38
42
@@ -46,8 +50,8 @@ As part of the [`SimVascular`](https://simvascular.github.io/) open-source proje
46
50
`svZeroDSolver` is written in C++ using a modular object-oriented framework.
47
51
Simply specifying a `.json` dictionary of lumped-parameter "blocks" -- such as blood vessels, junctions between blood vessels, and boundary conditions (along with their associated parameters) -- allows the code to automatically assemble and solve the governing equations corresponding to the user-specified vascular model.
48
52
In addition, the package includes Python and C++ interfaces to facilitate its use with other software packages.
49
-
For example, it can be integrated into Python-based optimization and uncertainty quantification applications [@zanoni2024;@Lee2024;@richter2024bayesian;@menon2024personalizeduncertainty].
50
-
It can also be interfaced with C++/Fortran software for high-fidelity cardiovascular flow simulations, where `svZeroDSolver` can conveniently provide physiological lumped-parameter boundary conditions [@menon2023predictors;@menon2024personalized].
53
+
For example, it can be integrated into Python-based optimization and uncertainty quantification applications [@zanoni2024;@Lee2024;@richter2024bayesian;@menon2024personalizeduncertainty].
54
+
It can also be interfaced with C++/Fortran software for high-fidelity cardiovascular flow simulations, where `svZeroDSolver` can conveniently provide physiological lumped-parameter boundary conditions [@menon2023predictors;@menon2024personalized].
51
55
`svZeroDSolver` includes an application, called `svZeroDCalibrator`, to automatically calibrate parameters of a given zero-dimensional model based independent hemodynamic measurements or high-fidelity simulations -- thus improving the accuracy of zero-dimensional models [@richter2024bayesian].
52
56
It also includes graphical interfaces to interactively create lumped-parameter models for simulations, as well as to visualize the simulated anatomy and hemodynamics.
53
57
@@ -57,20 +61,20 @@ Non-invasive quantification of patient-specific hemodynamics via computational s
57
61
Computational modeling is also a promising tool for non-invasive and personalized optimization of clinical treatments and surgery [@Marsden2014].
58
62
59
63
Previous work has used several techniques to model cardiovascular blood flow, all of which can be broadly categorized based on their level of fidelity.
60
-
High-fidelity models generally involve simulations of the full three-dimensional flow-field within anatomical regions of interest [@menon2024cardiovascular;@Updegrove2017].
64
+
High-fidelity models generally involve simulations of the full three-dimensional flow-field within anatomical regions of interest [@menon2024cardiovascular;@Updegrove2017].
61
65
While these are the most accurate and informative, they are computationally expensive (each simulation can take several hours or days on hundreds of CPU cores) and therefore not practical in typical clinical settings or for applications, such as optimization and uncertainty quantification, which often require thousands of model evaluations.
62
66
On the other end of the spectrum, lumped-parameter or zero-dimensional models provide information about bulk hemodynamics, such as flow rate and pressure, at specific anatomical regions of interest.
63
-
While these models are not spatially-resolved, they are valuable in applications which require near real-time quantification of bulk hemodynamics, as well as those that rely on thousands of repeated model evaluations [@zanoni2024;@Lee2024;@richter2024bayesian;@menon2024personalizeduncertainty].
64
-
They are also commonly used in conjunction with high-fidelity simulations where lumped-parameter models are used as physiological boundary conditions [@menon2023predictors;@menon2024personalized].
67
+
While these models are not spatially-resolved, they are valuable in applications which require near real-time quantification of bulk hemodynamics, as well as those that rely on thousands of repeated model evaluations [@zanoni2024;@Lee2024;@richter2024bayesian;@menon2024personalizeduncertainty].
68
+
They are also commonly used in conjunction with high-fidelity simulations where lumped-parameter models are used as physiological boundary conditions [@menon2023predictors;@menon2024personalized].
65
69
66
70
`svZeroDSolver`, which is a part of the `SimVascular` open-source project, is a new open-source software package that enables fast evaluation of zero-dimensional hemodynamics.
67
71
One major challenge in zero-dimensional modeling that `svZeroDSolver` addresses is that different clinical applications (and individual clinical cases within the same application) often require unique anatomical arrangements of blood vessels, heart valves, etc. Moreover, distinct anatomical configurations are governed by a distinct set of governing equations.
68
72
Therefore, it is common for users to implement application-specific solvers which simulate the equations governing a specific application or anatomical configuration.
69
73
In contrast, the modularity of `svZeroDSolver` allows users to easily create arbitrary anatomical configurations by arranging a library of available "blocks", following which the software automatically assembles the equations governing the user-specified configuration.
70
74
71
75
Another unique feature of `svZeroDSolver` is its ability to easily interface with other C++ and Python packages.
72
-
This has been used in previous work on uncertainty quantification [@zanoni2024;@Lee2024;@richter2024bayesian;menon2024personalizeduncertainty] as well as in multi-scale simulations coupling three-dimensional hemodynamics with zero-dimensional representations of downstream circulation [@menon2023predictors;@menon2024personalized].
73
-
The C++ interface has been coupled with the high-fidelity multi-physics solver [`svFSIplus`](https://github.com/SimVascular/svFSIplus), which is part of the widely used `SimVascular` open-source software project for cardiovascular biomechanics simulations [@Updegrove2017;@Zhu2022].
76
+
This has been used in previous work on uncertainty quantification [@zanoni2024;@Lee2024;@richter2024bayesian;@menon2024personalizeduncertainty] as well as in multi-scale simulations coupling three-dimensional hemodynamics with zero-dimensional representations of downstream circulation [@menon2023predictors;@menon2024personalized].
77
+
The C++ interface has been coupled with the high-fidelity multi-physics solver [`svFSIplus`](https://github.com/SimVascular/svFSIplus), which is part of the widely used `SimVascular` open-source software project for cardiovascular biomechanics simulations [@Updegrove2017;@Zhu2022].
74
78
`svZeroDSolver` has also been integrated into the graphical user interface of the `SimVascular` project.
75
79
This allows users to leverage the functionality in `SimVascular` to generate three-dimensional patient-specific anatomical models from medical images, and subsequently perform patient-specific zero-dimensional simulations of blood flow by automatically converting the three-dimensional anatomy into a zero-dimensional model [@pfaller22].
76
80
The automatic conversion of arbitrary patient-specific anatomies to zero-dimensional simulations is possible due to the modular nature of `svZeroDSolver`.
@@ -85,6 +89,13 @@ Together, these graphical interfaces make `svZeroDSolver` intuitive for a wide r
85
89
The functionality and accuracy of `svZeroDSolver` is assessed using continuous integration tests on GitHub, and has also been verified by comparing with high-fidelity three dimensional simulations [@pfaller22].
86
90
This combination of features makes `svZeroDSolver` uniquely applicable to a wide range of applications in cardiovascular biomechanics.
87
91
92
+
While there are other open-source projects that provide the functionality for cardiovascular flow modeling, and specifically zero-dimensional flow modeling, `svZeroDSolver` has several features that distinguish it from previous work.
93
+
For one, prior packages have primarily focused on multi-physics finite element modeling for cardiovascular biomechanics [@crimson2021; @Zhu2022; @AFRICA2024109039; @Hirschvogel2024].
94
+
While these projects allow the implementation of simple zero-dimensional models, usually as boundary conditions to three-dimensional models, the primary focus is on the modeling of full three-dimensional fluid and tissue mechanics.
95
+
There are also packages aimed at reduced-order modeling for cardiovascular flows [@Agdestein2018]. In particular, the `SimVascular` project includes `svOneDSolver` for the purpose of one-dimensional blood flow modeling.
96
+
In contrast to these packages, the purpose of `svZeroDSolver` is to provide a modular framework specifically for simulating zero-dimensional flows in a variety of simple and complex anatomies -- by leveraging the modular nature of the code.
97
+
The unique features listed above allow the use of `svZeroDSolver` both as a stand-along zero-dimensional flow solver for unique and patient-specific anatomies, as well as in conjunction with the aforementioned multi-physics solvers as boundary conditions, for parameters estimation and uncertainty quantification, or even as an instructional tool using its graphical interfaces.
98
+
88
99
{ width=80% }
89
100
90
101
# Software details
@@ -101,7 +112,7 @@ Details on the modular implementation of the blocks, along with their governing
101
112
We use the [Eigen package](https://gitlab.com/libeigen/eigen) to represent and solve these sparse linear systems [@eigenweb].
102
113
Mathematical details on this implementation are provided in the [`SparseSystem`](https://simvascular.github.io/svZeroDSolver/class_sparse_system.html#details) and [`Integrator`](https://simvascular.github.io/svZeroDSolver/class_integrator.html#details) classes in the documentation.
103
114
104
-
`svZeroDSolver` currently has implementations of different types of blood vessel blocks with non-linear resistors to model vascular stenoses, junctions between blood vessels, a heart valve block modeled using a hyperbolic tangent function, a cardiac chamber block modeled as a time-varying capacitor and inductor, and several boundary condition blocks including simple flow, pressure and resistors blocks, windkessel boundary conditions, coronary boundary conditions that include the intramyocardial pressure experienced by coronary arteries, as well as two-sided versions of windkessel and coronary boundary conditions that allow a user to build closed-loop circulation models [@Vignon-Clementel2006;@Kim2009;@kimcoronary;@Mirramezani2019;@menon2023predictors;@menon2024personalized].
115
+
`svZeroDSolver` currently has implementations of different types of blood vessel blocks with non-linear resistors to model vascular stenoses, junctions between blood vessels, a heart valve block modeled using a hyperbolic tangent function, a cardiac chamber block modeled as a time-varying capacitor and inductor, and several boundary condition blocks including simple flow, pressure and resistors blocks, windkessel boundary conditions, coronary boundary conditions that include the intramyocardial pressure experienced by coronary arteries, as well as two-sided versions of windkessel and coronary boundary conditions that allow a user to build closed-loop circulation models [@Vignon-Clementel2006;@Kim2009;@kimcoronary;@Mirramezani2019;@menon2023predictors;@menon2024personalized].
105
116
The input to `svZeroDSolver` is a `.json` file which specifies the simulation parameters (number of time steps, cardiac cycles, etc.), the types of blocks to be included in the specific model, the boundary conditions, and how the blocks are connected (typically using `junction` blocks).
106
117
Each of these blocks generally requires several parameters which can be specified using a steady value or a list of time-varying values.
107
118
The solver can either run simulations for a specified number of time steps and cardiac cycles, or until the difference in mean quantities between consecutive cardiac cycles is below a given threshold.
0 commit comments