Patient-specific simulation plays an important role in cardiovascular disease research, diagnosis, surgical planning and medical device design, as well as education in cardiovascular biomechanics. simvascular is an open-source software package encompassing an entire cardiovascular modeling and simulation pipeline from image segmentation, three-dimensional (3D) solid modeling, and mesh generation, to patient-specific simulation and analysis. SimVascular is widely used for cardiovascular basic science and clinical research as well as education, following increased adoption by users and development of a GATEWAY web portal to facilitate educational access. Initial efforts of the project focused on replacing commercial packages with open-source alternatives and adding increased functionality for multiscale modeling, fluid–structure interaction (FSI), and solid modeling operations. In this paper, we introduce a major SimVascular (SV) release that includes a new graphical user interface (GUI) designed to improve user experience. Additional improvements include enhanced data/project management, interactive tools to facilitate user interaction, new boundary condition (BC) functionality, plug-in mechanism to increase modularity, a new 3D segmentation tool, and new computer-aided design (CAD)-based solid modeling capabilities. Here, we focus on major changes to the software platform and outline features added in this new release. We also briefly describe our recent experiences using SimVascular in the classroom for bioengineering education.
Introduction
Hemodynamics plays a critical role in the origin, progression, and treatment of cardiovascular disease. Relevant quantities such as blood pressure, velocity, wall shear stress, and vessel wall deformation are used to investigate the influence of mechanical stimuli in cardiovascular disease, and in personalized treatment planning [1–6]. Altered pressure and flow can lead to extensive remodeling of vascular and cardiac morphology and composition. These changes play a key role in the progression of numerous diseases including coronary artery disease, bypass graft failure, cardiomyopathy, pulmonary hypertension, aneurysm growth and rupture, and postoperative remodeling in congenital heart disease [7–12]. Mechanical forces and flow disruption resulting in endothelial injury, flow stagnation, and shear-related platelet activation can play a key role in thrombus formation, elevating the risk of stroke, heart attacks, and embolisms [13–15]. Early studies of hemodynamics played a key role in explaining the localization of atherosclerotic plaques to bifurcation regions, such as in the carotid sinus where flow separation occurs and wall shear stress is relatively low [16]. Since then, the advent of patient-specific image-based modeling together with advances in computational methods has enabled clinical and basic science studies in a wide range of cardiovascular diseases.
Advanced medical imaging techniques such as computed tomography [17], magnetic resonance imaging [18], ultrasonography [19], angiography, and elastography [20] can capture increasingly detailed anatomical structure, and in some cases, blood flow velocity and tissue mechanical properties. With these recent advances, there are increasing opportunities for personalized models to predict postoperative and treatment outcomes, disease progression, and stratify patient risk. Blood flow simulations using medical image-based anatomical models now offer a noninvasive technique to determine accurate flow velocity, wall shear stress, and other clinically relevant quantities [21–29] to augment medical imaging. In addition, they offer a means to quantify mechanical stimuli triggering mechanobiologic responses such as vessel wall remodeling and aneurysm initiation and progression [9,30]. Furthermore, one can efficiently perform multiple simulations while systematically varying geometric and physiologic parameters for surgical planning, medical device design, and optimization [31–37].
The first Food and Drug Administration approved cardiovascular simulation technology, FFRCT, was recently introduced by HeartFlow, Inc. (Redwood City, CA). FFRCT offers a noninvasive means to obtain a measure of fractional flow reserve (FFR), which is the clinical gold standard for evaluating the functional significance of coronary stenosis. Comparisons of FFRCT to measurements from cardiac catheterization have been favorable and clinical adoption is on the rise [38]. Reduced-order models and machine learning methods have also shown promise [39–42].
The SimVascular (SV) project originated from an in-house software framework and was publicly released by Charles Taylor's lab at Stanford in 2007 [43], forming the initial basis for HeartFlow's technology. Nevertheless, at the time it required three commercial components for modeling, meshing, and simulation, and the lack of subsequent development, maintenance and user support after the initial release deterred widespread user adoption. To overcome those obstacles, our team launched the SV revitalization project in 2013, and after implementing open source alternatives for all commercial components, SV was released as a fully open-source software package. In addition, expanded capabilities were added such as discrete modeling, fluid structure interaction (FSI) with variable wall properties, coupled boundary conditions (BCs) with closed-loop lumped parameter networks, cross-platform support, and a unified build system [44]. Related software packages offering alternatives for all or portions of the cardiovascular simulation pipeline include the Vascular Modeling Toolkit Lab (VMTKLab),2 and the Cardiovascular Integrated Modeling and Simulation (CRIMSON)3.
Since its initial release, SimVascular has contributed to numerous advances in fundamental disease research, surgical planning, and medical device design [30,45–55]. An accompanying publicly available data repository4 provides patient-specific image data, models, and simulation results of over 120 clinical cases from different regions of the vasculature, including cerebrovascular, coronary, aortofemoral, pulmonary, and congenital heart disease [33,56,57]. Over the past several years, there has been a sustained effort to overhaul SV and add additional key functionality. In this paper, we describe a new and overhauled software architecture and graphical user interface (GUI), data management system, and new features including three-dimensional (3D) segmentation, graphical assignment of simple boundary conditions, computer-aided design (CAD)-based solid modeling capabilities, and expanded documentation. We focus on changes to features and functionality, referring the reader to a prior overview paper for additional details on underlying methodology [44]. We also describe our recent experience using SV in the classroom for hands-on student projects, and GATEWAY resources to facilitate adoption of these tools for education.
Software Architecture
The re-engineered SV platform has a multilayered multiple-component architecture (Fig. 1) composed of three parts: main application, solvers, and optional modules. The main application is fully open source and leverages multiple existing open source packages. The licensed modules are nonessential, and provide legacy support for commercial meshing and solid modeling alternatives.

The multilayered multiple-component architecture of SV comprised of main application, solvers, and optional licensed modules. The main application consists of three layers: interaction layer, core modules, and external packages, supported on three major operating systems.
The main application has multiple layers and runs on all three major operating systems (Windows, Mac OS X, and Linux). Its architecture has two distinct layers for user interaction and data processing. The interaction layer is object-oriented and avoids unnecessary coupling with the data processing layer. The data processing layer is comprised of core modules and is mainly used for defining internal data types and data processing operations.
The interaction layer provides a GUI, developed using the open source package Qt.5 This layer handles the interaction between the user interface and core functions, enabled by the Medical Imaging Interaction Toolkit (MITK)6 and employs the Common Toolkit (CTK)7 plugin framework. With a consistent plugin interface, developers and users can create their own custom plugins. The interaction layer loads the SV and MITK plugins dynamically upon launch. The plugins contain tools for the entire modeling pipeline, including image visualization and processing, two-dimensional (2D)/3D segmentation, modeling, meshing, and simulation. Python scripting to access Qt-based functions is available through PythonQt.8
To interface between the GUI and data processing layer, custom classes have been developed for data visualization, input/output (IO), and user interaction. Specialized 2D/3D mappers are incorporated for various data types to enhance visualization in 2D and 3D views. Interactors use extensible markup language (XML)-based scripts to define and control user interaction with data through the GUI. By implementing data operation interfaces, data changes can now be tracked unlike in prior SV versions, enabling a new undo/redo feature to restore data to previous states. The data IOs provide the flexibility to read and write data of various types in multiple formats, such as XML, images, CAD models, and unstructured meshes. SV also supports importing/exporting data in legacy SV file formats to facilitate user migration to the latest version.
Multiple data types, including images, paths, segmentations, geometric models, unstructured meshes, and simulation results are involved in the cardiovascular modeling and simulation pipeline. Furthermore, a number of options and parameters are used for data creation and manipulation. To deal with data complexity, the core modules define corresponding data types to store different types of data and parameters using six main data classes: svPath, svContourGroup, svSegmentation3D, svModel, svMesh, and svSimulationJob (Fig. 2). The data structure design is critical for modularity and extensibility during development and deployment. The core modules use external open-source packages including: the Visualization Toolkit (VTK)9 and Vascular Modeling Toolkit (VMTK)10 for visualization and modeling, Insight Segmentation and Registration Toolkit (ITK)11 and Grassroots DICOM (GDCM)12 for image IO and processing, OpenCASCADE13 for CAD models, Tetrahedral Mesh Generator (TetGen)14 and Mmg (Mesh Modification and Generation)15 for surface and volume meshing.

Data types and their inheritance relationships in SV. The classes in white are used in open source modules, while the classes in gray are for licensed modules.
The SV solver uses the finite element method to solve the incompressible, Newtonian form of the Navier–Stokes equations, with FSI based on the coupled momentum method [58–61]. Detailed descriptions of the numerical methodology used in the solver can be found elsewhere [44,62,63]. The solver module includes three independent executable programs: svPre, svSolver, and svPost, which are called as external programs to prepare and run blood flow simulations and postprocess results for analysis. The solvers incorporate several open-source packages including Metis for mesh partition, OpenMPI/MPICH2 for parallel computing, and the SimVascular linear solver (svLS), which uses a bi-partition method and custom resistance-based preconditioner [64,65].
As mentioned previously, older versions of SV required multiple commercial libraries for core functionality. The SV licensed modules provide legacy support to optional commercial packages Parasolid (Siemens PLM Software, Plano, TX) and MeshSim (Simmetrix, Inc., Clifton Park, NY).
The SV source code is hosted in two public repositories for the front-end GUI16 and the solver,17 providing access for modification and contributions by other developers. Binary installer releases are available at SimTK,18 together with examples and clinical cases including medical images and data files for user training. Comprehensive documentation for users and developers is available at the website.19 Users can postquestions and receive technical support through an active user forum hosted by the website.20
Redesigned Graphical User Interface.
The new SV GUI provides a data manager, a multiple-view display window, and plugins for data visualization and operations, accessible from the tool bar (see Fig. 3). The data manager uses a data-oriented strategy to organize all the data for a simulation case in a tree-structured project. It creates data nodes for individual objects such as images, paths, contour groups, 3D segmentations, models, meshes, and simulation jobs. Data objects of the same type are placed in the same tree node. As the user manipulates data from the GUI, SV handles most underlying file operations without user intervention. All data for a project can optionally be stored in a directory without dependence on outside files, making the project portable. Upon opening a project, all data are automatically loaded (except the mesh data, which can be large) and listed in the data manager. Through the data manager, users can conduct operations, such as creating new data objects, renaming or removing objects, changing visibility, opacity and color, duplicating objects, and importing and exporting data. As the user works on a data object, SV activates the corresponding tool and updates its interface. This feature lends itself to a data-driven workflow.

The redesigned SV GUI, containing a data manager, a multiview display window, and multiple plugins for data processing. In this example, a plugin for path planning is activated, providing options for a user to create and modify a path.
Standard MITK tools have been incorporated, including a display window with three orthographic 2D views and one 3D view in a flexible layout, which facilitates data visualization and manipulation by users. 2D view planes can be in any arbitrary orientation, making it possible for the user to visualize desired parts of the vasculature. With the image navigator tool, users can visualize time-dependent image data. In addition, the GUI provides custom tools for modeling and simulation as described in Sec. 3. Implemented with Qt multithreading, multitasking is available so that users can launch a time-consuming operation in the background and continue to work on data.
Cardiovascular Modeling and Simulation Pipeline
Figure 4 displays the typical steps of the image-based modeling pipeline in SimVascular. The pipeline starts with image visualization, after which, paths along vessel centerlines are defined. The typical model creation method involves creating groups of 2D contours of the vessels' lumen at perpendicular cross sections, lofting a surface from the 2D contours for each vessel, and joining individual vessels together to form a complete solid model. In addition, methods to create a solid model using direct 3D segmentation or by importing an existing 3D geometry (e.g., from an STL file) have been added to the pipeline. From the model, an unstructured mesh is generated, initial and boundary conditions are defined, and a blood flow simulation is performed. Updates to the software for each of these steps in the pipeline are described in Secs. 3.1–3.6.

The SV pipeline encompasses the complete process for cardiovascular modeling and simulation, from image visualization, to anatomic model construction (including path planning and image segmentation) to meshing, BC assignment, blood flow simulations, and analysis
Image Visualization.
Medical image data are typically defined in a 3D structured grid with intensity values for individual voxels, and different organs or tissues within the image have varying intensity values. Incorporating MITK and ITK libraries, the new interface provides improved support for medical images such as magnetic resonance imaging and computed tomography scans. Images in different formats can be loaded, including VTK, MetaImage, raw, NRRD, NIFTI, and DICOM. Basic image processing tools, such as commonly used filters and arithmetic operations, are available. Additional options include image volume rendering, including central processing unit or graphics processing unit-based techniques and common transfer function presets.
Path Planning.
In the typical modeling pipeline (Fig. 4), the first step after image visualization is to create paths along the vessel centerlines. A corresponding data type (svPath, Fig. 2) is defined for paths. It uses a small number of control points to calculate an interpolating spline and resamples to a larger number of spline points (called path points) to describe the path. When a user works on a path, the Path Planning tool (Fig. 3) is activated, providing several options for the user to create and modify a path.
To create a new path for a vessel, the user can take advantage of the three 2D view windows simultaneously to locate center points for the vessel lumen and add them to the path as control points. There are five modes available for adding a control point to the path. In the new “smart” mode, SV calculates the distance and orientation of the new control point relative to existing control points and determines the correct insertion order along the path. However, in some cases, such as highly tortuous vessels, users may also decide the appropriate point ordering. Based on the control points, there are three ways to calculate path points, with different methods to resample path points from the spline: (1) constant spacing, such as the minimum image spacing, (2) user-specified values for the total number of path points, or (3) user-specified values for the number of path points between two adjacent control points.
After a path is created, the user can modify the path by manipulating the control points, moving and deleting them interactively in 2D/3D view windows, or applying Fourier smoothing with a user-defined subsampling interval. Users can reslice the image perpendicular to the current path, enabling them to check that the path remains in the center of the vessel. A quality path is important for subsequent 2D segmentation along the path.
Image Segmentation.
To create an anatomic model based on medical image data, the geometry of a region of interest is reconstructed through image segmentation. Extensive studies have been carried out in the field of medical image segmentation [66,67] and SimVascular exploits established techniques to conduct 2D and 3D image segmentation of the vasculature of interest.
2D Segmentation.
The data type svContourGroup is defined to store and manage all the contours for a vessel, with five data types defined for different contour types, including svContour, svContourCircle, svContourEllipse, svContourPolygon, svContourSplinePolygon (Fig. 2). When a user works on a contour group, the SV 2D Segmentation tool (Fig. 5) is activated and provides several methods and options to create and modify 2D contours and preview the lofted surface for a vessel. Users can now modify the corresponding path after a contour group has been created, offering increased editing flexibility compared to prior versions. This is done by automatically fetching the original path points of existing contours and inserting them into the modified path in the correct order, based on relative distance and orientation, to create a new temporary path for image reslicing.

SV provides several methods to create and modify contours, loft solid models of vessels, and interactively preview the model during construction as new segmentations are added
During 2D segmentation, the display changes automatically to three windows. The two left 2D-view reslice windows show the image intensity and magnitude of the gradient on a plane perpendicular to the vessel path. The right 3D-view window shows the path, the contour groups, and an image reslice probe that travels along the path. In either reslice window, a user can create a 2D contour using (1) automated segmentation based on standard level set and thresholding methods [44], (2) analytical methods to create a circle, ellipse, or spline polygon interactively, or (3) by manually drawing the outline of the vessel lumen. The new version enables the user to see the contour change interactively as the user varies the threshold value. Similar to a path, a contour has multiple control points available for the user to translate or scale as needed. All contours in the group are listed in the GUI with relevant information such as construction method, centroid, area, and perimeter. After creation, a contour can be converted to another type, Fourier smoothed, or copied to another location along the path.
During 2D segmentation, the user can now preview the lofted surface as additional contours are added along the path(s). The surface represents the vessel lumen and is updated automatically as the group or individual contours are modified. There are two methods for lofting the contours together, spline or nonuniform rational basis spline (NURBS) based interpolation, each with several tunable parameters. Batch segmentation using the level set or thresholding method is implemented, enabling the user to create a series of contours in along a path automatically.
3D Segmentation.
SimVascular now incorporates a new 3D segmentation tool based on the colliding fronts algorithms [68] originally developed for VMTK. Compared to 2D segmentation, 3D segmentation may be better suited to capture local features such as aneurysms and vessel junctions, and can be used to rapidly segment entire vessel branches.
where I is the image intensity, is the Euclidean norm, and is the arrival time function indicating the time taken to travel from an initial point to the location (x, y, z) in the speed field . The boundary, , is typically set to be a point and indicates the starting point of the front.
As specified in Eq. (1), the speed with which the front(s) propagate decreases with lower image intensity. As a result, when initialized inside the vessel lumen, in contrast-enhanced medical images, fronts will propagate slowly once they reach vessel boundaries. Additionally, the gradient of the arrival time, , will be aligned along the vessel centerline. Using this method, a single vessel can be segmented by initializing two fronts, T1 and T2, at the start and end points of a vessel, solving the Eikonal equation and selecting all points where . For multivessel models, multiple pairs of seed points can be placed interactively.
SimVascular provides a user interface to launch the colliding fronts algorithm, with which users can interactively position starting and ending seed points by manipulating axial, coronal, and sagittal planes in a 3D view. Additionally, lower and upper image intensity threshold bounds can be specified. The threshold option can improve segmentation in regions with low intensity contrast.
Figure 6 shows an example of colliding fronts segmentation in the SV GUI. In this example, the external iliac arteries are segmented simultaneously in an MR medical image volume. Figure 6(a) shows placement of the start and end seed points in the 3D view, noting that it is possible to segment multiple branches at once by placing multiple seed points. After placing the seed points, the 3D segmentation is generated and smoothed, producing the final model shown in Fig. 6(b). As illustrated, the colliding fronts segmentation follows the desired vessel.

3D segmentation of an MRI scan of the aorta and iliac arteries using the colliding fronts algorithm by (a) placement of colliding fronts seed points and (b) final smoothed model of the aorta and iliac arteries
Solid Modeling.
In SimVascular, models are generated by joining 2D and/or 3D segmentations of individual vessels [70], including vessel walls, inlets, and outlets. Two types of models are supported: discrete, which uses a triangulated surface to define a PolyData model, and analytic, which includes CAD models created in OpenCASCADE or Parasolid. The SV Modeling tool is used to create and modify models (Fig. 7). It provides a face list with relevant information where the user can also change face type, color, visibility, and opacity. As a user works on different models, the interface changes depending on model type, offering corresponding options for model manipulation. The capability to interactively assign appropriate face types can facilitate subsequent steps of meshing and prescribing boundary conditions. SimVascular can also import discrete or CAD models created by other software packages, such as vtkPolyData (.vtp), stereolithography (.stl), and boundary representation (.brep).

A PolyData model created by SV using 2D contour groups. Faces are automatically extracted with specific types (wall or cap). In the interface, different colors can be assigned to faces for easy recognition.
There are several options available to process or edit PolyData models. Face operations are face-specific manipulations, such as extracting faces from a model based on differences in cell normals, combining multiple faces to a single face, filling holes, remeshing faces using VMTK, and deleting faces. Global operations that act on the entire model include remeshing with Mmg, decimation, Laplacian smoothing, butterfly subdivision, windowed sync smoothing, and densification. Local operations act on user-selected regions, which could be faces, vessel junction regions, a region within a sphere, or cells on the surface mesh. The available operations for local regions are decimation, Laplacian smoothing, constrained smoothing (which avoids shrinkage compared to regular smoothing in junction regions), linear subdivision, and loop subdivision. Trimming operations provide a plane or box for the user to cut the model at an arbitrary location or specific position perpendicular to a path.
For analytic (CAD) models, blending operations are available to create smooth transitions between adjacent walls for vessel junctions. Walls are identified and paired for the user to specify the transition radius. Analytical models can be converted to PolyData models with a prescribed user-specified surface mesh size.
Improved B-Spline-Based Lofting.
where and are the basis functions in the u and v parametric directions, of the desired surface degree p and q, respectively. These functions are the B-spline polynomials, found for each fit point with a corresponding parametric coordinate (u, v), which vary between 0 and 1. These functions are evaluated at every fit point to give systems for the control points, and define a formula for the entire NURBS surface. The method also provides the flexibility to specify the degree, knot span type, and parametric span type of the result.
![Comparison of lofted surfaces between the various lofting methods: (a) PolyData model using a Kochanek–Bartels spline lofting, (b) PolyData model using the custom b-spline based lofting method, (c) OpenCASCADE model using the default lofting method in OpenCASCADE, and (d) OpenCASCADE model using the custom b-spline-based lofting method [44,71]](https://asmedc.silverchair-cdn.com/asmedc/content_public/journal/biomechanical/140/2/10.1115_1.4038751/16/m_bio_140_02_024501_f008.png?Expires=1687403646&Signature=PHkVF5~Hnagr6ZjyVzaUKCcjaS9lbCaJs0-Cr3LAu-7-rTlLJFtI35JEPWFex2yJQ2ys-gOU45eJvmdYzykkwHE~bzmJ8of93aRoTOZtcUAsgAKEDtr5RfscZw8bwRcneRbddpj~LSw8CRMnjsSERGTowt0izjFSRZYf~RVn0OdYlU5qdVfacuOLPQwKsI~N0n-UAZEu2J~2vcUr39g034Xpk3G5tIrMiOBE9Yg0bHOpP0c0UNMFatrEIRzNwisJSbF8x02AVQ138yxYj1oZ4sm0YuKCYfr-eGTCg7gaGlse3xvU~GQW-s-SfApdTUuhBrB2~Qr~KZCKlAsq3H7pRQ__&Key-Pair-Id=APKAIE5G5CRDK6RD3PGA)
Comparison of lofted surfaces between the various lofting methods: (a) PolyData model using a Kochanek–Bartels spline lofting, (b) PolyData model using the custom b-spline based lofting method, (c) OpenCASCADE model using the default lofting method in OpenCASCADE, and (d) OpenCASCADE model using the custom b-spline-based lofting method [44,71]
![Comparison of lofted surfaces between the various lofting methods: (a) PolyData model using a Kochanek–Bartels spline lofting, (b) PolyData model using the custom b-spline based lofting method, (c) OpenCASCADE model using the default lofting method in OpenCASCADE, and (d) OpenCASCADE model using the custom b-spline-based lofting method [44,71]](https://asmedc.silverchair-cdn.com/asmedc/content_public/journal/biomechanical/140/2/10.1115_1.4038751/16/m_bio_140_02_024501_f008.png?Expires=1687403646&Signature=PHkVF5~Hnagr6ZjyVzaUKCcjaS9lbCaJs0-Cr3LAu-7-rTlLJFtI35JEPWFex2yJQ2ys-gOU45eJvmdYzykkwHE~bzmJ8of93aRoTOZtcUAsgAKEDtr5RfscZw8bwRcneRbddpj~LSw8CRMnjsSERGTowt0izjFSRZYf~RVn0OdYlU5qdVfacuOLPQwKsI~N0n-UAZEu2J~2vcUr39g034Xpk3G5tIrMiOBE9Yg0bHOpP0c0UNMFatrEIRzNwisJSbF8x02AVQ138yxYj1oZ4sm0YuKCYfr-eGTCg7gaGlse3xvU~GQW-s-SfApdTUuhBrB2~Qr~KZCKlAsq3H7pRQ__&Key-Pair-Id=APKAIE5G5CRDK6RD3PGA)
Comparison of lofted surfaces between the various lofting methods: (a) PolyData model using a Kochanek–Bartels spline lofting, (b) PolyData model using the custom b-spline based lofting method, (c) OpenCASCADE model using the default lofting method in OpenCASCADE, and (d) OpenCASCADE model using the custom b-spline-based lofting method [44,71]
Meshing.
To numerically solve the Navier–Stokes equations for fluid flow, the anatomic model interior must be volumetrically meshed. For meshing, SimVascular generates unstructured tetrahedral elements using TetGen (or optionally MeshSim) in the meshing module. The meshing interface contains several sections to guide the user, including global meshing, advanced options, local size, regional refinement, and advanced flags. With these options, in addition to global meshing and boundary layer meshing, the user can interactively select specific faces or multiple spherical regions for local refinement. With TetGen meshing, Mmg can be used for fast global surface meshing without considering the types of individual model faces. In cases where the surface mesh is undesirable, VMTK is used for individual face remeshing to improve surface mesh quality. All the data for the generated mesh are saved, including the surface mesh, the volume mesh, and the user-defined options and parameters used in mesh creation. Thus, the user can reload a mesh and continue to modify parameters to create a revised mesh. Adaptive meshing is implemented for TegGen to change local mesh resolution using a posteriori error estimation based on blood flow speed (velocity magnitude) from simulation results [72]. Specifically, SV calculates the time-averaged flow and its second directional derivative at user-specified time steps to estimate the level of spatial change, and generates an adapted mesh capable of providing more accurate results with subsequent simulations.
Simulation.
Following generation of an unstructured mesh, svPre is called to create prerequisite data files for the flow solver. Blood flow simulations are performed using svSolver, and simulation results are converted to VTK files through svPost to calculate relevant hemodynamic quantities such as wall shear stress. The simulation interface is divided to six sections to guide the user through the required simulation procedures. Many parameters are preset with default values to minimize user specification.
Fluid density and viscosity, and initial flow pressure and velocity, are specified in basic parameters. The user must first set up boundary conditions for individual inlets and outlets of a model in inlet and outlet BCs. For an inlet, a prescribed velocity profile is applied, which can be plug, parabolic, or Womersley. For an outlet, three types of boundary conditions are available in the interface to represent the downstream vasculature: Resistance, Windkessel resistance-capacitance-resistance, and Coronary lumped parameter boundary conditions [61,73]. Based on vessel type, the user assigns a suitable BC type along with appropriate parameter values.
where Ci is the capacitance of the individual outlet, and Ctot represents the total capacitance of all the outlets.
Wall properties provides three methods to specify vessel wall type: rigid, deformable-constant, deformable-variable. For all types, no-penetration, no-slip boundary conditions are applied. For the Rigid type, there is no wall deformation. For the deformable-constant type, the vessel wall is modeled as a linear elastic material, and assigned constant thickness, elastic modulus, Poisson's ratio, and shear modulus. In this type, vessel walls are deformable and FSI is incorporated into the flow solver using the coupled momentum method [60]. Alternatively, the deformable-variable type requires the user to specify thickness or elastic modulus at specific locations or regions, often at vessel inlets or outlets. svPre uses these input values as Dirichlet boundary conditions to solve Laplace's equation, producing a smoothly varying spatial distribution of thickness and elastic modulus on the vessel wall.
Solver parameters lists all required and optional parameters for the flow solver, including total number of time steps, time-step length, tolerances for the solvers, and interval for writing out simulation data to files. In create files and run simulation, the user-specified mesh is used to create data files containing the mesh data, initial and boundary conditions, and material properties, for launching a simulation. Simulations can be run in serial or in parallel, and the interface shows simulation progress and residual values to inform the user if the simulation is converging. Furthermore, SV enables the user to stop an ongoing simulation any time before it completes, and to subsequently restart the simulation. Many users may also wish to transfer their simulation input files to a cluster machine to run parallel jobs in a high-performance computing (HPC) environment. Following completion, convert results is used to convert simulation results to VTP and VTU files at user-specified time steps, and calculate relevant hemodynamic quantities such as time averaged wall shear stress and oscillatory shear index on the walls, and pressures and flow rates at the inlets and outlets. The open source package ParaView21 can be used in conjunction with SV for data visualization and further analysis of simulation results.
SimVascular in the Classroom
SimVascular has been deployed for use in hands-on class projects in recent courses on computational modeling in the cardiovascular system at several institutions. Students were each given a set of medical image data, and asked to build an anatomic model, mesh the model, assign boundary conditions, run simulations, and analyze the results. Each student's image data was from the Vascular Model Repository, and corresponded to a different cardiovascular anatomic region and disease. Students reported (in oral presentations and written reports) on their chosen disease topic and its clinical relevance, methods they used for simulations, including mesh convergence and boundary condition choices, and analysis of relevant flow quantities. This provided students with hands-on, interactive experiences in a way that was accessible to students from a range of backgrounds from engineering to medicine. An educational survey-based study was conducted, with institutional review board approval, to assess progress on learning objectives [75], and results demonstrated significant gains from start to end of the course.
To increase access for students without local access to HPC resources, a web portal has been created as part of the Science GATEWAYS project22 to provide high performance computing resources to other institutions for research and educational purposes. The GATEWAY at the website23 is currently in use by several institutions to provide students access to precompiled versions of svSolver on XSEDE machines [76,77]. The GATEWAY enables students to create their anatomic models and meshes locally on a personal computer and then upload the files for simulation to an HPC environment and download the results for processing. Students can participate in user forums and follow documentation as well as written and video tutorials on the SimVascular website.
Conclusions
We have reported and summarized recent developments and improvements to the SimVascular open source project, which aims to provide a community resource for cardiovascular basic science and clinical research and bioengineering education. These developments include new data handling, interactive graphical user interface, and expanded functionality. As multiple data types are involved in the cardiovascular modeling and simulation pipeline, a data manager is now used to organize data into a project format and automatically handle file IO. This facilitates creation of complicated projects and storage of multiple pieces of corresponding data. The new graphical user interface, which is built with a modernized software architecture, now provides multiple “intelligent” tools spanning the entire cardiovascular modeling and simulation pipeline, with an interface that automatically updates as the user proceeds through the steps and corresponding data types. The interface enables users to directly and interactively manipulate data in new a 2D/3D-view windows format. The 3D segmentation tools have been improved to better complement prior 2D segmentation tools. With this tool, users can better capture the geometry of junctions and complex local anatomic features such as aneurysms. In addition, SimVascular has been used for hands-on learning in the classroom setting, and a web portal has been deployed to expand access to student users.
SimVascular is an actively maintained open source project, with additional enhancements and new features in preparation. For image segmentation, deep learning-based 2D segmentation has been explored with the goal to speed up the image-based anatomic modeling process and make it possible for large scale application of cardiovascular simulation on clinical studies [78,79]. These tools will be added to the GUI in future releases. For solid modeling, new algorithms, to convert a discrete model to a globally valid NURBS model (the CAD standard) through a polycube structure, are under development [80]. This will enable users to manipulate solid models more easily and facilitating shape optimization for treatment planning. An integrated one-dimensional solver will be released, enabling fast lower-order simulations and wave propagation studies. Automated tuning methods will be integrated for parameter estimation in lumped parameter networks to match clinical data. In the near future, we plan to release an arbitrary Lagrangian–Eulerian-based solver to handle large deformation, wall motions, and ventricular hemodynamics. Python access to SimVascular core functions will soon be supported, which will enable the user to write custom scripts to carry out custom or batch operations. This will facilitate use of SimVascular for optimization, uncertainty quantification, and studies with large patient cohorts.
Funding Data
Directorate for Computer and Information Science and Engineering (Grant Nos. 1339824 and 1663671).
National Institute of Biomedical Imaging and Bioengineering (Grant No. 1R01EB018302-01A1).