Skip to content

Commit 37c1a9b

Browse files
Update paper.md: minor English edits for the JOSS publication (#173)
1 parent 51dd04a commit 37c1a9b

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

paper/paper.md

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ affiliations:
3838
index: 3
3939
date: March 2025
4040
bibliography: paper.bib
41+
4142
---
4243

4344
# Summary
@@ -52,7 +53,7 @@ Simply specifying a `.json` dictionary of lumped-parameter "blocks" -- such as b
5253
In addition, the package includes Python and C++ interfaces to facilitate its use with other software packages.
5354
For example, it can be integrated into Python-based optimization and uncertainty quantification applications [@zanoni2024; @Lee2024; @richter2024bayesian; @menon2024personalizeduncertainty].
5455
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].
55-
`svZeroDSolver` includes an application, called `svZeroDCalibrator`, to automatically calibrate parameters of a given zero-dimensional model based on independent hemodynamic measurements or high-fidelity simulations -- thus improving the accuracy of zero-dimensional models [@richter2024bayesian].
56+
`svZeroDSolver` includes an application called `svZeroDCalibrator` to automatically calibrate parameters of a given zero-dimensional model based on independent hemodynamic measurements or high-fidelity simulations -- thus improving the accuracy of zero-dimensional models [@richter2024bayesian].
5657
It also includes graphical interfaces to interactively create lumped-parameter models for simulations, as well as to visualize the simulated anatomy and hemodynamics.
5758

5859
# Statement of need
@@ -61,10 +62,10 @@ Non-invasive quantification of patient-specific hemodynamics via computational s
6162
Computational modeling is also a promising tool for non-invasive and personalized optimization of clinical treatments and surgery [@Marsden2014].
6263

6364
Previous work has used several techniques to model cardiovascular blood flow, all of which can be broadly categorized based on their level of fidelity.
64-
High-fidelity models generally involve simulations of the full three-dimensional flow-field within anatomical regions of interest [@menon2024cardiovascular; @Updegrove2017].
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.
65+
High-fidelity models generally involve simulations of the full three-dimensional flow field within anatomical regions of interest [@menon2024cardiovascular; @Updegrove2017].
66+
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.
6667
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.
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+
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].
6869
They are also commonly used in conjunction with high-fidelity simulations where lumped-parameter models are used as physiological boundary conditions [@menon2023predictors; @menon2024personalized].
6970

7071
`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.
@@ -76,15 +77,15 @@ Another unique feature of `svZeroDSolver` is its ability to easily interface wit
7677
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].
7778
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].
7879
`svZeroDSolver` has also been integrated into the graphical user interface of the `SimVascular` project.
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].
80+
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].
8081
The automatic conversion of arbitrary patient-specific anatomies to zero-dimensional simulations is possible due to the modular nature of `svZeroDSolver`.
8182
Using this pipeline, previous work has demonstrated accelerated convergence of three-dimensional simulations when using corresponding zero-dimensional simulation results as initial conditions [@pfaller21].
8283

8384
In addition, `svZeroDSolver` includes several applications to augment its functionality.
8485
The `svZeroDCalibrator` application improves the accuracy of zero-dimensional models by optimizing the parameters of blood vessels to recapitulate observed hemodynamics from measurements or high-fidelity simulations.
8586
This allows users to build more accurate zero-dimensional models than those typically based purely on the anatomy of the vascular region of interest [@richter2024bayesian].
86-
The `svZeroDGUI` application is a web-based graphical interface that allows users to create zero-dimensional simulations by interactively dragging-and-dropping individual blood vessels, heart chambers, boundary conditions, connections between these blocks, etc.
87-
Another graphical application, `svZeroDVisualization`, is an interface to visualize the lumped-paramater structure of given anatomical models as well as the simulated hemodynamics within each block.
87+
The `svZeroDGUI` application is a web-based graphical interface that allows users to create zero-dimensional simulations by interactively dragging and dropping individual blood vessels, heart chambers, boundary conditions, connections between these blocks, etc.
88+
Another graphical application, `svZeroDVisualization`, is an interface to visualize the lumped-parameter structure of given anatomical models as well as the simulated hemodynamics within each block.
8889
Together, these graphical interfaces make `svZeroDSolver` intuitive for a wide range of users, potentially expanding its use from research to instructional and clinical contexts.
8990
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].
9091
This combination of features makes `svZeroDSolver` uniquely applicable to a wide range of applications in cardiovascular biomechanics.
@@ -103,7 +104,7 @@ Similarly, `Artery.FE` implements one-dimensional blood flow modeling using the
103104
In the zero-dimensional modeling context, `CRIMSON` [@crimson2021], `lifex-cfd` [@AFRICA2024109039], and `Ambit` [@Hirschvogel2024] include the ability to simulate simple zero-dimensional blood flow models.
104105
However, as mentioned above, their focus is on multi-physics simulations of cardiovascular biomechanics.
105106
Therefore, they support a limited set of stand-alone zero-dimensional models and do not feature the modularity that enables the creation of a large variety of zero-dimensional models as in `svZeroDSolver`.
106-
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.
107+
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.
107108
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].
108109
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.
109110

@@ -115,34 +116,34 @@ The unique features listed above allow the use of `svZeroDSolver` both as a stan
115116
# Software details
116117

117118
`svZeroDSolver` relies on a collection of "blocks" to set up the governing equations for a given anatomical configuration.
118-
Each block is inherited from a `block` class, as illustrated in \autoref{fig:blocks}, and is governed by a "local" set of equations with associated degrees-of-freedom.
119-
The solver parses through an input configuration `.json` file, which lists the blocks, their parameters, and the blocks' connectivity, and then automatically assembles the local equations and degrees-of-freedom for each block into a global system of equations.
119+
Each block is inherited from a `block` class, as illustrated in \autoref{fig:blocks}, and is governed by a "local" set of equations with associated degrees of freedom.
120+
The solver parses through an input configuration `.json` file, which lists the blocks, their parameters, and the blocks' connectivity, and then automatically assembles the local equations and degrees of freedom for each block into a global system of equations.
120121
The governing equations and circuit representation for each block are available in the documentation. For example, see the [documentation for a blood vessel block](https://simvascular.github.io/svZeroDSolver/class_blood_vessel.html#details).
121122

122-
The zero-dimensional simulations performed by `svZeroDSolver` are governed by non-linear differential-algebraic equations.
123-
We integrate these equations in time using the implicit generalized-alpha scheme [@JANSEN2000305], with Newton-Raphson iterations to solve the linearized system.
123+
The zero-dimensional simulations performed by `svZeroDSolver` are governed by non-linear differential algebraic equations.
124+
We integrate these equations in time using the implicit generalized-alpha scheme [@JANSEN2000305] with Newton-Raphson iterations to solve the linearized system.
124125
Under the hood, these linearized governing equations for each block are implemented as local contributions to a system of linear (matrix) equations, which are then assembled into a global linear system based on the user-specified configuration.
125126
Details on the modular implementation of the blocks, along with their governing equations, are provided in the documentation's [Developer Guide](https://simvascular.github.io/svZeroDSolver/developer_guide.html).
126127
We use the [Eigen package](https://gitlab.com/libeigen/eigen) to represent and solve these sparse linear systems [@eigenweb].
127128
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.
128129

129130
`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].
130131
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).
131-
Each of these blocks generally requires several parameters which can be specified using a steady value or a list of time-varying values.
132-
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.
132+
Each of these blocks generally requires several parameters, which can be specified using a steady value or a list of time-varying values.
133+
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.
133134

134135
The [documentation for `svZeroDSolver`](https://simvascular.github.io/svZeroDSolver/) is automatically built on GitHub using [Doxygen](https://www.doxygen.nl/).
135136
It includes instructions for installation, user guides for `svZeroDSolver` and its various applications, as well as mathematical and graphical descriptions of each zero-dimensional block that is implemented in the solver.
136137
Examples of configuration files to run `svZeroDSolver` simulations using the various available blocks are in `svZeroDSolver/tests/cases`.
137138
The repository also includes examples demonstrating the simple API for interfacing between `svZeroDSolver` and external C++ software packages in `svZeroDSolver/tests/test_interface`.
138-
Details on creating zero-dimensional simulations from three-dimensional models using the `SimVascular` graphical interface are available on the [SimVascular documentation](https://simvascular.github.io/documentation/rom_simulation.html).
139+
Details on creating zero-dimensional simulations from three-dimensional models using the `SimVascular` graphical interface are available in the [SimVascular documentation](https://simvascular.github.io/documentation/rom_simulation.html).
139140

140141
Future development plans include functionality to specify time-varying block parameters as mathematical expressions using the [exprtk package](https://github.com/ArashPartow/exprtk).
141142
We are also expanding the available blocks to more accurately model hemodynamics, such as by using data-driven models for pressure losses at arbitrarily shaped vascular junctions [@rubio2024].
142143
In addition, we plan to extend the `svZeroDGUI` application to interactively create custom zero-dimensional boundary conditions for three-dimensional simulations.
143144
The development team actively implements new features, blocks and test cases to build on the capabilities of svZeroDSolver and ensure its accuracy and speed.
144145

145-
# Acknowledgments
146+
# Acknowledgements
146147

147148
This work was supported by National Science Foundation grants 1663671 and 2310909, by the National Heart, Lung, and Blood Institute of the National Institutes of Health under Award Numbers R01HL141712 and K99HL161313, and the Stanford Maternal and Child Health Institute.
148149

0 commit comments

Comments
 (0)