Skip to content

Commit 35c2260

Browse files
menon-karthikmrp089ncdorn
authored
Update JOSS paper references and license (#163)
Co-authored-by: menon-karthik <[email protected]> Co-authored-by: Martin Pfaller <[email protected]> Co-authored-by: Nick Dorn <[email protected]>
1 parent 22dddca commit 35c2260

File tree

6 files changed

+112
-12
lines changed

6 files changed

+112
-12
lines changed

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2929
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3030

31-
cmake_minimum_required(VERSION 3.22)
31+
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
32+
cmake_minimum_required(VERSION 3.5)
3233
set(CMAKE_CXX_STANDARD 17)
3334
set(CMAKE_CXX_STANDARD_REQUIRED True)
3435

LICENSE.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
Copyright (c) Stanford University, The Regents of the University of California, and others.
22

3-
All Rights Reserved.
4-
5-
See Copyright-SimVascular.txt for additional details.
6-
73
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
84

95
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
106

117
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12-
13-
License type: MIT License

paper/paper.bib

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,3 +329,91 @@ @article{crimson2021
329329
@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} }
330330

331331
@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} }
332+
333+
@article{Diem-2017,
334+
author = {Diem, Alexandra K. and Bressloff, Neil W.},
335+
doi = {10.5334/jors.159},
336+
journal = {Journal of Open Research Software},
337+
keyword = {en_US},
338+
month = {Jun},
339+
title = {VaMpy: A Python Package to Solve 1D Blood Flow Problems},
340+
year = {2017}
341+
}
342+
343+
@article{REGAZZONI2021104641,
344+
title = {Accelerating the convergence to a limit cycle in 3D cardiac electromechanical simulations through a data-driven 0D emulator},
345+
journal = {Computers in Biology and Medicine},
346+
volume = {135},
347+
pages = {104641},
348+
year = {2021},
349+
issn = {0010-4825},
350+
doi = {https://doi.org/10.1016/j.compbiomed.2021.104641},
351+
url = {https://www.sciencedirect.com/science/article/pii/S0010482521004352},
352+
author = {F. Regazzoni and A. Quarteroni},
353+
keywords = {Mathematical modeling, Cardiac modeling, Cardiac electromechanics, Multiphysics models, Lumped-parameter models}
354+
}
355+
356+
@article{benemerito2024openbf,
357+
title={openBF: an open-source finite volume 1D blood flow solver},
358+
author={Benemerito, I and Melis, A and Wehenkel, Antoine and Marzo, A},
359+
journal={Physiological Measurement},
360+
volume={45},
361+
number={12},
362+
pages={125002},
363+
year={2024},
364+
publisher={IOP Publishing}
365+
}
366+
367+
@article{cellml,
368+
url = {https://doi.org/10.1515/jib-2020-0021},
369+
title = {CellML 2.0},
370+
author = {Michael Clerx and Michael T. Cooling and Jonathan Cooper and Alan Garny and Keri Moyle and David P. Nickerson and Poul M. F. Nielsen and Hugh Sorby},
371+
pages = {20200021},
372+
volume = {17},
373+
number = {2-3},
374+
journal = {Journal of Integrative Bioinformatics},
375+
doi = {doi:10.1515/jib-2020-0021},
376+
year = {2020}
377+
}
378+
379+
@inproceedings{alastruey2012arterial,
380+
title={Arterial pulse wave haemodynamics},
381+
author={Alastruey, Jordi and Parker, Kim H and Sherwin, Spencer J},
382+
booktitle={11th international conference on pressure surges},
383+
pages={401--443},
384+
year={2012},
385+
organization={Virtual PiE Led t/a BHR Group}
386+
}
387+
388+
@article{heldt2010cvsim,
389+
title={CVSim: an open-source cardiovascular simulator for teaching and research},
390+
author={Heldt, Thomas and Mukkamala, Ramakrishna and Moody, George B and Mark, Roger G},
391+
journal={The open pacing, electrophysiology \& therapy journal},
392+
volume={3},
393+
pages={45},
394+
year={2010}
395+
}
396+
397+
@article{HUTTARY2017104,
398+
title = {Simulation, identification and statistical variation in cardiovascular analysis (SISCA) – A software framework for multi-compartment lumped modeling},
399+
journal = {Computers in Biology and Medicine},
400+
volume = {87},
401+
pages = {104-123},
402+
year = {2017},
403+
issn = {0010-4825},
404+
doi = {https://doi.org/10.1016/j.compbiomed.2017.05.021},
405+
url = {https://www.sciencedirect.com/science/article/pii/S0010482517301439},
406+
author = {Rudolf Huttary and Leonid Goubergrits and Christof Schütte and Stefan Bernhard},
407+
keywords = {Windkessel elements, Lumped models, 0D modeling, Multi-compartment modeling, Cardiovascular simulation, Distributed parameter modeling, Clinical data set, Coarctation of aorta, Patient-specific models, Disease-specific models, Multiscale modeling}
408+
}
409+
410+
@article{rosalia2021object,
411+
title={Object-oriented lumped-parameter modeling of the cardiovascular system for physiological and pathophysiological conditions},
412+
author={Rosalia, Luca and Ozturk, Caglar and Van Story, David and Horvath, Markus A and Roche, Ellen T},
413+
journal={Advanced Theory and Simulations},
414+
volume={4},
415+
number={3},
416+
pages={2000216},
417+
year={2021},
418+
publisher={Wiley Online Library}
419+
}

paper/paper.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,24 @@ Together, these graphical interfaces make `svZeroDSolver` intuitive for a wide r
8989
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].
9090
This combination of features makes `svZeroDSolver` uniquely applicable to a wide range of applications in cardiovascular biomechanics.
9191

92+
# State of the field
93+
9294
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.
95+
In particular, prior packages have primarily focused on multi-physics finite element modeling for cardiovascular biomechanics [@crimson2021; @Zhu2022; @AFRICA2024109039; @Hirschvogel2024].
96+
Although 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.
97+
There are, however, packages aimed specifically at reduced-order modeling for cardiovascular flows.
98+
For example, the `SimVascular` project includes [`svOneDSolver`](https://github.com/SimVascular/svOneDSolver) for the purpose of one-dimensional blood flow modeling.
99+
Another popular package for one-dimensional blood flow simulations is `Nektar1D` [@alastruey2012arterial].
100+
Similarly, `Artery.FE` implements one-dimensional blood flow modeling using the FEniCS finite element framework [@Agdestein2018], the `VaMpy` toolkit includes a package for modeling one-dimensional blood flow using the Lax-Wendroff finite difference method [@Diem-2017], and `openBF` is a finite volume implementation of one-dimensional blood flow [@benemerito2024openbf].
101+
102+
In the zero-dimensional modeling context, `CRIMSON` [@crimson2021] and `lifex-cfd` [@AFRICA2024109039] include the ability to simulate simple zero-dimensional blood flow models, primarily as boundary conditions to three-dimensional simulations.
103+
However, their focus is on multi-physics simulations of cardiovascular biomechanics, therefore they are not stand-alone and modular zero-dimensional flow solvers.
104+
The `CellML` and `CVSim` packages include a limited set of stand-alone zero-dimensional flow models for specific anatomies/applications [@cellml; @heldt2010cvsim], but they do not provide the modular functionality to specify unique anatomical models.
105+
In addition, there have been other packages that use zero-dimensional modeling techniques with a focus on statistical analysis, cardiac electromechanics, or specific anatomical models [@HUTTARY2017104; @REGAZZONI2021104641; @rosalia2021object].
106+
However, these packages are either not focused on zero-dimensional modeling or use MATLAB implementations, which require software licenses and are not free to use.
107+
108+
In contrast to these existing packages, the purpose of `svZeroDSolver` is to provide an open-source framework specifically for simulating zero-dimensional flows in a variety of simple and complex anatomies that can be designed in a user-specific and application-specific manner -- by leveraging the modular nature of the code.
109+
The unique features listed above allow the use of `svZeroDSolver` both as a stand-alone 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.
98110

99111
![Various zero-dimensional "blocks" included in `svZeroDSolver` at the time of writing.\label{fig:blocks}](blocks.png){ width=80% }
100112

paper/paper.pdf

6.14 KB
Binary file not shown.

src/algebra/SparseSystem.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ void SparseSystem::update_jacobian(double time_coeff_ydot,
100100

101101
void SparseSystem::solve() {
102102
solver->factorize(jacobian);
103+
if (solver->info() != Eigen::Success) {
104+
throw std::runtime_error(
105+
"System is singular. Check your model (connections, boundary "
106+
"conditions, parameters).");
107+
}
103108
dydot.setZero();
104109
dydot += solver->solve(residual);
105110
}

0 commit comments

Comments
 (0)