Skip to content

Commit 25c1277

Browse files
committed
Update JOSS paper branch with first set of reviewers' comments (SimVascular#149)
Co-authored-by: menon-karthik <[email protected]>
1 parent 481b4f6 commit 25c1277

File tree

4 files changed

+80
-33
lines changed

4 files changed

+80
-33
lines changed

.github/workflows/draft-pdf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
# This should be the path to the paper within your repo.
2424
paper-path: paper/paper.md
2525
- name: Upload
26-
uses: actions/upload-artifact@v3
26+
uses: actions/upload-artifact@v4
2727
with:
2828
name: paper
2929
# This is the output path where Pandoc will write the compiled

paper/paper.bib

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ @article{pfaller2019importance
7979
volume={18},
8080
pages={503--529},
8181
year={2019},
82-
publisher={Springer}
82+
publisher={Springer},
83+
doi={10.1007/s10237-018-1098-4}
8384
}
8485

8586
@article{menon2023predictors,
@@ -99,7 +100,8 @@ @article{sankaran2012patient
99100
volume={40},
100101
pages={2228--2242},
101102
year={2012},
102-
publisher={Springer}
103+
publisher={Springer},
104+
doi={10.1007/s10439-012-0579-3}
103105
}
104106

105107
@article{kerckhoffs2007coupling,
@@ -109,7 +111,8 @@ @article{kerckhoffs2007coupling
109111
volume={35},
110112
pages={1--18},
111113
year={2007},
112-
publisher={Springer}
114+
publisher={Springer},
115+
doi={10.1007/s10439-006-9212-7}
113116
}
114117

115118
@article{menon2024cardiovascular,
@@ -178,7 +181,7 @@ @article{TAYLOR2023
178181
year = {2023},
179182
note = {A Special Issue in Honor of the Lifetime Achievements of T. J. R. Hughes},
180183
issn = {0045-7825},
181-
doi = {https://doi.org/10.1016/j.cma.2023.116414},
184+
doi = {10.1016/j.cma.2023.116414},
182185
url = {https://www.sciencedirect.com/science/article/pii/S0045782523005388},
183186
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},
184187
keywords = {Patient-specific modeling, Blood flow, Deep learning, Coronary artery},
@@ -200,7 +203,7 @@ @article{Updegrove2017
200203

201204
@article{Lee2024,
202205
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},
204207
journal = {International Journal for Numerical Methods in Biomedical Engineering},
205208
keywords = { neural network emulator, parameterization of complex interventional repairs,digital twin for interventional planning},
206209
number = {5},
@@ -213,7 +216,7 @@ @article{Lee2024
213216

214217
@article{zanoni2024,
215218
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},
217220
issn = {0045-7825},
218221
journal = {Computer Methods in Applied Mechanics and Engineering},
219222
keywords = { Active subspaces, Autoencoders, Monte Carlo estimators, Normalizing flows, Uncertainty quantification,Multifidelity},
@@ -245,18 +248,21 @@ @incollection{PFALLER2024449
245248
year = {2024},
246249
series = {Biomechanics of Living Organs},
247250
isbn = {978-0-323-95484-6},
248-
doi = {https://doi.org/10.1016/B978-0-323-95484-6.00016-6},
251+
doi = {10.1016/B978-0-323-95484-6.00016-6},
249252
url = {https://www.sciencedirect.com/science/article/pii/B9780323954846000166},
250-
author = {Martin R. Pfaller and Luca Pegolotti and Jonathan Pham and Natalia L. Rubio and Alison L. Marsden},
253+
author = {Martin R. Pfaller and Luca Pegolotti and Jonathan Pham and Natalia L. Rubio and Alison L. Marsden}
251254
}
252255

253256
@article{rubio2024,
254-
title={Hybrid Physics-Based and Data-Driven Modeling of Vascular Bifurcation Pressure Differences},
255-
author={Natalia L. Rubio and Luca Pegolotti and Martin R. Pfaller and Eric F. Darve and Alison L. Marsden},
256-
year={2024},
257-
volume={2402.15651},
258-
journal={arXiv},
259-
url={https://arxiv.org/abs/2402.15651},
257+
title = {Hybrid physics-based and data-driven modeling of vascular bifurcation pressure differences},
258+
journal = {Computers in Biology and Medicine},
259+
volume = {184},
260+
pages = {109420},
261+
year = {2025},
262+
issn = {0010-4825},
263+
doi = {10.1016/j.compbiomed.2024.109420},
264+
url = {https://www.sciencedirect.com/science/article/pii/S0010482524015051},
265+
author = {Natalia L. Rubio and Luca Pegolotti and Martin R. Pfaller and Eric F. Darve and Alison L. Marsden}
260266
}
261267

262268
@article{Vignon-Clementel2006,
@@ -293,3 +299,33 @@ @article{menon2024personalizeduncertainty
293299
journal={arXiv},
294300
url={https://arxiv.org/abs/2409.02247},
295301
}
302+
303+
@article{AFRICA2024109039,
304+
title = {lifex-cfd: An open-source computational fluid dynamics solver for cardiovascular applications},
305+
journal = {Computer Physics Communications},
306+
volume = {296},
307+
pages = {109039},
308+
year = {2024},
309+
issn = {0010-4655},
310+
doi = {10.1016/j.cpc.2023.109039},
311+
url = {https://www.sciencedirect.com/science/article/pii/S0010465523003843},
312+
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},
321+
year = {2021},
322+
month = {05},
323+
volume = {17},
324+
url = {https://doi.org/10.1371/journal.pcbi.1008881},
325+
pages = {1-21},
326+
number = {5},
327+
}
328+
329+
@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} }

paper/paper.md

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,32 @@ authors:
1111
equal-contrib: true
1212
affiliation: 1
1313
- name: Jakob Richter
14-
affiliation: 1
14+
affiliation: 2
1515
equal-contrib: true
1616
- name: Martin R. Pfaller
17-
affiliation: 1
17+
affiliation: 3
1818
equal-contrib: true
1919
- name: Jonathan Pham
20-
affiliation: 1
20+
affiliation: 2
2121
- name: Emilin M. Mathew
22-
affiliation: 1
22+
affiliation: 2
2323
- name: Kaitlin E. Harold
24-
affiliation: 1
24+
affiliation: 2
2525
- name: Nicholas C. Dorn
26-
affiliation: 1
26+
affiliation: 2
2727
- name: Aekaansh Verma
28-
affiliation: 1
28+
affiliation: 2
2929
- name: Alison L. Marsden
30-
affiliation: 1
30+
affiliation: 2
3131
corresponding: true
3232
affiliations:
33-
- name: Stanford University, Stanford, CA, United States of America
33+
- name: Georgia Institute of Technology, Atlanta, GA, United States of America
3434
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
3640
bibliography: paper.bib
3741
---
3842

@@ -46,8 +50,8 @@ As part of the [`SimVascular`](https://simvascular.github.io/) open-source proje
4650
`svZeroDSolver` is written in C++ using a modular object-oriented framework.
4751
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.
4852
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].
5155
`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].
5256
It also includes graphical interfaces to interactively create lumped-parameter models for simulations, as well as to visualize the simulated anatomy and hemodynamics.
5357

@@ -57,20 +61,20 @@ Non-invasive quantification of patient-specific hemodynamics via computational s
5761
Computational modeling is also a promising tool for non-invasive and personalized optimization of clinical treatments and surgery [@Marsden2014].
5862

5963
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].
6165
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.
6266
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].
6569

6670
`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.
6771
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.
6872
Therefore, it is common for users to implement application-specific solvers which simulate the equations governing a specific application or anatomical configuration.
6973
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.
7074

7175
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].
7478
`svZeroDSolver` has also been integrated into the graphical user interface of the `SimVascular` project.
7579
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].
7680
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
8589
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].
8690
This combination of features makes `svZeroDSolver` uniquely applicable to a wide range of applications in cardiovascular biomechanics.
8791

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+
8899
![Various zero-dimensional "blocks" included in `svZeroDSolver` at the time of writing.\label{fig:blocks}](blocks.png){ width=80% }
89100

90101
# Software details
@@ -101,7 +112,7 @@ Details on the modular implementation of the blocks, along with their governing
101112
We use the [Eigen package](https://gitlab.com/libeigen/eigen) to represent and solve these sparse linear systems [@eigenweb].
102113
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.
103114

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].
105116
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).
106117
Each of these blocks generally requires several parameters which can be specified using a steady value or a list of time-varying values.
107118
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.

paper/paper.pdf

8.46 KB
Binary file not shown.

0 commit comments

Comments
 (0)